拉勾網“設計”職位數據分析之用pyecharts畫詞雲圖

相信大家都會用wordcloud畫詞雲吧,不但可以自定義形狀,還可以根據圖片制定配色,做出一張非常漂亮的靜態詞雲圖。但是如果想做動態的詞雲,還是用pyecharts的WordCloud更方便。本文兩種方式都介紹一下,小夥伴們可以根據需求自行選擇。
(前情提要)我爬了拉勾網搜索“設計”職位的招聘信息,Python爬蟲獲取拉勾網招聘信息詳見。並用pyecharts畫了地圖Geo,Map,條形圖以及餅圖。詳見拉勾網“設計”職位數據分析之用pyecharts畫地圖Geo,Map拉勾網“設計”職位數據分析之用pyecharts畫條形圖Bar拉勾網“設計”職位數據分析之用pyecharts畫餅圖(南丁格爾圖玫瑰圖)Pie

import imageio
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
%matplotlib inline
from wordcloud import WordCloud, ImageColorGenerator
import jieba
import jieba.analyse

這裏一定要強調一下,用matplotlib畫圖不顯示中文的話,一定要加上這句plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
試了很多方式都不成功,還是顯示方塊塊,加上這句瞬間治癒!牆裂安利臉!

df = pd.read_excel('lagou_sj0309_155511.xlsx')
#將職位需求合併成一個長字符串
needs=[]
for i in df['need']:
    needs.append(i)
    
set_need=str(needs)
#用jieba分詞,將崗位需求切割成詞語
cut = jieba.lcut(set_need)
need_cut=' '.join(cut)
#設置停止詞,刪除跟崗位需求無關的詞
stopwords = ['nan','具備','崗位職責','任職','相關','公司','進行','工作','根據','提供','作品','以上學歷','優先','計算','經驗','學歷','上學','熟練','使用','以上',
             '熟悉','能力','負責','完成','能夠','要求','項目','製作','具有','良好','行業','專業','設計','團隊','崗位','優秀','我們','關注'
             ,'n1','n2','n3','n4','n5','xao','xa0','產品','軟件','n6','視頻','創意','遊戲','需求','視覺','大專','本科','各種','以及','n7','瞭解','職位','結果'
]

#讀取背景圖片
mk = imageio.imread('alice_color.png')
wordcloud = WordCloud(background_color='white',
                      #設置字體爲中文字體!!!
                      font_path="/Library/Fonts/Songti.ttc",
                      #設置清晰度
                      scale=15,mask=mk,stopwords=stopwords).generate(need_cut)
image_colors = ImageColorGenerator(mk)
#將圖片顏色應用到詞雲中
wc_color = wordcloud.recolor(color_func=image_colors)
wc_color.to_file('ciyun.png')
plt.imshow(wc_color)

詞雲
真的很漂亮吧哈哈哈哈,這裏強調一下,一定一定要在WordCloud()里加上這句話font_path="/Library/Fonts/Songti.ttc" 設置字體爲中文字體!!!下面再來用pyecharts畫一個詞雲

    needs=[]
    for i in df['need']:
        needs.append(i)
    set_need=str(needs).replace('n1',"").replace('n2',"").replace('n3',"").replace('n4',"").replace('n5',"").replace('n6',"").replace('n7',"").replace('n',"")
    cut = jieba.lcut(set_need)
    need_cut=' '.join(cut)
    #設置停止詞,刪除跟崗位需求無關的詞
    stopwords = ['nan','具備','崗位職責','任職','相關','公司','進行','工作','根據','提供','作品','以上學歷','優先','計算','經驗','學歷','上學','熟練','使用','以上',
                 '熟悉','能力','負責','完成','能夠','要求','項目','製作','具有','良好','行業','專業','設計','團隊','崗位','優秀','我們','關注'
                 ,'xa0','產品','軟件','n6','視頻','創意','遊戲','需求','視覺','大專','本科','各種','以及','n7','瞭解','職位','結果'
    ]
    jieba_need = jieba.analyse.extract_tags(set_need, topK=80, withWeight=True)
    jieba_result=[]
    for  i in jieba_need:
        if i[0] not in stopwords:
            jieba_result.append(i)
    c = (
            WordCloud(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
            .add("", jieba_result, word_size_range=[20, 100],shape=SymbolType.RECT)
            .set_global_opts(title_opts=opts.TitleOpts(title="崗位需求"))
        )
    c.render('崗位需求.html')

崗位需求詞雲圖
生成的HTML可以動,很抓眼球,但是配色不太好看,官方文檔說支持自定義背景,但是我沒有成功,大家可以去官網參考一下,或者在評論區指點一二就更完美啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章