背景
词云图还是挺需要用的吧,大量的词中,我们可以快速捕捉到高频的关键的词汇。
环境:python3
对csv文件里面某列所有字符串画词云图(中文的字符)
新安装环境:
1.下载中文字体SimHei.ttf,并放到平台的font目录下。
2.网上找个词云背景图下载下
3.网上下载个停用词词典,如 ChineseStopWords.txt
4.Pillow升级到8版本以上
code及作用
效果:
1)生成一张自定义背景(ciyun_backgroup2.png)的词云图片;
2)生成一个top30的词频表 word_top_frequency.csv,能看到前30的词及词频。
import pandas as pd
import jieba
from jieba import analyse
import wordcloud
import matplotlib.pyplot as plt
import numpy as np
import PIL
#需要把字符串更换为csv文件词云列的title
title=';'.join([ str(c) for c in df['某列名'].tolist()])
# 载入自定义词典
jieba.load_userdict("ChineseStopWords.txt")
#分词
gen=jieba.lcut(title)
data={}
#统计词频
for i in gen:
if len(str(i))>1:
data[i] = data.get(i,0)+1
hlist=list(data.items())
hlist.sort(key=lambda x:x[1],reverse=True)
dd=pd.DataFrame(hlist)
dd=dd.iloc[:30,:] #只要前30个
#需要更改输出词频的路径
dd.to_csv('word_top_frequency.csv',encoding='utf-8',index=False,header=False,sep='\t')
# for i in range(10):
# print('{:<10}{:>5}'.format(hlist[i][0],hlist[i][1]))
#导入词频的背景图片
mask = np.array(PIL.Image.open('ciyun_backgroup2.png'))
cloud=wordcloud.WordCloud(background_color='white',mask=mask,font_path='/home/bae/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf')
cloud.generate_from_frequencies(frequencies=data)
plt.figure(dpi=1600) #分辨率
plt.imshow(cloud,interpolation='bilinear')
plt.axis('off')
#保存
plt.savefig('ciyun.png')
plt.show()
词云图:
文字打码了,大概可以看到,效果不错。
附件
词云背景图附一张