本文主要讲利用微信官方提供的itchat接口,爬取微信好友性别比例和地区分布,和个性签名词语词云情况,以便我们更有趣的了解我们的微信好友
环境:windows
技术:itchat、pandas、matplotlib、结巴分词,面向对象写法
先看下方大屏幕,对微信好友个性签名进行词语提取,并做成五角星状的词云形状
对微信好友性别地区进行分析,男朋友近600,女朋友300,还有一些未知生物存在,不小心暴露了小编的性取向,好友分布主要集中于广东和河南,可以猜下小编是哪里人
废话不多说,直接上代码
1、创建一个类,并初始化方法获取朋友信息
self.friends:数据结构列表包含字典,每个字典代表每个好友姓名、地区、签名等信息[{},{},{}]
plt.rcParams用来处理绘图显示中文问题
2、提取名字,性别,省份,城市,签名信息,并保存到新列表
3、pandas将朋友信息列表转成dataframe,并保存为csv方便查看
4、pandas的value_counts()方法可以统计每种性别和每个省份出现的次数,并由大到小排序,这里我们提取省份前15个,并转成dataframe结构
由于有些省份没有填写,为空,通过遍历,将空的省份替换成“未知”
5、绘图,参数说明+绘图方法
6、对获取到的签名数据结巴分词,提取词语,同时因为签名中很多没有意义的词,比如下图的” 的 < > ! “等特殊字符等等 ,我加载了一份我自己做的停用词,做了简单的过滤,踢出这些词语(当然如果仍有一些没踢出的话,停用词词典可以自己进行扩充)
部分停用词截图
获取词语列表后,利用python标准库中的counter方法进行列表中词汇的词频统计,得出每个词汇的词频数据,一共139个词语
7、将词语列表和词频列表传入词云方法,并进行展示