Osheep

时光不回头,当下最重要。

朋友圈的朋友们,你们终于可以互相看到了

— 我的微信好友数据分析

这张图是我所有的微信好友,之前你们大部分不能互相看到,在这里,终于可以相互看一眼了。最后4个是虚位以待。

《朋友圈的朋友们,你们终于可以互相看到了》

我的微信朋友们

是不是有点密集恐怖。如果觉得头像有暴露隐私,侵犯肖像或带来其他不适,可以留言简信给我打码、抠出。前天我把这个图片发到朋友圈,大家留言也特别有意思,很多人想了解图片是怎么做出来的。


知乎上有一篇文章@路人甲的《Python对微信好友进行简单统计分析》,介绍了用Python抓取微信通讯录数据进行分析。看到了觉得十分有趣。

上周看到@龙潇 写了一篇文章 《抖机灵教程 | 数据化看你的朋友圈》,用了一个第三方工具抓取了微信好友数据,似乎不太安全。

来说说我的方法,基本上还是@路上甲 提供的代码。他在文章中写到也是受到一位大神之前写的代码启发。我只添加了少许代码和功能。

  1. 爬虫模拟登录微信网页版
    https://login.weixin.qq.com/ 用手机微信扫码即可登录。不存在安全问题。原代码比较完整,改一下路径即可。

  2. 爬取的数据包括:昵称、性别、微信号、城市、个性签名、备注、分组星标,微信头像
    我增加了一个字段,另外抓取中把数据直接写到csv文件。

  3. (替换)对抓取到的头像用Face++进行年龄分析
    原文章中用了opencv进行头像图片类别分析,判断头像是不是人像照片。由于我在安装opencv时碰到一些问题,安装好了又遇到与numpy的匹配问题。于是采用了Face++进行头像分析。
    文章见:《Face++头像检测分析》

  4. (增加)把所有的头像拼接成一张图。
    使用的PIL包,方法代码文章见:《1000张图片如何拼接》

  5. (去除)原文章有一段对微信中认识和不认识的好友进行统计,看了一下不太适合我在微信中的标记。

以下是以微信好友的简单数据分析。

一、数据和字段情况

《朋友圈的朋友们,你们终于可以互相看到了》

抓取的微信通记录朋友数据

一共 1,546 个微信好友。看了一下,并不是所有的字段大家都有完整填写,如省市没有填写的293人,填写了外国和国外城市名的89人。所以以下数据就是简单分析,甚至年龄的分析都可以当作抽样分析。

二、来源省市

朋友们来源最多的是上海,其次是北京、安徽。(明明有两位台湾朋友,我核对了一下,他们一位写了天津,一位没有标明)

《朋友圈的朋友们,你们终于可以互相看到了》

微信朋友来源省市

来自上海的好友地域分布情况:

《朋友圈的朋友们,你们终于可以互相看到了》

上海区域的朋友

除了上海、北京外,来源比较多的城市是:深圳、杭州、广州、成都、安庆。

三、性别比例

《朋友圈的朋友们,你们终于可以互相看到了》

微信好友性别比例

三、头像和年龄

把全部头像用Face++进行人脸检测,有352人检测出有效数据(性别、年龄)占22.8%。

男性最大年龄56岁,最小 -4 岁(Face++的误判了),
女性最大年龄54岁,最小 2 岁。
14岁以下的一共33人,占9.38%。这是不是都是家里小朋友的照片啊。

换个说法,用清晰的人像照片作为头像的只占22.8%。我还没有分析统计出用人像、卡通、风景图片作头像的比例,网上有根据微信头像分析性格的文章,也蛮有意思,可以看看。

一个有趣的发现,女性头像用Face++测出来,貌似比实际都小3、5岁。看来美颜相机都用得比较好。但是通过锻炼健身的人,头像检测出来就远不止小这么多了,微信朋友中有一位“逆龄蜘蛛侠”测出来明显与实际年龄相差近16岁,看是去真年轻。所以多健身锻炼,再加上美颜相机、美图秀秀,效果会更好。

四、个性签名透露什么

好友中1130人留有个性签名,去掉全英文、数字、表情符号的签名后有925条,分词后,统计出现频度最高的100个,生成的词云图如下。

《朋友圈的朋友们,你们终于可以互相看到了》

个性签名100个最高频词云图

其中“你”和“我”都应该都指的是自己,从人性签名中可以看出,大家比较关注自我成长,有目标,想改变,有方向,有梦想,要坚持,要努力和行动的词语比较多。


我泄露了什么吗?你还记得在什么时候,在哪里,什么方式,我们加了微信吗?

PS: 文章中使用的Python代码都在这里:https://github.com/ppy2790/weixin

点赞