写在前面
年前写了篇B站弹幕爬取的文章,说之后有时间分析一下弹幕中的热点,正好最近有时间,就来填坑吧。。
本文主要对B站《咒术回战》动漫第一集弹幕的数据进行分析及可视化,主要使用 python 的 pandas 对数据进行预处理, jieba 分词,pyecharts 可视化。数据集为简单整理后的,数据量 60000 条。
ok,话不多说,直接开整。

数据预处理
首先,查看数据集的一些信息,为了之后能够对数据集有个清晰地认识。
import pandas as pd
df = pd.read_csv('bilibili_clean.csv')
df.info()
![]() |
|---|
输出前五行。
df.head()
![]() |
|---|
通过上图可以看到, other_data 列中包含很多数据,并不是所有的数据都对后面的分析有帮助,我们将该列拆分,只保留我们需要的列。以第一行的数据为例。
‘351.52700,1,25,16777215,1601686748,0,b083a745,39082825228484615’
所需数据及含义:
351.52700 :弹幕的时间位置,基于视频长度,单位秒;
16777215 :弹幕颜色, 16777215 对应 0xFFFFFF ;
b083a745 :弹幕发送者的用户 id ;
# 将other_data列进行划分,并将需要的列添加到DataFrame中
split_df = df['other_data'].str.split(',', expand=True)
column_dict = [('video_time', 0), ('color', 3), ('user_id', 6)]
for col_name, index in column_dict:
df[col_name] = split_df[index]
# 删除other_data列
df.drop('other_data', axis=1, inplace=True)
df.head()
![]() |
|---|
这样就得到了及结构比较清晰的数据集,我们在绘制图形前,还会对数据进行的一些处理来使的图形绘制的更加方便。
弹幕长度分布条形图
添加一列 comment_length 来记录 comment 的长度,统计 comment 各长度出现的次数。使用 pyecharts 库绘制直方图。
# 添加一列comment_length来记录comment的长度
df['comment_length'] = df['comment'].map(lambda x: len(x))
length_series = df['comment_length'].value_counts()
length_series.sort_index(ascending=True, inplace=True)
# 评论长度列表(升序)
length_list = length_series.index.astype(int).tolist()
# 各长度对应出现次数列表
count_list = length_series.values.astype(int).tolist()
# 绘制直方图
from pyecharts import options as opts
from pyecharts.charts import Bar
chart = Bar()
chart.add_xaxis(length_list).add_yaxis("第一集", count_list, color='#DF0101').set_global_opts(
title_opts=opts.TitleOpts(title="弹幕长度分布"),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
).render("弹幕长度分布.html")
chart.render_notebook()
![]() |
|---|
观察图中信息,可以看出,随着长度的增加,弹幕的数量逐渐减少,大部分弹幕长度在10以内,这也比较符合我们的习惯,笔者发弹幕一般也是就几个字。。
弹幕颜色分布饼图
首先将十进制的颜色代码转为十六进制。之后绘制彩色代码的时候就可以按照颜色代码给扇形区域绘制对应的颜色。
import time
# 将color列的数据类型由“str”转为“int”, 数据格式由“十进制”转为“十六进制”
df['color'] = df['color'].astype(int).map

本文利用Python对B站《咒术回战》第一集弹幕数据进行预处理、分词和可视化分析,包括弹幕长度、颜色分布、时间关系、发送次数和热词词云。数据显示大部分弹幕长度在10个字符以内,颜色以白色为主,弹幕发送集中在视频开头、中间和结尾,且大部分用户只发送一条弹幕,热词词云揭示了弹幕中的高频词汇。




最低0.47元/天 解锁文章
3250





