拉勾网“设计”职位数据分析之用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可以动,很抓眼球,但是配色不太好看,官方文档说支持自定义背景,但是我没有成功,大家可以去官网参考一下,或者在评论区指点一二就更完美啦

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