对于大片文本数据的可视化可以使用词云,既直观又酷炫。
步骤主要为:
1.准备好数据文本,最好是字符串。但绝大可能是列表,此时需要使用【text=’ '.join(list)】这样的方法变成字符串;
2.使用jieba进行分词,用法可参考:
https://blog.youkuaiyun.com/reims2046/article/details/72869337
3.将jieba返回的内容传入wordcloud
wordcloud参数用法可参考:
https://blog.youkuaiyun.com/zx1245773445/article/details/100894576
4.预览以及保存
纯文本可以通过以下代码简单制作词云
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
#data为纯文本数据
js='xxxxxxxx'
js_cut=jieba.lcut(js)
js_cut=' '.join(js_cut)
wc = WordCloud(
background_color='black', # 设置背景颜色为黑色
font_path='/font/msyh.ttc', # 显示中文,可以更换字体
stopwords={'数据分析','数据挖掘'}, # 设置停用词,停用词则不再词云图中表示
max_font_size=150, # 设置字体最大值
random_state=1, # 设置有多少种随机生成状态,即有多少种配色方案
scale=20 # 设置生成的词云图的大小
)
wc.generate(js_cut)
wc.to_file('js.png') #保存图片
plt.imshow(wc) #用plt显示图片
plt.axis('off') #不显示坐标轴
plt.show()
如果数据是列表,如
import pandas as pd
df=pd.read_csv('job_info.csv', encoding='gbk')
js=df['job_skills'].tolist()
如果直接使用前面的代码,会出现报错
原因是列表中可能存在空值,jieba无法识别,所以必须去除空格,完整代码如下
import pandas as pd
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
df=pd.read_csv('job_info.csv', encoding='gbk')
js=df['job_skills'].tolist()
while '' in js:
js.remove('')
js=' '.join(js)
js_cut=jieba.lcut(js)
js_cut=' '.join(js_cut)
wc = WordCloud(
background_color='black', # 设置背景颜色为黑
font_path='/font/msyh.ttc', # 显示中文,可以更换字体
stopwords={'数据分析','数据挖掘'}, # 设置停用词,停用词则不再词云图中表示
max_font_size=150, # 设置字体最大值
random_state=1, # 设置有多少种随机生成状态,即有多少种配色方案
scale=20 # 设置生成的词云图的大小
)
wc.generate(js_cut)
wc.to_file('js.png') #保存图片
plt.imshow(wc) #用plt显示图片
plt.axis('off') #不显示坐标轴
plt.show()