前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Pyecharts的词云图实战

基于Pyecharts的词云图实战

作者头像
潇洒坤
发布2018-09-10 10:02:04
2.4K0
发布2018-09-10 10:02:04
举报
文章被收录于专栏:简书专栏

标题中的英文首字母大写比较规范,但在python实际使用中均为小写。 本文的写作内容是将25000条评论当中的热词提取出来,并制作词云图 开发环境是jupyter notebook,如果进行实践请使用与作者相同的开发环境。

0.下载文件

25000条评论的源文件下载链接: https://pan.baidu.com/s/1MqN1qNgZKbVEE2lWumt_dg 密码: f57b 如下图所示,在桌面新建文件夹,文件夹命名:wordCloud

image.png

下载文件放到桌面的wordCloud文件夹中,如下图所示:

image.png

资源管理器就是我们常用的windows文件夹 保证资源管理器在桌面的wordCloud文件夹下,在资源管理器的路径下输入cmd并按Enter运行,如下图所示:

image.png

在cmd中输入命令并按Enter运行:jupyter notebook

image.png

浏览器自动打开jupyter notebook 新建一个文件,点击如下图所示位置:

image.png

在新打开的网页可以开始编程,如下图所示:

image.png

1.读取文件中的内容

引入pandas库,用pandas库中的read_csv方法读取文件,sep这个参数根据csv文件实际情况进行设置。 读取文件成功后,打印选出的前10个

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv("labeledTrainData.csv",sep='\t', escapechar='\\')
df.head(10)

上面一段代码的运行结果如下:

image.png

2.获得评论列表

从上一幅图中可以看出评论在数据类型为DataFrame的df变量的review字段中,通过df['review']取出。df['review']是Series对象,Series对象有tolist方法,返回值的数据类型为列表list。df['review'].tolist()的返回值是每一条评论组成的列表list。 导入BeautifulSoup库,去除评论当中的标签。 利用了列表推导式,稍微有点难度,如果读者不擅长列表推导式,可以写成for循环形式。 文中的每一步编辑好代码之后需要在jupyter notebook中运行,这样可以保证每一步的独立正确性。

代码语言:javascript
复制
review_list = df['review'].tolist()
from bs4 import BeautifulSoup as bs
comment_list = [bs(k,'lxml').text for k in review_list]

3.去除标点并让所有字母小写

首先通过字符串的join方法,让一个列表转化为字符串,join方法前面的字符串表示列表中每个元素拼接成为一个字符串时的间隔符,例如如下图所示:

image.png

第1行代码all_comment = ' '.join(comment_list)就表示以空格为间隔符拼接评论列表。 第2-5行是通过正则表达式去除标点符号。 第6行是让所有的字母小写。

代码语言:javascript
复制
all_comment = ' '.join(comment_list)
import re
pattern = r'[^\w\s]'
replace = ''
all_comment = re.sub(pattern,replace,all_comment)
all_comment = all_comment.lower()

4.词频统计

首先引入collection中的Counter方法,Counter方法需要填入1个参数,参数的数据类型为列表。Counter方法的返回值数据类型是一个collections.Counter对象,集成了字典dict的一些特性。

代码语言:javascript
复制
from collections import Counter
word_list = all_comment.split(' ')
wordCount_dict = Counter(word_list)

打印count_dict的内容,如下图所示:

image.png

5.删除词频统计中的停顿词

停顿词文本文件stopwords.txt下载链接: https://pan.baidu.com/s/1ThD7Ay9glzX8Wml9nSmTbA 密码: bfbu

代码语言:javascript
复制
with open("stopwords.txt") as file:
    stopword_list = [k.strip() for k in file.readlines()]
for stopword in stopword_list:
    if stopword in wordCount_dict:
        wordCount_dict.pop(stopword)
wordCount_dict.pop('')

6.取出出现次数排名前200的单词

用到了sorted方法和lambda匿名函数,相关内容读者自己搜索其基础知识。

代码语言:javascript
复制
choices_number = 200
count_list = sorted(wordCount_dict.items(), key=lambda x:x[1],reverse=True)
count_list = count_list[:choices_number]
keyword_list = [k[0] for k in count_list]
value_list = [k[1] for k in count_list]

7.利用pyecharts库绘图

首先要安装pyecharts库,安装命令:pip install pyecharts wordcloud.add需要填入4个参数,第1个参数是标签,可以为空,第2个参数是出现的单词,第3个参数是单词对应的词频,第4个参数是词云上字体大小。

代码语言:javascript
复制
from pyecharts import WordCloud
wordcloud = WordCloud(width=800,height=500)
wordcloud.add('',keyword_list,value_list,word_size_range=[20,100])
wordcloud

8.绘画结果

image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.下载文件
  • 1.读取文件中的内容
  • 2.获得评论列表
  • 3.去除标点并让所有字母小写
  • 4.词频统计
  • 5.删除词频统计中的停顿词
  • 6.取出出现次数排名前200的单词
  • 7.利用pyecharts库绘图
  • 8.绘画结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档