“ 清理下[微笑],不用回。
相信大家在微信上一定被上面的這段話刷過屏,群發消息應該算是微信上流傳最廣的找到刪除好友的方法了。但群發消息不僅僅會把通訊錄里面所有的好友騷擾一遍,而且你還得挨個刪除好幾百個聊天記錄,回復大家的疑問和鄙視。
大約一年前,網上流傳一段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愛好部落