一、什么是词云图?

词云图是一种用来展现高频关键词的可视化表达,通过文字、色彩、图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息。

制作词云图的网站有很多,简单方便,适合小批量操作。

BI软件如Tableau、PowerBI也可以做,当然相比较web网站复杂一点。

在编程方面,JavaScript是制作词云图的第一选择,像D3、echarts都非常优秀。

python也有不少可视化库能制作词云图,这次我们尝试使用pyecharts。

先上效果图:

二、pyecharts介绍

pyecharts是基于echarts的python库,能够绘制多种交互式图表。

这次使用的pyecharts版本是1.7.1,python版本是3.6。

pyecharts提供了多种个性化配置方案,可以按需选择。

# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
series_name: str,# 系列数据项,[(word1, count1), (word2, count2)]
data_pair: Sequence,# 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
shape: str = "circle",# 自定义的图片(目前支持 jpg, jpeg, png, ico 的格式,其他的图片格式待测试)
# 该参数支持:
# 1、 base64 (需要补充 data 头);
# 2、本地文件路径(相对或者绝对路径都可以)
# 注:如果使用了 mask_image 之后第一次渲染会出现空白的情况,再刷新一次就可以了(Echarts 的问题)
# Echarts Issue: https://github.com/ecomfe/echarts-wordcloud/issues/74
mask_image: types.Optional[str] = None,# 单词间隔
word_gap: Numeric = 20,# 单词字体大小范围
word_size_range=None,# 旋转单词角度
rotate_step: Numeric = 45,# 距离左侧的距离
pos_left: types.Optional[str] = None,# 距离顶部的距离
pos_top: types.Optional[str] = None,# 距离右侧的距离
pos_right: types.Optional[str] = None,# 距离底部的距离
pos_bottom: types.Optional[str] = None,# 词云图的宽度
width: types.Optional[str] = None,# 词云图的高度
height: types.Optional[str] = None,# 允许词云图的数据展示在画布范围之外
is_draw_out_of_bound: bool = False,# 提示框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,# 词云图文字的配置
textstyle_opts: types.TextStyle = None,# 词云图文字阴影的范围
emphasis_shadow_blur: types.Optional[types.Numeric] = None,# 词云图文字阴影的颜色
emphasis_shadow_color: types.Optional[str] = None,

和其他可视化库不一样,pyecharts支持链式调用。

也就是说添加图表元素、修改图表配置,只需要简单的调用组件即可。

下面来个示例:

# 导入WordCloud及配置模块
from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType# 添加词频数据
words = [("Sam S Club", 10000),("Macys", 6181),("Amy Schumer", 4386),("Jurassic World", 4055),("Charter Communications", 2467),("Chick Fil A", 2244),("Planet Fitness", 1868),("Pitch Perfect", 1484),("Express", 1112),("Home", 865),("Johnny Depp", 847),("Lena Dunham", 582),("Lewis Hamilton", 555),("KXAN", 550),("Mary Ellen Mark", 462),("Farrah Abraham", 366),("Rita Ora", 360),("Serena Williams", 282),("NCAA baseball tournament", 273),("Point Break", 265),
]# WordCloud模块,链式调用配置,最终生成html文件
c = (WordCloud().add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond")).render("wordcloud_diamond.html")
)

生成词云图:

三、商品评论词云图

为了更好地展示pyecharts的词云可视化效果,我找了淘宝商品评论数据集,更贴近应用场景。

代码的流程主要是:数据加载、分词处理、词频统计、词云展示

1、数据加载

数据集共有10 个商品类别(书籍、平板、手机、水果、洗发水、热水器、蒙牛、衣服、计算机、酒店)。

共 6 万多条评论数据,正、负向评论各约 3 万条,我们要用的就是字段review-评论数据。

代码分模块实现不同功能,首先导入相关库:

import pandas as pd
import jieba
from collections import Counter
import pyecharts.options as opts
from pyecharts.charts import WordCloud

接着加载数据,提取文本:

def get_text(goods,evaluation):if evaluation == '好评':evaluation = 1else:evaluation = 0path = 'comments.csv'with open(path,encoding='utf-8') as f:data = pd.read_csv(f)# 商品种类types = data['cat'].unique()# 获取文本text = data[(data['cat']==goods)&(data['label']==evaluation)]['review'].values.tolist()text = str(text)[1:-1]print(types)return text

2、分词处理

因为评论数据是一段段完整的话,所以要进行词云展示的话肯定得先分词。

这里用的分词库是jieba,而且添加了停用词库,目的是去除符号、副词等无意义词汇。

def split_word(text):word_list = list(jieba.cut(text))# 去掉一些无意义的词和符号,我这里自己整理了停用词库with open('停用词库.txt') as f:meaningless_word = f.read().splitlines()# print(meaningless_word)result = []# 筛选词语for i in word_list:if i not in meaningless_word:result.append(i.replace(' ', ''))return result

3、词频统计

分完词后,需要对词进行频数统计,这里用到collection模块的Counter方法。

然后筛选出词频数排名前1000的词汇,你也可以自行调整。

def word_counter(words):# 词频统计,使用Count计数方法words_counter = Counter(words)# 将Counter类型转换为列表words_list = words_counter.most_common(2000)return words_list

4、词云展示

最后一步使用wordcloud模块对整理好的数据进行可视化展示。

def word_cloud(data):(WordCloud().add(series_name="热点分析",# 添加数据data_pair=data,# 字间隙word_gap = 5,# 调整字大小范围word_size_range=[15, 80],shape="cursive",# 选择背景图,也可以不加该参数,使用默认背景mask_image='购物车.jpg').set_global_opts(title_opts=opts.TitleOpts(title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)),tooltip_opts=opts.TooltipOpts(is_show=True),)# 输出为html格式.render("basic.html"))

上面代码里的背景图可以自己选择,最好是大轮廓的图,因为细节展示不出来。

几个处理函数都写好了,下面来执行结果:

def main(goods,evaluation):text = get_text(goods,evaluation)words = split_word(text)data = word_counter(words)word_cloud(data)if __name__ == '__main__':# 商品种类:书籍、平板、手机、水果、洗发水、热水器、衣服、计算机、酒店# 评论种类:好评、差评main('手机','好评')

提醒一下,main函数的两个参数,分别是商品类型和评价类型,你可以自定义组合,然后就会生成该组合的词云图。

用购物车背景图展示手机+好评组合的词云图:

用淘宝背景图展示计算机+好评组合的背景图:

用浴缸背景图展示酒店+差评组合的背景图:

用书本背景图展示书籍+好评组合的背景图:

四、结论

这里的展示仅仅为了教大家如何去使用pyecharts制作词云,真正的商业用途上需要更加清晰简洁的表达,在设计层面也要更多的考量。

获取代码、数据集:

链接:https://pan.baidu.com/s/1smEvDD-xdYV-r_LrbZG8EQ

提取码:5qqb

●如何用Python画一只机器猫?

●教你用Python玩转histogram直方图

●聊聊 Python 自动化脚本打包成 APK

●Python破姐同事的加密压缩包!

●Python计算出小姐姐的颜值数,看看你的女神颜值多少

使用Python绘制淘宝商品评论词云图相关推荐

  1. 【实战】使用pyecharts绘制词云图-淘宝商品评论展示

    文章来源于Python大数据分析,作者朱卫军 一.什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字.色彩.图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息. 制作词云图 ...

  2. echarts词云图形状_使用pyecharts绘制词云图-淘宝商品评论展示

    一.什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字.色彩.图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息. 制作词云图的网站有很多,简单方便,适合小批量操作. BI ...

  3. Python爬虫,抓取淘宝商品评论内容

    2019独角兽企业重金招聘Python工程师标准>>> 作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用pytho ...

  4. python抓取淘宝商品评论最新版

    python抓取淘宝商品评论最新思路 import json import re from lxml import etree import pandas as pd import time impo ...

  5. 淘宝/天猫API,获得淘宝商品评论返回值说明(数据解析)

    item_review-获得淘宝商品评论 公共参数 请求地址: https://console.open.onebound.cn/console/?i=Anzexi 名称 类型 必须 描述 key S ...

  6. 淘宝/天猫API,获得淘宝商品评论(返回值说明)

    item_review-获得淘宝商品评论 公共参数 请求地址: https://console.open.onebound.cn/console/?i=Anzexi 名称 类型 必须 描述 key S ...

  7. 爬取淘宝商品评论信息

    爬取淘宝商品评论信息 近期学期需求,需要获取部分商品的评价信息.在此记录本次学习的过程. 找到URL 由于这是一个动态网页,因此需要找到评论实际的URL 首先进入你需要的商品的页面,按F12进入开发者 ...

  8. python十角星_使用 Python 绘制《星战》词云

    作者介绍 Rafael Schultze-Kraft "前神经科学家,数据挖掘及机器学习的狂热爱好者,Python 的狂热粉丝" 使用 Python 绘制<星战>词云 ...

  9. 基于Python的特定形状透明背景词云图绘制

    基于Python的特定形状透明背景词云图绘制 1.需求分析 2.前期准备 2.1文本文件准备 2.2特定形状图片准备 3.代码解析与实现 3.1模块库的导入 3.2停用词表 3.3基于TF-IDF提取 ...

  10. python image stiching_Python自然语言处理,词云图生成

    自然语言处理 本节介绍如何使用Python中的库,生成词云图,涉及自然语言处理的相关问题,自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的 ...

最新文章

  1. 时间和邮箱的正则表达式,获取当前时间函数
  2. PL/SQL在win7/win8 x64位下使用客户端连接oracle
  3. jseclipse 是eclipse插件,让你编写js代码感觉更爽
  4. python中item是什么类型的游戏_文本冒险游戏(Python)中的Item类
  5. mysql系列:加深对脏读、脏写、可重复读、幻读的理解
  6. openstack添加热添加硬盘并识别
  7. Docker:易于构建,运行,完成!
  8. 数据库-MySQL-高级查询-IN通配符LIKE
  9. java.lang.classcastexception怎么解决_java.lang.LinkageError:ClassCastException
  10. 【Python】 [基础] 条件判断 与 循环 与dict和set
  11. SQL SERVER 2008筛选时报错 无法为该请求检索数据
  12. 拿3000工资与30000工资的区别,5张聊天记录让你醍醐灌顶
  13. 能韬光养晦,是因为面前有苏联顶着,苏联没了就不可能了
  14. 浅谈大学综合能源服务
  15. tftp服务器怎么开启linux,启动Linux下的TFTP服务器
  16. 幻想三国android官方版,幻想三国ol官方版
  17. Google C++ 风格指南-转载自 http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/
  18. Pytorch中pack_padded_sequence和pad_packed_sequence的理解
  19. 国家一级建造师—工程经济—第一章—第四节
  20. 今天是我的生日,也是我的离职日!

热门文章

  1. 蚂蚁课堂视频笔记思维导图-3期 七、互联网高并发解决方案
  2. USBCAN、CAN分析仪、CANCANFD综合测试分析软件LKMaster主要功能一览
  3. 如何将dwg文件转成kml文件
  4. android 不限速迅雷,安卓iOS,Windows和Mac四大系统迅雷不限速神器,今天全部解决了...
  5. 台达伺服b3参数_恩阳台达B3系列伺服安装
  6. fortran快速入门
  7. NB-IOT平台之电信平台FOTA 升级记录
  8. 莫兰迪紫rgb_莫兰迪色系颜色大全 莫兰迪色系适合什么人
  9. bootdo框架切换tab标签时自动刷新,无需手动刷新
  10. 啊哈c语言逻辑的挑战课后题答案,啊哈C语言 逻辑的挑战(修订版)pdf