“ 清理下[微笑],不用回。
相信大家在微信上一定被上面的这段话刷过屏,群发消息应该算是微信上流传最广的找到删除好友的方法了。但群发消息不仅仅会把通讯录里面所有的好友骚扰一遍,而且你还得挨个删除好几百个聊天记录,回复大家的疑问和鄙视。
大约一年前,网上流传一段python代码,查看被删的微信好友。原理就是新建群组,如果加不进来就是被删好友了。我也执行过。但是正如程序里面所提示的,查询结果可能会引起一些心理上的不适,请小心使用。
本文会另辟蹊径,通过调用微信接口,分析微信朋友的信息数据,能够分析拉黑的,搞微商的,性别分布,城市分布,省份分布等。
调用一个微信接口 itchat来操作微信
先看下官方介绍: itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
import itchat
# 先登录
itchat.auto_login(hotReload=True)
def getFriends():
return itchat.get_friends(update=True)[0:]
调用一下函数getFriends()就能得到朋友信息列表了
有了这些数据,就可以做分析了。
用pandas得到一个二维数组,去掉作用不大的数据列,如:
‘Alias’, ‘VerifyFlag’, ‘HideInputBarFlag’, ‘UniFriend’, ‘Uin’, ‘Statues’, ‘StarFriend’, ‘UserName’, ‘AppAccountFlag’, ‘ChatRoomId’, ‘DisplayName’, ‘EncryChatRoomId’ 等作用不大的数据。
然后按照我们想要的数据分组:
if __name__ == '__main__':
friends = getFriends()
friends_df = pd.DataFrame(list(friends))
friends_df.dropna(axis=1, inplace=True)
droped_cloum = ['Alias', 'VerifyFlag', 'HideInputBarFlag', 'UniFriend', 'Uin', 'Statues', 'StarFriend', 'UserName',
'AppAccountFlag', 'ChatRoomId', 'DisplayName', 'EncryChatRoomId', 'HeadImgUrl', 'MemberCount',
'OwnerUin', 'MemberList', 'PYInitial', 'Signature', 'SnsFlag', 'PYQuanPin', 'KeyWord',
'RemarkPYInitial', 'RemarkPYQuanPin']
drop_cloums(friends_df, droped_cloum)
friends_df.to_csv("friends.csv")
city = friends_df.groupby('City').size()
province = friends_df.groupby('Province').size()
sex = friends_df.groupby('Sex').size()
print(city)
print(province)
print(sex)
结果:
用图像展现出来
sex.plot(kind='pie', subplots=True, autopct='%.2f', figsize=(4, 4), title="Sex",legend = True) # 显示百分比
plt.show()
1是男,2是女,0是没有填写的。
展示省份分布:
plt.xticks(np.arange(len(province.index)), province.index, fontproperties=font)
plt.show(province.plot(kind='bar'))
Mac上plot处理中文没处理好。
因为怕有些心理的不适,这里没有统计拉黑的名单。但是很容易得到的,字段”UniFriend”。
统计分析签名,能分析部分微商出来。这里也没有去统计了。
一个小小的朋友圈,也能折射人间百态。淡定淡定!
更多精彩,请关注微信公众号: python爱好部落