Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

Stella981
• 阅读 772

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

归山深浅去,须尽丘壑美。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

图片来源:豆瓣

最近由腾讯视频、 爱奇艺 联合出品综艺《哈哈哈哈哈》(又名五哈) 话题不断, 节目中由邓超、陈赫、鹿晗组成的兄弟旅行团,开启了一段由东到西穿越中国的真实旅行。 作为首个双平台联播的超级网综 , 给广大观众带来了无限欢乐,妥妥登上了综艺热搜榜第一。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

腾讯视频综艺热搜TOP3

本文通过爬取腾讯视频《哈哈哈哈哈》47687条弹幕,进行可视化分析和情感分析,完整代码后台回复「哈哈哈哈哈」即可自动获取。

01

数据获取

《哈哈哈哈哈》目前已播出10期,本文爬取了第10期上下两篇弹幕。弹幕数据爬虫在往期原创文章中已详细讲解,本文不做赘述,以下给出完整代码:

#-*- coding = uft-8 -*-#@Time : 2021/1/20 20:35#@Author : 公众号 菜J学Python#@File : 哈哈哈哈哈.pyimport requestsimport jsonimport timeimport pandas as pddf = pd.DataFrame()for page in range(15, 3973, 30):    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}    url = 'https://mfm.video.qq.com/danmu?otype=json&timestamp={}&target_id=6384458060%26vid%3Dd0035ka5c02&count=80'.format(page)    print("正在提取第" + str(page) + "页")    html = requests.get(url,headers = headers)    bs = json.loads(html.text,strict = False)  #strict参数解决部分内容json格式解析报错    time.sleep(1)    #遍历获取目标字段    for i in bs['comments']:        name = i['opername']    #昵称        content = i['content']  #弹幕        upcount = i['upcount']  #点赞数        user_degree =i['uservip_degree'] #会员等级        timepoint = i['timepoint']  #发布时间        comment_id = i['commentid']  #弹幕id        cache = pd.DataFrame({'用户名':[name],'弹幕':[content],'会员等级':[user_degree],                              '发布时间':[timepoint],'弹幕点赞':[upcount],'弹幕id':[comment_id]})        df = pd.concat([df,cache])df.to_csv('haha-1.csv',encoding = 'utf-8')print(df.shape)

02

数据处理

1.数据读取并预览

首先,将两个弹幕csv文件进行数据合并,采用concat方法。

import pandas as pdimport numpy as npdf1 = pd.read_csv("/菜J学Python/弹幕/腾讯/哈哈哈哈哈/haha-1.csv")df1["期数"] = "10期上"df2 = pd.read_csv("/菜J学Python/弹幕/腾讯/哈哈哈哈哈/haha-2.csv")df2["期数"] = "10期下"df = pd.concat([df1,df2])df.sample(10)

抽样10条弹幕数据,预览效果如下:

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

2.查看数据信息

df.info()



<class 'pandas.core.frame.DataFrame'>Int64Index: 47687 entries, 0 to 21820Data columns (total 8 columns): #   Column      Non-Null Count  Dtype ---  ------      --------------  -----  0   Unnamed: 0  47687 non-null  int64  1   用户名         13433 non-null  object 2   弹幕          47687 non-null  object 3   会员等级        47687 non-null  int64  4   发布时间        47687 non-null  int64  5   弹幕点赞        47687 non-null  int64  6   弹幕id        47687 non-null  int64  7   期数          47687 non-null  objectdtypes: int64(5), object(3)memory usage: 3.3+ MB

发现数据存在以下几个问题:

(1)字段名称可调整

(2)Unnamed、弹幕id字段多余

(3)用户名字段有缺失值,可填充

(4)发布时间字段类型需要调整

3.数据清洗

#重命名字段df = df.rename(columns={'用户名':'用户昵称','弹幕':'弹幕内容','发布时间':'发送时间','评论点赞':'弹幕点赞','期数':'所属期数'})#过滤不需要的字段df = df[["用户昵称","弹幕内容","会员等级","发送时间","弹幕点赞","所属期数"]]#缺失值填充df["用户昵称"] = df["用户昵称"].fillna("无名氏")

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

清洗后,数据预览如下:

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

03

数据可视化

1.弹幕在讨论些什么

通过对4万+弹幕制作词云图,我们发现,弹幕中出现频率较高的词汇有「哈哈哈、鹿晗、晨艺、虞书欣」等。这综艺的初衷,是让观众在看节目的过程中频繁大笑,由弹幕可知,效果还是很明显的。鹿晗在这一期表现亮眼,躺赢刺杀游戏,被很多观众夸赞。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

#绘制词云图text1 = get_cut_words(content_series=df['弹幕内容'])stylecloud.gen_stylecloud(text=' '.join(text1), max_words=200,                          collocations=False,                          font_path='simhei.ttf',                          icon_name='fas fa-video',                          size=653,                          #palette='matplotlib.Inferno_9',                          output_name='./haha.png')Image(filename='./haha.png') 

2.弹幕里都提到了谁

鹿晗被观众提及7329次,王晨艺3222次,张颜齐1632次。鹿晗的吸粉体质为这个综艺带来了较大的流量,而陈赫在最新一期的节目中似乎被一些观众遗忘。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

df8 = df["人物提及"].value_counts()[1:11]print(df8.index.to_list())print(df8.to_list())c = (    Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))    .add_xaxis(df8.index.to_list())    .add_yaxis("",df8.to_list())     .set_global_opts(title_opts=opts.TitleOpts(title="人物提及次数",subtitle="数据来源:腾讯视频 \t制图:菜J学Python",pos_left = 'left'),                       xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改横坐标字体大小                       yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改纵坐标字体大小                       )    .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='top'))    )c.render_notebook()

我们分别对六位主要提及演员进行词云图绘制,发现他们的人缘是真的好,几乎看不到负面的评价。陈赫的外号还挺多:赫赫、赫哥,不做词云我还不知道呢,看来J哥要补充知识点了。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

3.谁是弹幕发射机

每天都是小春日和共发射弹幕158条,遥遥领先其他弹幕党,名副其实的弹幕发射机。想太多de猫紧随其后,发射了97条弹幕,如果大家还有印象的话,他(她)还是《令人心动的offer》第2季弹幕发射机。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

df8 = df["用户昵称"].value_counts()[1:11]df8 = df8.sort_values(ascending=True)df8 = df8.tail(10)print(df8.index.to_list())print(df8.to_list())c = (    Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN,width="1100px",height="500px"))    .add_xaxis(df8.index.to_list())    .add_yaxis("",df8.to_list()).reversal_axis() #X轴与y轴调换顺序    .set_global_opts(title_opts=opts.TitleOpts(title="弹幕发送数量TOP10",subtitle="数据来源:腾讯视频 \t制图:菜J学Python",pos_left = 'left'),                       xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改横坐标字体大小                       yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改纵坐标字体大小                     #yaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":40})#更改纵坐标字体大小                       )    .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right'))    )c.render_notebook()

我们来看看弹幕发射机讨论了些啥,通过弹幕点赞数降序排列,筛选出点赞数最多的10条弹幕,弹幕内容几乎全为王勉相关内容,死忠粉无疑了。

df_first = df[df["用户昵称"]=="每天都是小春日和"]df_first.sort_values('弹幕点赞',inplace=True,ascending=False)df_first[:10]

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

04

情感分析

通过运用百度开源NLP对弹幕内容进行情感分值计算,我们发现,《哈哈哈哈哈》第1季情感分值整体高于0.6,观众表现出较高的积极倾向。情感分值变化趋势则表现为视频播放开始和中期高,播放快结束时有所下滑。

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

import paddlehub as hub#这里使用了百度开源的成熟NLP模型来预测情感倾向senta = hub.Module(name="senta_bilstm")texts = df['弹幕内容'].tolist()input_data = {'text':texts}res = senta.sentiment_classify(data=input_data)df['情感分值'] = [x['positive_probs'] for x in res]#重采样至15分钟df.index = df['发送时间']data = df.resample('15min').mean().reset_index()



import pyecharts.options as optsfrom pyecharts.charts import *from pyecharts.globals import ThemeType  c = (        Line(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))       .add_xaxis(data["发送时间"].to_list())       .add_yaxis('情感倾向', list(data["情感分值"].round(2)), is_smooth=True,is_connect_nones=True,areastyle_opts=opts.AreaStyleOpts(opacity=0.5))       #.add_yaxis('弹幕点赞',list(df["弹幕点赞"].round(2)), is_smooth=True,areastyle_opts=opts.AreaStyleOpts(opacity=0.5))       #.add_yaxis('会员等级',list(df["会员等级"].round(2)), is_smooth=True,areastyle_opts=opts.AreaStyleOpts(opacity=0.5))       .set_global_opts(title_opts=opts.TitleOpts(title="情感倾向",subtitle="数据来源:腾讯视频 \t制图:菜J学Python",pos_left = 'left'))    )c.render_notebook()

**********---**--****-------------- End **********---**--****--------------

往期精彩文章推荐:

Python分析《哈哈哈哈哈》47687条弹幕,看看大家都在说些啥!

欢迎大家点赞,留言,转发,转载,****感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Irene181 Irene181
3年前
盘点最重要的7个Python库
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书导读:对于那些对Python数据生态系统不太熟悉的人士,我将简要地介绍一部分重要的库。作者:韦斯·麦金尼(WesMcKinney)译者:徐敬来源:大数据DT(ID:hzdashuju)01NumPyhttp://numpy
Stella981 Stella981
3年前
Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤借问酒家何处有,牧童遥指杏花村。0前言    前几天给大家分别分享了(入门篇)简析Pythonweb框架FastAPI——一个比Flask和Tornada更高性能的API框
Stella981 Stella981
3年前
Python自带爬虫库urllib使用大全
击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤门前冷落鞍马稀,老大嫁作商人妇。这篇文章主要来讲解下Python自带的爬虫库urllib常见用法,主要围绕urllib定义、urllib的常用模块和urlliblxml爬虫案例三个部分进行展开。
Stella981 Stella981
3年前
Python爬取所有人位置信息,制作任意区域人流量显示图
击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤衣裳已施行看尽,针线犹存未忍开。最近偶然看到了腾讯的大数据星云图,非常漂亮,如下图:!(https://oscimg.oschina.net/oscnet/6dc6022d4dfb49
Stella981 Stella981
3年前
Python web开发从入门到放弃
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤无为之用方为大用。!(https://oscimg.oschina.net/oscnet/f64430c27950bcccce040bb032ea65e73a5.jpg)越来越多的同学知道我在做
可莉 可莉
3年前
10行Python代码自动清理电脑内重复文件,解放双手!
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤世间行乐亦如此,古来万事东流水。!(https://oscimg.oschina.net/oscnet/da5385ecbd59492aa127c14a1a5b807c.jpg)(h
Stella981 Stella981
3年前
30行Python代码来绘制一个微信图标
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤疾风知劲草,板荡识诚臣。!(https://oscimg.oschina.net/oscnet/a6229315ce691709916c9d7a27637d436ce.jpg)有一句至理
Stella981 Stella981
3年前
Python3 网络爬虫:下载小说的正确姿势
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤少年心事当拂云。!(https://oscimg.oschina.net/oscnet/09902b71501b9e8c3cb656b5dfbbb0552e0.jpg)1
Stella981 Stella981
3年前
Python中的基础数据类型(String,Number)及其常用用法简析
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤寄意寒星荃不察,我以我血荐轩辕。Python中的基础数据类型前言哈喽,各位小伙伴们,相信大家和我一样,在开始接触Python这门语言的时候,会遇到很多困
Wesley13 Wesley13
3年前
5 分钟掌握 Python 中的 Hook 钩子函数
击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤此曲有意无人传,愿随春风寄燕然。!(https://oscimg.oschina.net/oscnet/eb40675fe18343b98502990255057c76.jpg)1