目录
1.引言
词云图是一种可视化文本数据的方法,通过将文本中的词语按照出现频率进行排序,并将词语按照大小和颜色进行区分,使得我们能够快速地了解文本的主题和重点。在Python中,我们可以使用各种库来绘制词云图,其中最常用的库是wordcloud
和matplotlib
。
2.准备工作
在开始绘制词云图之前,我们需要先安装相关的库。可以使用以下命令在终端中安装:
pip install wordcloud
pip install matplotlib
pip install jieba
下载速度慢可以在后面加上-i https://pypi.tuna.tsinghua.edu.cn/simple 如下
pip install wordcloud -i https://pypi.tuna.tsinghua.edu.cn/simple
3.导入数据
利用pandas库导入利用八爪鱼爬取的数据
八爪鱼使用教程新手指引-八爪鱼帮助中心
也可以使用python爬取爬取豆瓣短评(以电锯惊魂为例)-CSDN博客
data = pd.read_excel(r'../数据/电锯惊魂 短评.xlsx')
4.分词处理
如果是中文文本数据,需要进行分词处理。可以使用jieba
库进行分词。
data['分词'] = data['评论'].agg(lambda x: jieba.lcut(x))
data['词性标注'] = data['评论'].agg(lambda x: list(SnowNLP(x).tags))
5.统计各种词性的出现次数
list_tags = []
for i in data['词性标注']:
for j in i:
list_tags.append(j)
data_tags = pd.DataFrame(list_tags, columns=['词语', '词性'])
print(data_tags['词性'].value_counts())
6.筛选出词性为'n'的词语生成一个列表
result = data_tags[data_tags['词性'] == 'n'].groupby(by='词语')['词语'].count().sort_values(ascending=False)
data_wordcloud_tags = [(i, str(j)) for i, j in zip(result.index, result.values)]
7.生成词云图
使用WordCloud
类生成词云图。可以设置各种参数,如背景颜色、最大词汇数、最小字体大小等。
c = (
WordCloud()
.add(series_name="",
data_pair=data_wordcloud_tags,
word_size_range=[30, 100]
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="电锯惊魂", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
)
c.render('电锯惊魂词云图.html')
series_name :定义了词云图中系列的名称。
data_pair :定义了词云图中所有词语及其大小。
word_size_range :定义了词语在词云图中的字体大小范围。
title_opts:设置图表的标题及其样式。
tooltip_opts :定义了当鼠标悬停在图表上的某个点时显示的工具提示的样式和内容。
set_global_opts :设置图表的全局选项。
render:将图表渲染为HTML文件。
8.全部代码
import pandas as pd
import jieba
from snownlp import SnowNLP
import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = pd.read_excel(r'../数据/电锯惊魂 短评.xlsx')
data['分词'] = data['评论'].agg(lambda x: jieba.lcut(x))
data['词性标注'] = data['评论'].agg(lambda x: list(SnowNLP(x).tags))
list_tags = []
for i in data['词性标注']:
for j in i:
list_tags.append(j)
data_tags = pd.DataFrame(list_tags, columns=['词语', '词性'])
# print(data_tags['词性'].value_counts())
result = data_tags[data_tags['词性'] == 'n'].groupby(by='词语')['词语'].count().sort_values(ascending=False)
data_wordcloud_tags = [(i, str(j)) for i, j in zip(result.index, result.values)]
c = (
WordCloud()
.add(series_name="",
data_pair=data_wordcloud_tags,
word_size_range=[30, 100]
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="电锯惊魂", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
)
c.render('电锯惊魂词云图.html')
9.效果演示
10.总结
通过以上步骤,我们使用了Python绘制出词云图。在绘制过程中,需要注意选择合适的文本数据和参数设置,以便得到更好的可视化效果。此外,还可以根据需要自定义词云图的样式和布局,使得词云图更加符合实际需求。在未来中,我们可以进一步探索词云图的应用场景和优化方法,提高数据可视化的效果和质量。