查看原文
其他

来!左边跟我一起画个龙在你右边画一道彩虹~

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:钱梦璇

文字编辑:孙晓玲

技术总编:张   邯


爬虫俱乐部将于2020年1月5日至11日湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~

“心里的发/我想要带你回旮/在那深夜酒吧/哪管它是真是假…”,《野狼disco》真的太上头了!有人说它展现出了东北伤痕文化,有人说它是一首失落东北的诗与歌,但对大多数人来说,初闻不知曲中意,再听已是画龙人~就像宝石老舅所说:“懂这玩意干啥!唱就完了!”
小编在刷b站时,频频翻到这首歌,很多人在这首歌的视频下面评论,表达了对这首歌的看法。于是心血来潮,找到了一些热门评论,想要绘制一个词云图看看大家主要都在讨论什么。一起来看看吧~
热门评论如下所示(来源于b站):


对热门评论分词
首先导入标准库和扩展库对象:
import re #正则表达式模块 from collections import Counter #Counter是一个简单的计数器import jieba #中文分词库
collections是Python内建的一个集合模块,提供了许多有用的集合类,其中Counter是一个简单的计数器。
在分词之前,读入一些停用词。使用停用词的目的是将句子中无意义的词语删除,例如“的”“啊”“我们”等。
with open('stopwords.txt',encoding='UTF-8') as f:stop_words=[i.strip() for i in f.readlines()]
其中,readlines()方法用于读取所有行并返回一个列表,且该列表可以由Python的for... in ... 结构进行处理。字符串的strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
接下来,读取野狼disco评论,删除一些干扰字符以及长度为1的单词:
words=[] with open('野狼disco.txt',encoding='utf8') as comments: for line in comments: line=line.strip() #过滤数字、字母和一些其他的干扰字符 line=re.sub(r'[0-9A-Za-z.【】、一。,!~\*]','',line) line=jieba.lcut(line) #过滤长度为1的词 line=filter(lambda word:len(word)>1,line)#过滤停用词 if line not in stop_words: words.extend(line) print(words)
re正则表达式模块中,sub()函数用于检索与替换特定字符串,这里把数字、字母即一些无效的字符替换成空字符。Jieba.lcut(x,cut_all=True)是jieba库三种分词模式中的全模式,把句子中所有可以成词的词语都扫描出来,返回中文文本x分词后的列表变量,这里将评论内容进行了切词。

分词结果如下所示:


获取以上分词结果中出现次数最多的前100个单词:
topfreq_words=Counter(words).most_common(100)print(topfreq_words)

Counter计数器中的most_common()函数统计了单词出现的次数,函数参数100表明打印次数排名为前100的单词。如下所示:


绘制词云图
导入pyecharts库和词云图,封装一个函数并调用:
from pyecharts import options as optsfrom pyecharts.charts import WordCloud#封装函数def Word_Cloud(): wordcloud=( WordCloud() .add("", topfreq_words, word_size_range=[15, 105],shape='circle') .set_global_opts(title_opts=opts.TitleOpts(title="野狼disco-词云图",subtitle="b站评论")) ) return wordcloudWord_Cloud().render('E:\野狼disco-词云图.html')

add中的word_size_range表示词语的大小范围,shape定义了词云图的形状,这里选择“circle”类型。

词云图如下所示:




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
Selenium登录豆瓣
妙用正则表达式--Python中的re模块(二)
cngcode和cnaddress新鲜出炉!
数据可视化之地理图

“气功”研究哪家强

数据长、宽整型之另辟蹊径

10分钟带你走进宝藏数据库BvD

实战演练——爱婴医院中莆田系医院数据分析(一)

给你一个贴心的reshape应用

asrol命令——让你的描述性统计信息滚动起来

Python带你看文献—xpath抓取知网文献

您有一份天气预报待签收 

听说会Stata的人,数学不会太差?

批量修改路径

妙用正则表达式--Python中的re模块

豆瓣电影评分之数据爬取与可视化的实现 

为了辅导作业,这位家长竟然...

关于我们

微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存