前言
王冰冰2020年12月31日在B站发布了第一个视频,一天时间里关注破百万。
各位老色批们在冰冰第一个视频的弹幕里都说了啥?
用爬虫采集到了冰冰第一个视频的全部弹幕,下面我们来分析一下。
需要提前声明的是,截止写这篇文章时,冰冰视频显示有13.4w弹幕,但是B站通过接口暴露出的弹幕只有1000多条。(可以指定查询弹幕时间,但是基本每天暴露的数据都是相同的,如果全部采集再去重也还是1000条左右,故本文中仅仅采集了一天的弹幕进行分析)
分析
导入依赖
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
画图方法
将数据处理好以后,使用下面两个方法将数据展示出来。
# 画图
def draw_bar(df, num):
print('numdddddd', num)
# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
rects_fig = plt.bar(range(num), list(df.values), color='b', tick_label=list(df.keys()))
add_labels(rects_fig)
plt.show()
# 给每个柱添加标签(在柱状图上面显示数字)
def add_labels(rects):
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width()/2, height+0.01*height, height, ha='center', va='bottom', fontsize=14, color='red')
rect.set_edgecolor('white')
数据格式
将采集的数据写到了csv文件中,样式如下
def show():
df = pd.read_csv('./csv/dm.csv')
print(df.head())
1.统计每种弹幕数量
这里仅统计了发送数量前十的弹幕
def anal():
df = pd.read_csv('./csv/dm.csv')
df = df[['弹幕发送时间', '弹幕出现时间', '弹幕内容']]
df = df['弹幕内容'].value_counts()
draw_bar(df.head(10), 10)
这次一定居然名列榜首,求一键三连却总是得到下次一定回复的up主们哭晕在厕所。
排名第一的弹幕居然是这次一定,这是我没有想到了。果然大家对自己“老婆”的视频还是丝毫不吝啬一键三连的。
然后像“加大力度”、“老婆”、“我的心是冰冰的”、“冰冰”等弹幕更是将各位铹铯铍的内心暴露无遗。
这个统计还有优化的空间,可以对意思相近弹幕进行合并,比如[哈哈哈哈]和[哈哈哈]等可以进行合并展示。
2.统计不同时段弹幕数量
冰冰第一支vlog总时长342秒。每30s划分一个时段,对每个时段弹幕数量作如下统计
# 按照时间范围分组统计每个时间段内弹幕数量
def anal_date_range():
df = pd.read_csv('./csv/dm.csv')[['弹幕出现时间']]
group_num = int(df.max() // 30 + 1)
bins = [(x) * 30 for x in range(group_num+1)]
se1 = pd.cut(df['弹幕出现时间'], bins, right=False)
res = pd.value_counts(se1).sort_index()
draw_bar(res, group_num)
统计结果:
未完待续!!!