利用Python进行词频统计并生成词云——以京东商城iphone13购物评论为例
本文介绍一种快速生成关键词-词频统计-词云生成的办法,作为Python数据分析初级技能,除基本运行环境外无需其他软件或工具,且流程搭建成功后可重复利用,可极大提升相似事务的处理效率。
一、操作环境
1.1 搭建Python运行环境,如尚未搭建建议下载安装Anaconda,并搭配Jupyter Notebook作为IDE
1.2 需加载pandas,jieba, pyecharts等常用包,直接输入pip install+包名称可能会很慢,建议搜索豆瓣镜像文件快速安装
1.3 数据源可以是现有文件或通过爬虫手段获取,需保证有足够的数据量
二、原始数据获取
本文以京东商城热销的"iphone 13"机型为例,从购买者发布的文字评论中提取关键词进行统计,所以原始数据即评论原文。通过爬虫手段获取最近1000条评论,并保存至本地csv文件,以下为字段预览:
三、Pandas读取文件
3.1 导入本次所需要用到的包:
import pandas as pd
import jieba
import pyecharts.options as opts
from pyecharts.charts import WordCloud
读取csv文件:
data = pd.read_csv(r'(文件路径).csv')
data.head()
成功读取数据:
查看评论数据是否异常:
data['评价内容'].describe()
一共1000条评论,没有重复(文字重复有极大的刷单嫌疑)
pandas能够用data[字段名]的方法选中特定字段,也可以通过loc[]选中特定行,比如[商品评价]字段中第1行数据:
data['评价内容'].loc[0] #0代表第1行数据
有了这个核心功能,才能在后面用循环语句把一个个支离破碎的单词放在一个列表里进行词频统计
四、分词
Jieba是目前最流行的中文分词组件,比如一句很常见的话:
“我是一个热爱祖国的中国人”
通过jieba可以根据中文语义把句子切分并提取出可作为关键词的单词:
jieba.lcut('我是一个热爱祖国的中国人')
Output[]: ['我', '是', '一个', '热爱祖国', '的', '中国', '人']
有了这样的关键词列表,后续做词频统计会更加方便
五、获取词频
5.1 获取全部的关键词列表
由于[商品评论]一共有1000行(本例子算少的),需要用jieba.lcut对每一行的评论原文都进行分词,因此使用for循环语句,并且用List的extend功能获取完整的关键词List:
review_all = [] #先做一个空List,用来装下所有关键词
for i in range(999): #已知一共1000条数据review = jieba.lcut(data['评价内容'].loc[i])review_all.extend(review)
review_all
Output[]:
['iPhone13',
'手机',
'收到',
'了',
',',
'粉色',
'也',
'太',
'好看',
'了',
'吧',
...]
5.2 对关键词总表进行单词词频统计
首先指定一份“非关键词”名单,比如逗号","可能出现的频次很高,但很明显,这不是我们需要的,可以用一个excludes表列出这类不需要的名单:
excludes = {",",":","“","。","”","、",";"," ","!","?"," ","\n", "iphone13", "13", "12"}
利用遍历对关键词出现次数做累计,并输出频次前100的关键词:
counts= {}
cloud_data = []
excludes = {",",":","“","。","”","、",";"," ","!","?"," ","\n", "iphone13", "13", "12"}
for word in review_all:if len(word) == 1: #不使用单字作为关键词continueelif word in excludes:continueelse:rword = wordcounts[rword] = counts.get(rword, 0) + 1items = list(counts.items())
items.sort(key=lambda x:x[1],reverse = True)
for i in range(100):word, count = items[i]cloud_data.extend([word, count])
cloud_data
Output[]:
['拍照',
930,
'效果',
844,
'速度',
839,
'运行',
792,
'屏幕',
758,
'外观',
731,
'音效',
631,
...]
六、生成词云
做词云图的方法有很多,这里推荐使用Pyecharts自带的WordCloud包,在Jupyter
Notebook可以直接输出动态html在页面上,可以灵活调整各项参数(参考官网说明书)。唯一的问题在于,上文我们得到的是一个包含关键词和频次的List,而Pyecharts词云如果要将列表作为参数直接使用,需要元组数据,即[(“关键词”:频次)]结构,因此需要多一步操作,可以使用for循环解决:
L = [] #做一个新的空List用来装下我们要用的元组
for i in range(199): #由于我们取Top100关键词+频次,所以一共是200个元素if i % 2 == 0:#偶数位[i]是我们需要的关键词,[i+1]即对应的频次a = cloud_data[i]b = cloud_data[i+1]tuple_x = tuple([cloud_data[i],cloud_data[i+1]])#List转元组L.append(tuple_x) #这里不能用extend,只能用append
L
Output[]:
[('拍照', 930),
('效果', 844),
('速度', 839),
('运行', 792),
('屏幕', 758),
('外观', 731),
('音效', 631),
('非常', 625),
('外形', 593),
('手机', 531),
('待机时间', 502),
('不错', 441),
('苹果', 395),
('好看', 365),
('流畅', 353),
('喜欢', 318),
...]
然后将L这个元组列表传到WordCloud()生成云图:
c = (WordCloud().add("", L, word_gap = 0, word_size_range=[10, 50], mask_image = r'(自定义图片路径)', rotate_step = 90, width = 2000, height = 2000, is_draw_out_of_bound = False).set_global_opts(title_opts=opts.TitleOpts(title=""), )
)
c.render_notebook()
Output:
公众号水印是本人的,非转载,部分代码片段参考网友的,循环以及List转tuple那段是自己手撕出来的,并尽可能说明原理,希望对初学者有帮助。
利用Python进行词频统计并生成词云——以京东商城iphone13购物评论为例相关推荐
- Pytorch 文本数据分析方法(标签数量分布、句子长度分布、词频统计、关键词词云)、文本特征处理(n-gram特征、文本长度规范)、文本数据增强(回译数据增强法)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本数据分析 学习目标: 了解文本数据分析的作用. 掌握常用的 ...
- python之红楼梦词频统计并生成图云
一共三个文件 Hlm.py stop_words.txt 红楼梦.txt (tips: txt文件已放在文章最后) 废话不多说,直接上效果图和代码: 效果图 Hlm.py 代码部分: import m ...
- 利用Python做一个漂亮小姐姐词云跳舞视频
最近不少小伙伴在学 Python,想找个好玩的练手项目. 那今天分享一个,简单,适合新手的 Python 小项目. 以下是具体项目: 本文将以哔哩哔哩–乘风破浪视频为例,you-get下载视频. 同时 ...
- python爬取微博数据词云_用Python爬取微博数据生成词云图片
原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...
- python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...
导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...
- 爬取qq音乐的评论并生成词云——以《听妈妈的话》为例
爬取qq音乐的评论并生成词云 我们选取的是歌曲的周杰伦的 听妈妈的话 先看效果图 首先,我们进去qq音乐找到这首歌 网易云出来挨打 https://y.qq.com/n/yqq/song/002hXD ...
- python统计段落单词词频_使用Python统计文件中词频,并且生成词云
wordcloud Table of Contents 1 怎样使用Python产生词云 from wordcloud import WordCloud import matplotlib.pyplo ...
- 利用python进行词频统计_利用python做词频计算(word-count)
主要针对英文文本做出词频计算,因为英文是用空格作为词语分割的.中文需要用到分词的库. 下面就用奥巴马的一片演讲做词频计算 1,分析的文本 speech_etxt = ''' My fellow cit ...
- 利用python做词频统计
方法一:利用python字典的方式 speech_etxt = ''' My fellow citizens: I stand here today humbled by the task befor ...
最新文章
- pytorch手写数字识别验证四流网络
- linux 删除文件反选
- P3600-随机数生成器【dp,数学期望】
- 在vimrc中设置record
- c语言字符串字节数函数,C语言字符,字符串,字节操作常用函数
- hash签名 java_java开发区块链只需150行代码
- 怎么查自己电脑服务器信息吗,怎么查看自己云服务器信息吗
- 机器学习 --- 3. 贝叶斯怎么想?(转)
- react navigation传值给上一页面
- java多线程读取分割的文件_java多线程批量读取文件(二)--读写分离
- matlab更改安全密钥,Linux下设置安全密钥登录
- 计算机如何恢复记事本,如何使用电脑桌面便签恢复误删除了的记事本数据内容?...
- 《DO圣堂刺客2》国服首测今天拉开
- HTML中想要看见盒子的边框,盒子边框装饰
- 统计学习——联合概率分布
- F450无人机组装与调试
- 汉字风格迁移篇--KAGAN:一种中国诗歌风格转换的方法
- 十字军之王3 盗版开启控制台
- jdk1.8的下载与安装教程
- 长难句结构分析最新经典一百句
热门文章
- [转载]感受欧洲电影
- android餐厅菜单功能,基于安卓Android平台餐馆点餐订餐系统的设计与实现(SQLite)...
- 很多年前用Excel vba写的一个mp3音乐播放器
- IPv6设置及使用方法
- 板卡上的日志缓冲区只可以记录1000条日志,当超过1000条记录时,新增的日志将覆盖旧的记录(是最旧的记录)
- 记一个错误:Spark job failed during runtime. Please check stacktrace for the root cause.
- TikTokSIM卡使用的三个小妙招
- 大型企业局域网监控的设计与实现
- 运维 03 Linux之文档与目录结构
- 什么是HOOKED上瘾模型?如何用其提升用户活跃和粘性?