科学玩推特(2):用户分析

科学玩推特(1):自动清理 foers 脚本 一文中有提到,脚本帮我清了大概七千多用户。因为我的过失,最后只有4390个用户的信息被存了下来。有了这4390个用户的ID就好办啦(?)——用API去查了一下他们的信息(公开可查的 fields 见这里),其中让我感觉值得一查的领域也不多,最后就只留下了七项指标:用户ID,注册时间,蛋头(是/否),界面语言,fo数,foers数,和推数。用 Python 抓完后去掉了重复的记录,其中还有8个用户被禁号了(感想:我这是白忙活了吗),最后弄出来了一个干净的、可供进一步分析的 csv 文档。(果然最麻烦的都是 data collections and cleaning)导入R的时候有冲动想弄个模型来分析一下的,但后来发现这几个指标彼此之间没什么相关性(除非加上正常活跃推友的数据)于是只能作罢(可能未来还真的可以这样做诶)。

温习一下脚本强制清 fo 的四种条件:

  1. 蛋头,followings 显著多于 foers (差距达到100以上)
  2. 从未发过推的蛋头
  3. 没有在 fo 的加锁账户,最后一次发推是在 2012-8-16 以前
  4. 发推少于 10 条的用户,最后一次发推是在 2013-1-1 以前

导入数据后先大致感受一下统计分布(其实我每次都不会认真看的(泥垢:

summary_dim.PNG

恩所以这个数据包里有4382条记录,七个指标(诚如我开头说的那样)。R自动的把 User_id 读取成了数字,但其实一串串没啥意义的也就是字符串所以后面我压根没管。在这四千个被我强制 unfo 我的用户里可以看到最早注册的是在07年4月,最晚的可以追溯到这个月8号(likely 小粉红)。蛋头和非蛋头的比例是一半一半(程序默认会强制非蛋头0推的用户 unfo 我),界面语言这个很有意思……我能想象到大部分 fo 我的都是中文用户,所以界面是中或英文我都不奇怪。后面会有具体数字统计的恩(其实我也不知道为什么我关心这个)。最下面三行后面有具体分析,但我想吐槽的是程序居然强制令一个发了一万多条推的人 unfo 我。。。这人一定是太不活跃了。。。

题外话:点这查看那位 fo 了 4790 人的用户;这只有三千多个 foers;这位发了一万多条推(其实我们是认识的。。。但是这枫叶国孩子再不上推了就莫名被B了。。。)

继续用 R 的 boxplot() 分析,发现:

5.79644% (254) 的用户 fo 了 261 人以上;

12.73391% (558) 的用户有 8 个或以上的 foers;

11.25057% (493) 个用户至少发了一次推。

boxplot() 画出来的图惨不忍睹,但是找 outlier 还是蛮方便的。

接下来的一组图是对比去除 outlier 前后的数据分布。感想就是:data are so skewed!! 果然都分布得很不均匀不是理想的正态分布,要是真建模估计还得做一些处理(你真的够了

count_foercount_foer_o

好多都没人 fo,替他们心酸(?

count_friendcount_friend_o

fo 数这个真是很有趣,看大图看不太出那个小波谷,去掉 outlier 以后看图感觉还是有点正态分布的意思的(两个拼接在一起鸟ww

count_statuses_o

这个图展现的是发超过一次推以上的记录。果然大部分人还是沉默的观察者呀……

先前承诺过语言界面的统计的:

table_lang.PNG

首先我想问:为什么光一个中文就有 zh-cn, zh-CN, zh-Hans 的差别啊?zh-HK 和 zh-tw 我不惊讶,但是这分得这么细真的好么 = = 还有 en-gb 是啥。。。有6个用vi(我猜是越南语——对我其实完全可以查GTB的表的我就是懒嘛)的 fo 过我还真是神奇呢……

barplot() 再次确认了英语和中文是两壁江山(貌似是废话):

lang_table_p.png

有 48.81333% 的用户懒得改头像,所以确实是一半一半(图像化了也看不出什么区别……说来这样 entropy 应该挺高的吧)

dantou_count.png

correlation (中文是叫相关度么。。。)倒是也可以一查,但是这个数据包里只有三个是 quantitative 的,所以其实查了也没什么用(fo数和foer数相关度倒确实挺高的——你fo的人越多就会有越多人回fo你?)。。。

spm.png

另外大部分用户都是15年注册的啊,实在想不起来去年有什么大事能吸引会说中文的新用户翻墙上推。。。

create_acct.png

恩其实这篇文没什么干货啦,基本就是给我复习一下 R 的各种指令,熟悉一下可视化数据的方法(仍然不会用 tableau 的我 /_\),并且试图从中得到有意义的结论。感觉可用来分析的指标并不太多,但也有可能是因为我没有获得活跃推特用户的数据,加上就可以建模啦。我有空可能会这样做呢。

总结一下,在被脚本清掉的这4382个用户里:

  • 超过3000个是15年新注册的
  • 2876个用户的界面语言是中文,1455个用的是默认英文
  • 一半用户没有换过头像
  • 5.79644% (254) 的用户 fo 了 261 人以上
  • 12.73391% (558) 的用户有 8 个或以上的 foers
  • 11.25057% (493) 个用户至少发了一次推
  • fo 人数目和获得 foers 的比例呈正相关(就整个 dataset 而言,outlier 没有去除),和发推多少没什么关系
  • 就中位数而言,大部分用户 fo 了43个人,有1个 foer,没有发过推。

这一定是搞数据的人非常不喜欢的 skewed data,但无奈的是这是现实。对这些用户又有了新的认识呢!对被我代码误伤的用户表示诚挚的歉意。顺便,今天冷死了。。。南方什么时候集中供暖啊这边四五度比北方零下二十度还可怕好吗。。。

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s