如今,微信已经成为我们生活中的一部分,给我们的生活带来了很多便利,微信于2011年产生,我本人是在2013年间开始使用,众所周知,社交软件中腾讯QQ是占主导地位的,但现在看来,QQ已经被逐渐舍弃,包括我也不在使用QQ了,截止到2016年第二季度,微信已经覆盖中国 94% 以上的智能手机,月活跃用户达到 8.06亿,用户覆盖 200 多个国家、超过 20 种语言,今天我们来聊聊微信。
微信由深圳腾讯控股有限公司(Tencent Holdings Limited)于2010年10月筹划启动,由腾讯广州研发中心产品团队打造 。该团队经理张小龙所带领的团队曾成功开发过Foxmail、QQ邮箱等互联网项目。腾讯公司总裁马化腾在产品策划的邮件中确定了这款产品的名称叫做“微信”。微信(WeChat)是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造。
口干舌燥说了这么多,进入主题,这篇文章主要是通过Python的itchat库来爬取微信好友信息,主要包括'昵称','备注','性别','省份','城市','签名'等信息。关于itchat的信息请移步https://itchat.readthedocs.io/zh/latest/。
本次微信好友分析,涉及到结巴分词,图表绘制,图像处理,词云模块,中文分词等13个第三方模块,如若没有安装这些模块,可使用pip install XXX命令来安装。
通过以上两行简单的代码,运行程序扫描出现的二维码登陆网页微信,便可将微信好友的信息抓取下来,返回的信息是一个list,包括【Username, RemarkName, NickName,Sex,Province,City, Signature】等信息,其中Username是注册微信是生成的一个唯一标识符,RemarkName显示的是你好友的备注信息,NickName是好友的昵称,Sex当然就是性别了,,Province,City就是省份和城市了,Signature代表的是个性签名;这些信息中第一项是我自己的信息,所以下面分析时均除去我个人,从第二项开始。
当然,这样的数据放在这里,没有人会去看的,也没有价值,爬取的数据经过分析整理,可视化的展现在人们面前才是最具价值的,才是我们需要的。那么,下面就开始整理数据吧,废话不多说,直接看代码:
通过这么十几行代码已将我们需要的信息打印出来了,只是这些信息不够直观,密密麻麻的文字当然没有图标展现的更好了。
1一、性别分析并展示:
微信好友中,有部分人不愿意填写性别的,故这些人的性别未知,其他人统计后发现一惊天大秘密,我的490位好友中,男性朋友有268位,女性朋友有196位,未知性别的26位,一看这数据量,居然是男性占大多数,暴露了还是一个单身汪的悲哀,看来今年测的桃花运看来是无法实现了。
下面是图表展示,更能说明单身汪的悲哀!!!
2二、好友位置分析并展示:
代码语言:javascript复制
好友位置主要是通过City这个字段去分析的,例如直辖市北京市区被分开统计了,结果有点不尽人意,但因初学耗时费力太大,pandas框架还未涉及,matplotlib做图太过于繁杂,先这样处理吧。使用Echats可直接展示出图片,如下地址所示,将城市信息写入数据运行即可展示出下图。
代码语言:javascript复制
地区生成地图:http://www.echartsjs.com/examples/editor.html?c=bar-simple
通过此分析,暴露了小编是西北人无疑了,欢迎西北老乡一起交流学习哦!
Echarts 展示
位置分析部分代码
(位置分析部分代码,完整代码关注公众号后台回复获取)
3三、个性签名词云分析并展示:
个性签名可以说是一个人一段时间的喜怒哀乐,还记得当时的QQ签名,一段时间就会换一个,代表这那段时间的喜怒哀乐以及悲欢离合。以下通过jieba分词和snowNLP中文分词来分析好友签名,jieba分词是将个人签名拆分开,统计出现频率相对较高的一些关键词,而中文分词则是分析好友签名中的感情倾向,即好友签名整体上是表现为正面的、负面的还是中立的,各自的比重是多少。而分词这一块是相对于初学者比较难的,也正是我话费大量精力和时间的地方,作为一个初学者一个人是无法独立完成的,上网寻找了好多资料,查看CSDN,终于找到一篇《基于Python实现的微信好友数据分析》解决了难题。分词代码均参考于这片文章,这里将不再展示了,感兴趣者可自行Google,若想获取完整代码,关注公众号【JiekeXu之路】,ID:【JiekeXu_IT】,后台回复【微信分析】即可获取本文完整代码。
附:分词词云图
通过上图分析,朋友圈好友还均是乐观向上的,珍惜自己,努力的人生永远快乐,简单的一切才是最好的生命。哈哈,才疏学浅编不下去了,请见谅!
通过柱状图发现,朋友圈中正面积极向上的情感分析朋友有187人,而中性情感判断的朋友有121人,负面消极的情感分析有47人,这个结果和我们通过词云展示的结果基本吻合,这说明在微信好友的签名信息中,大部分的签名信息传达出来都是一种积极向上的态度。朋友圈中基本上有两类用户,第一类用户使用朋友圈记录自己的生活,第二类用户使用朋友圈输出自己的观点。对于第二类用户,它并不介意别人了解它的过去,它更在乎它从始至终输出的观点是否一致。所以,不管朋友圈里别人在或晒美食、或晒旅游、或秀恩爱、或晒宝宝、或煲鸡汤等等,在我看来这都是一种生活方式,精神层次和物质层次比你高的人群,觉得你朋友圈里的内容“无趣”,这是符合人类一贯的认知方式的,在大多数情况下,反而是那些和你层次差不多的人群,对不熟悉的人或者事物妄加判断,如果你不喜欢我朋友圈里的内容,请直接屏蔽我就好,因为这样我们还可以做朋友;如果你因为喜欢A而在我这里和我说B不好,这就真的是三观不合啦。我相信没有完全兴趣匹配的两个人,即使是男女朋友或者情侣之间,总之人与人相处嘛,真诚和互相尊重是基本要求。
4四、好友头像集合
这样也算是一个总结吧,很多人喜欢使用自己的照片作为头像,也有一些人选择明星,动物,动漫,植物,甚至建筑物等,各有各自的想法,各有各自的爱好,这里不做任何评论。
先看代码,这里使用itchat库的get_head_img变将好友头像获取下来,使用for循环遍历,将图片已微信名和备注名称命名,然后将所有的图片合成一张“allUserIMG.jpg”的图片保存到对应目录下。查看完整代码,可关注公众号【JiekeXu之路】,ID:【JiekeXu_IT】,后台回复【微信好友分析】即可获取本文完整代码。
这里用程序将朋友圈好友的头像下载下来,然后用PIL工具合成一张大图,但是有部分好友头像无法下载,不知为何,亦或是微信号已停用或者拉黑删除好友了,先不去理会了,不过看起来还是比较有趣的,快来找一找你在哪?
最后,说明一下环境配置,Windows10下使用Python3.6.2,相关的第三方库前面已说过,这里不做介绍。若想查看完整代码,可关注公众号【JiekeXu之路】,ID:【JiekeXu_IT】,后台回复【微信好友分析】即可获取本文完整代码。