1. 程式人生 > 其它 >利用python做微信公眾號標題的詞雲圖

利用python做微信公眾號標題的詞雲圖

技術標籤:python大作業python資料視覺化

一、標題資料的獲取

1.通過微信公眾平臺後臺網頁,左側的統計模組來下載相應的資料,單獨把標題複製出來,形成檔案形式;
2.通過網頁爬蟲來爬取。

二、詞雲圖製作過程

1.引入需要的庫

import wordcloud
import jieba

2.讀取檔案並檢視檔案

#讀取檔案
wf = open("title.txt","r",encoding='utf8').read()
print(wf)

3.利用jieba分詞

cut_text = jieba.lcut(wf,cut_all=False
) result = ' '.join(cut_text) #轉為字串 print(result) #獲取停用詞表,注意詞雲圖的結果不想有單字的情況,需要使用該表,但是這個檔案表要排除的字並不完善,可以根據自己的結果往裡面加字,記得儲存即可 stop = open('stopwords.txt', 'r+', encoding='utf-8') stopword = stop.read().split("\n")

4.生成wordcloud物件

mywordcloud = wordcloud.WordCloud(font_path="C:\\Windows\\Fonts\\FZYTK.TTF"
,width=1000,height=1000,background_color="white",max_words=100,stopwords=stopword) #儲存詞雲圖檔案 mywordcloud.generate(result) mywordcloud.to_file("weixin.png")

5.展示詞雲圖來檢視一下

import matplotlib.pyplot as plt
plt.figure('weixin')
plt.axis('off')
plt.imshow(mywordcloud)
plt.show()

詞雲結果圖:
詞雲圖結果

三、擴充套件:詞頻統計

"""
import collections
object_list=[]

#對於關鍵詞還是參考另一個清洗好的
for word in wf:
    object_list.append(word)
    # 迴圈讀出每個分詞
    # 如果不在去除詞庫中
    # 分詞追加到列表
word_counts = collections.Counter(object_list) # 對分詞做詞頻統計
word_counts_top10 = word_counts.most_common(10) # 獲取前10最高頻的詞
print (word_counts_top10) # 輸出檢查

"""
import jieba
def takeSecond(elem):
    return elem[1]
def main():
    path = "title.txt"
    file = open(path,'r',encoding="utf-8")
    text=file.read()
    file.close()
    words = jieba.lcut(text)
    counts = {}
    for word in words:
        if len(word) == 1:
            continue
        else:
            counts[word] = counts.get(word,0) + 1
    items = list(counts.items())
    items.sort(key = takeSecond,reverse=True)   
    for i in range(22):
        item=items[i]
        keyWord =item[0]
        count=item[1]
        #print("{0:<10}{1:>5}".format(keyWord,count))
        #print("{0:<10s} {1:<30}".format(keyWord,count,chr(12288)))
        #{0:{3}^10}\t{1:{3}^10}\t{2:^10}
        print("{0:<15s}{1:<15}".format(keyWord,count))
       
        """
        題中0對應的是Word,1對應的是count。
        其次,冒號是引導符,後面跟的是格式控制方法。<表示左對齊,>表示右對齊,數字表示寬度。
        同理,題中<10表示左對齊,並佔10個位置,>5表示右對齊,佔5個位置。
        chr(12288)是中文的空格
        """
main()