一、前言
數據分析報告之中文標簽云
在我的前一篇博客(python爬蟲爬取拉勾網職業信息)中,獲得了一份格式化的職業信息數據,不清楚的可以看看我的上一篇博客。
python制作標簽云的包有幾個,我這里選用了Wordcloud,直接pip install 即可。
二、實戰
1、統計詞頻數
前面我們用爬蟲已經抓取了一份格式化的數據,要制作標簽云,要先把各個公司職位優勢的詞頻數統計出來,代碼如下:
def wordCount(filename): ''' 簡單計算詞頻的函數 :param filename: 文件名 :return: 詞頻 ''' wordCount = {} file = open(filename,'r') while True: line = file.readline() if line: wordlist = line.split(',[') if len(wordlist) == 1: continue wordlist = wordlist[1].split('],')[0].split(',') for word in wordlist: word = word.replace(' ', '').replace("'", '') if word in wordCount.keys(): wordCount[word] = wordCount[word]+1 else: wordCount[word] = 1 else: break return [(k, wordCount[k]) for k in wordCount.keys()]注意,上述代碼只用于特定格式下,即爬蟲抓取回來的職位信息中公司優勢的詞頻統計2、生成標簽云
def generateCloud(filename,imagename,cloudname,fontname): ''' 生成標簽云的函數 ''' coloring = imread(imagename) # 讀取背景圖片 wc = WordCloud(background_color="white", # 背景顏色max_words=2000,# 詞云顯示的最大詞數 mask=coloring, # 設置背景圖片 stopwords=STOPWORDS, # 停止詞 font_path=fontname, # 兼容中文字體 max_font_size=150) # 字體最大值 #計算好詞頻后使用generate_from_frequencies函數生成詞云 #txtFreq例子為[('詞a', 100),('詞b', 90),('詞c', 80)] txtFreq = wordCount(filename) wc.generate_from_frequencies(txtFreq) # 生成圖片 plt.imshow(wc) plt.axis("off") # 繪制詞云 plt.figure() # 保存詞云 wc.to_file(cloudname)這里需要注意的是,fontname這個參數,在Ubuntu系統下,生成中文標簽云默認字體可能會不兼容,所以要重新指定兼容的字體,直接在window系統下復制微軟雅黑(msyh,tff)字體過來即可。3、運行
if __name__ == '__main__': d = path.dirname(__file__) # 獲取當前文件路徑 fontname = path.join(d, 'msyh.ttf') # 中文字體路徑 filename = path.join(d, '廣州.txt') # txt文件路徑 imagename = path.join(d, "circle.jpg") # 背景圖片路徑 cloudname = path.join(d, "cloud.png") # 標簽云路徑 generateCloud(filename, imagename, cloudname, fontname)三、結果1、選用的背景圖片--circle.jpg
2、生成的標簽云--cloud.png
3、到這里就大工告成了,具體代碼可以在我的github上找到:https://github.com/lpty
新聞熱點
疑難解答