文章目录
5.然后把词性一列所有列表拼接到一个列表中,方便后续分析,然后把列表转换成表格对象
前言
对于学习了三个月的数据可视化的新手小白来说,第一次写博客,有写的不对的地方,还请多多指教。数据可视化是指将数据通过图表的方式传递出来,让用户能够快速、准确地理解所要表达的信息,从而提高沟通效率。
1、官网文档
包含pyecharts中各个功能和图形的介绍和代码参数解析。
pyecharts - A Python Echarts Plotting Library built with love.
2、社区
包含各种图形demo的项目案例代码和演示。
一、什么是词云(wordcloud)?
词云(Word Cloud)又称文字云,是文本数据的视觉表示,由词汇组成类似云的彩色图形,用于展示大量文本数据,每个词的重要性以字体大小或颜色显示。
二、词云主要有什么用呢?
词云(wordcloud)主要用来做文本内容关键词出现的频率分析,能够让人一眼看出一个事物的主要特征,越明显的特征越要突出显示,wordcloud需要进行的配置并不复杂,适合新手小白上手。
三、使用步骤
1.导入所需用到的库
import pandas as pd
import jieba
from snownlp import SnowNLP
import pyecharts.options as opts
from pyecharts.charts import WordCloud
在绘制词云图的过程中,需将一个长文本拆分成多个词汇以及统计每个词汇出现的频次这两个步骤。第一个步骤叫做“分词”所要用到的库叫分词库;第二个步骤即词汇统计,是数据分析的内容,用pandas库实现。在python有很多分词库,我下载的是最常见的两个分词库:snownlp、jieba;下载方法如下:
pip install snownlp -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
除了这两个库以外,还有一个我们最熟悉的pyecharts库啦
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple
2.读取数据
导入excel表格,存储到data中
data = pd.read_excel(r'深海 短评.xlsx')
data
运行结果
3.进行数据处理
(1)使用jieba库把文本评论拆分成词语提取出来,然后打印到data中
代码如下:
data['分词'] = data['评论'].agg(lambda x:jieba.lcut(x))
data
结果如下:
4.使用snownlp库把词性用字母标注出来,方便后面引用
代码如下:
def heat_count(name,series):
count = 0
for i in series:
for j in i:
if j==name:
count+=1
return count
data['词性标注'] = data['评论'].agg(lambda x:list(SnowNLP(x).tags))
data
结果如下(标注内容所示)
5.把词性拼接到列表中,然后把列表对象转换成表格对象,以便后续观察并分析
代码如下:
# 把词性一列中所有列表的数据对拼接到一个列表中,方便后续分析
list_tags = []
for i in data['词性标注']:
for j in i:
list_tags.append(j)
list_tags
# 转换成表格对象
data_tags = pd.DataFrame(list_tags,columns=['词语','词性'])
data_tags
结果如下:
6.选取画图的关键词性
以下画图的关键词性我选取的是形容词(n),也可以选取其他词性来进行画图
统计形容词出现的频次,然后将形容词一列和出现频次一列转换成二维列表
代码如下:
# 统计每一个词性出现的次数
data_tags['词性'].value_counts()
# 统计形容词的出现频次
result = data_tags[data_tags['词性']=='n'].groupby(by='词语')['词语'].count().sort_values(ascending=False)#[:20]
# 将形容词一列和出现频次一列转换成二维列表
# 注意:频次的数字需要转换成字符
data_wordcloud_tags = [(i,str(j)) for i,j in zip(result.index,result.values)]
data_wordcloud_tags
结果如下:
7.画图
前面,我们已经把数据处理完了,接下来就是画图了,我们先找一张白底黑色的图片放到跟所写代码同一路径下。
以下是全部代码:
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))
def heat_count(name,series):
count = 0
for i in series:
for j in i:
if j==name:
count+=1
return count
data['词性标注'] = data['评论'].agg(lambda x:list(SnowNLP(x).tags))
list_tags = []
for i in data['词性标注']:
for j in i:
list_tags.append(j)
list_tags
data_tags = pd.DataFrame(list_tags,columns=['词语','词性'])
data_tags['词性'].value_counts()
result = data_tags[data_tags['词性']=='n'].groupby(by='词语')['词语'].count().sort_values(ascending=False)#[:20]
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=[15, 60],
mask_image = "爱心.png",
#shape = 'triangle',
textstyle_opts = opts.TextStyleOpts(font_family="仿宋")
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="深海的评论", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
visualmap_opts= opts.VisualMapOpts(max_=2)
)
)
c.render_notebook()
结果如下:
总结
以上内容就是使用词云(wordcloud)画图的过程啦,在画图的过程中,有两个需要注意的地方,一是频次的数字需要转换成字符,另一个就是所选取的图片是白底黑色的,不然画不出来,这就是我在学习词云画图过程中的总结了。