1. 程式人生 > >30 行代碼繪出你的微信朋友統計圖

30 行代碼繪出你的微信朋友統計圖

圖庫 href 系列 很多 重新 kmp 運行 col 時間

前言

大家好,這裏是「brucepk」爬蟲 系列教程。此文首發於「brucepk」公眾號,歡迎大家關註。此系列教程以實例項目為材料進行分析,從項目中學習 python 爬蟲,跟著我一起學習,每天進步一點點。

學編程是一件枯燥的事情,比較好的方法是在實際項目中學習成長。今天帶來的是 30 行代碼畫出你的微信朋友的性別統計圖。

最近發現一個有意思的庫:itchat,itchat 是一個開源的微信個人號接口。今天就用 itchat 來統計自己微信好友性別的比例並用柱形圖展示出來。

項目環境:python 3

環境安裝

通過下面命令安裝 itchat:

pip install itchat

通過下面命令安裝 matplotlib:

pip install matplotlib

Matplotlib 是一個 Python 的 2D 繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。

先給大家展示下成果圖:

技術分享圖片

技術分享圖片

程序結構:

  1. 登錄微信;

  2. 統計出微信裏好友男女人數;

  3. 根據第 2 步統計的人數畫出柱形圖。

登錄微信

itchat.auto_login(hotReload=True)

第一次運行程序需要微信掃碼登錄,這裏直接調用 auto_login 方法傳入值為 True 的hotReload。該方法會生成一個靜態文件 itchat.pkl,用於存儲登陸的狀態。這樣即使程序關閉,一定時間內重新開啟也可以不用重新掃碼。

統計人數

用 get_friends 獲取所有好友信息。
循環統計時從 1 開始,因為 friends[0] 是自己的信息。

friends=itchat.get_friends(update=True)[0:]  #獲取所有好友信息  
male = female = other =0
for i in friends[1:]:
    sex=i["Sex"]
    if sex==1:
        male+=1
    elif sex==2:
        female+=1
    else:
        other+=1
total=len(friends[1:])

再打印出統計比例:

print("男性好友: %.2f%%" % (float(male)/total*100) + "\n" +
"女性好友: %.2f%%" % (float(female) / total * 100) + "\n" +
"不明性別好友: %.2f%%" % (float(other) / total * 100))

畫圖

設置 x 軸、 y 軸 和標題的名稱,定義柱形圖的顏色,最後通過 plt.show顯示出來。

plt.xlabel("sex")
plt.ylabel("count")
plt.title("Gender statistics")
a=plt.subplot(1,1,1)
plt.bar(10, male, facecolor=red, width=3, label=male)
plt.bar(15, female, facecolor=yellow, width=3, label=female)
plt.bar(20, other, facecolor=blue, width=3, label=other)
plt.legend()
plt.show()
 

這樣微信好友的統計圖就完成了,當然,這只是 itchat 冰山一角的功能,還有很多有意思的功能等著我們去挖掘。

完整代碼我以上傳到 GitHub 上,需要的同學可以自己下載。

https://github.com/Brucepk/wechat_friend

也可以在公眾號後臺回復「微信好友統計」獲取。

推薦閱讀

python 爬蟲爬取煎蛋網妹子圖

30 行代碼繪出你的微信朋友統計圖