最近看到許多詞雲的數據分析效果,經過詞雲能夠方便地看出哪些詞彙出現的頻率,因而想着經過Python弄了一個分析本身微信好友的個性簽名。 先來看效果:python
能夠很直觀地看出來仍是'努力'出現的頻率比較多啊,九零後確實不容易啊!bash
如何實現呢,直接上python代碼:微信
import itchat
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
from scipy.misc import imread # 這是一個處理圖像的函數
sign_list=[]
itchat.auto_login(hotReload=True)
itchat.send(u'Hello,world','filehelper')
friends = itchat.get_friends(update=True)[0:]
print('開始獲取微信好友個性簽名.....')
for i in friends:
signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "") #過濾掉表情
#rep = re.compile("< =.+/>")
rep = re.compile("[^\u4e00-\u9fa5^]")
nickName=i["NickName"]
signature = rep.sub("", signature)
sign_list.append(signature)
text=''.join(sign_list)
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = ' '.join(wordlist_jieba)
back_color = imread('./mao.jpg')
# 詞雲
my_wordcloud = WordCloud(
background_color='white', # 背景顏色
max_words=2000, # 最大詞數
mask=back_color, # 以該參數值做圖繪製詞雲,這個參數不爲空時,width和height會被忽略
max_font_size=100, # 顯示字體的最大值
font_path='C:/Windows/Fonts/simfang.ttf', # 指定字體文件 解決顯示口字型亂碼問題,
random_state=42, # 爲每一個詞返回一個PIL顏色
)
# 用wl_space_split生成詞雲
my_wordcloud.generate(wl_space_split)
# 基於彩色圖像 生成響應的色彩
image_colors = ImageColorGenerator(back_color)
# 顯示圖片
# plt.imshow(my_wordcloud)
# 關閉座標軸
# plt.axis('off')
# 繪製詞雲
plt.figure()
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.axis('off')
# 保存圖片
my_wordcloud.to_file('ciyun.png')
複製代碼
代碼主要使用了itchat,matplotlib,ImageColorGenerator模塊等,這幾個模塊都須要本身pip install 一下。主要是分爲兩步驟,第一步登入微信,獲取微信好友信息,提煉簽名並過濾掉一些非主流簽名,例如帶有表情,第二步則是利用ImageColorGenerator模塊來生成圖片。
若是你仔細觀察圖片,會發現其輪廓像一隻貓,怎麼實現呢?準備一張貓的背景圖片就能夠啦app
是否是以爲頗有趣呢,本身也去實現一個吧,例如分析一下今年兩會政府工做報告出現頻率高的詞彙!dom