在上一篇中,將導出的csv文件中的talkid為微信id的文字內容提取出來,形成txt文件。
一、對文本內容進行清洗
-
在notepad中打開txt文件,發(fā)現(xiàn)聊天記錄中,每隔一段會有諸如“wxid_atzmad”的無效字段,影響整體數(shù)據(jù)的有效性。
聊天記錄截圖1.png
考慮到每個“wxid_atzmad”字段后內容均不一樣,若用復制粘貼去替換,幾萬行聊天記錄,光查找就要耗費一定精力。想到學習python時,學過正則表達式,為何不用正則表達式匹配“wxid_atzmad”字段,然后將其替換為空值?如果用正則表達式,速度快,效果應該可以達到。啟用正則表達式進行替換
同理,其他無用字段也可以用正則表達式進行匹配刪除
數(shù)據(jù)清洗部分根據(jù)個人對數(shù)據(jù)的需求,進行不斷清洗。
二、生成詞云圖
在jupyter中,導入wordcloud模塊(當然,如果anaconda中沒有裝wordcloud模塊的話,可采用conda install wordcloud或者導入相關我回來文件的方式安裝),然后編寫詞云圖代碼,生成詞云。其中,詞云背景圖需要的照片輪廓可用美圖軟件進行修飾,以獲得更好的效果圖。
直接上代碼。
#使用空格鏈接,進行中文分詞
wl_space_split=''.join(wordlist)
print wl_space_split
#讀取mask/color圖片
d=path.dirname(__file__)
nana_coloring=imread(path.join(d,'pic.png')
#對分詞后的文本生成詞云
my_wordcloud=WordCloud(background_color='white', #設置背景顏色
mask=nana_coloring, #設置背景圖片
max_words=2000, #設置最大顯示的字數(shù)
stopwords=STOPWORDS, #設置停用詞
max_font_size=50, #設置字體最大值
random_state=30, #設置有多少種隨機生成狀態(tài),即有多少種配色方案
)
my_wordcloud.generate(wl_space_split)
#create coloring from image
image_colors=ImageColorGenerator(nana_coloring)
#recolor wordcloud and show
my_wordcloud.recolor(color_func=image_colors)
#顯示詞云圖
plt.imshow(my_wordcloud)
#是否顯示x軸、y軸下標
plt.axis('off')
plt.show()
#save img
my_wordcloud.to_file(path.join(d,'wechat.png')
根據(jù)WordCloud的參數(shù),可以自己不斷調整參數(shù),獲得不同效果的詞云圖。
最后,附上自己調試出的幾個詞云圖照片。








不斷修圖和不斷調整參數(shù)的結果


