打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
B站2020跨年晚会,被弹幕刷屏的节目是?发弹幕最多的人又是谁?


 CDA数据分析师 出品  

Show me data,用数据说话,今天继续聊聊 B 站跨年晚会的弹幕

上一期 B 站晚会的视频,我们聊了聊B站2020跨年晚会中的亮点和弹幕词云。

上期视频如下

点击播放:

本以为薛之谦粉丝会觉得不妥给C君留言指正,没想到却是被数据分析爱好者从内容上提出了严厉的批评。

垃圾标题党。我以为收集的数据是与春晚观看人数,成本之类的对比,结果搞了个收集评论。还起了个这个的标题,误人子弟。

我们听取了这位朋友的意见,首先就让我们来看看B 站晚会跟各卫视晚会的收视对比

本期视频

点击下方视频,先睹为快:

收视率对比播放率

1


截至2020年1月7日,B站跨年晚会在B站评分为9.9,播放量达6900万。而据CSM统计,湖南卫视跨年晚会未去重播放量约为两亿、江苏卫视为3,456万、浙江卫视为3,314万。

这么看起来,第一次办跨年晚会的 B 站成功挤进前三名,恭喜!

春晚播放对比B站晚会

2


如果再放到跟春晚比比的话。2019年春晚通过电视、广播、互联网、社交媒体多渠道多终端传播,海内外收视观众总规模达11.73亿人

在老大哥春晚面前,B 站还是个弟弟,不过C君觉得春晚很多时候都是大家开着在那儿当背景音乐的,要的就是那个氛围。

好啦,收视率播报完毕。

接下来,还是说回这位听众的回复:

垃圾标题党。我以为收集的数据是与春晚观看人数,成本之类的对比,结果搞了个收集评论。还起了个这个的标题,误人子弟。

末尾这句「误人子弟」,必须要在这里纠正一下。

数据≠数字

C君相信这也是很多朋友的一个误区,就是:数据就是数字。

但其实在数据分析所指的数据,不只是观看人数1234万,收视率12.34%,或者成本1234亿,除了这些阿拉伯数字还包括文本数据,像是评论,弹幕,都是非常好的数据。

而且C君相信 B 站这场跨年晚会做的这么成功的原因也是在这方面的数据分析做的特别好,因为你可以通过播放量看到某某明星视频特别火,但是具体火的梗是什么,你得去分析文本数据,然后结合这些梗来做设计更能打动观众。

这一期,C君特意加了一些代码讲解,顺便也给各位春晚导演们上一堂基础 Python 数据分析课,我们看看 B 站是怎么戳中观众内心的

弹幕最多的节目是?

3


首先,我们先看结果。这是我们对 B 站跨年晚会《第一章:日落》的数据分析可视化展示

大家猜猜弹幕最多的节目是什么?

公布答案:

弹幕最多的节目是《钢铁洪流进行曲》第二多的是演奏名侦探柯南主题曲的时候。

弹幕最多的时候,大家在说什么?

4


比如,比如中国,比如云飞兄,比如此生无悔入华夏等等。

那整个第一章,最多的弹幕是什么呢?

最多的词有像「吸吸」、「红」、「补课」

「吸吸」是什么时候出现的呢?

我们可以看到是2400秒的时候。那会儿正是冯提莫唱《好运来》的时候。

谁最喜欢发弹幕?

5


我们看到他发的内容,是基德琴酒柯南等等,我基本就可以判断他是个柯南迷。

我们看一下他的主页,你可以看到确实是看了晚会,投很多币,然后还收藏着柯南的视频。

那这些到底怎么实现的?

6


我们来打开软件实操看一下。比如实现词云的方法:

# 文本分析工具包
import pandas as pd
import collections
from bs4 import BeautifulSoup
import os
import time
# 画图工具包
from pyecharts.charts import Line
import pyecharts.options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.charts import Page
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
from pyecharts.globals import ThemeType
# 分词工具包
import jieba
import jieba.analyse
# 文件路径
data_path='HTMLFiles/chapter_01/'
danmu_files = os.listdir(data_path)

# 获取弹幕
def get_danmu(danmu_file):
    path = data_path+danmu_file
    htmlfile = open(path, 'r', encoding='utf-8')
    htmlhandle = htmlfile.read()
    soup = BeautifulSoup(htmlhandle, 'lxml')
    results = soup.find_all('d')
    # print(results)
    # exit()
    # p 标签的数据全部内容
    comments_info = [info.attrs['p'for info in results]
    # 分别取出所有数据内容
    danmu_time_from_begin = [info.attrs['p'].split(',')[0for info in results]
    danmu_time_to_send = [info.attrs['p'].split(',')[4for info in results]
    danmu_user_id = [info.attrs['p'].split(',')[6for info in results]
    danmu_id = [info.attrs['p'].split(',')[7for info in results]
    comments = [comment.text for comment in results]
    # 将数据内容直接存入数据库或者以 pandas DataFrame 的形式打印出来
    comments_dict = {'comments': comments, 'danmu_time_from_begin': danmu_time_from_begin, 'danmu_user_id':danmu_user_id,'danmu_time_to_send': danmu_time_to_send, 'danmu_id': danmu_id}
    df = pd.DataFrame(comments_dict)
    return df

def get_all_danmu():
    all_df = pd.DataFrame()
    for danmu_file in danmu_files:
        df = get_danmu(danmu_file)
        all_df = pd.concat([all_df, df], ignore_index=True)
    print('全部弹幕数据数据加载中……')
    return all_df

# 弹幕内容分词
df = get_all_danmu()
# print(df.head())
# df['comments']
# exit()
def bili20_wordcloud(df,mytitle='B 站2020跨年晚会弹幕词云图'):
    # 加载自己的词库
    jieba.load_userdict('CSVFiles/danmu_words_dict.txt'#filename为文件路径
    # jieba.analyse.set_stop_words('CSVFiles/stop_words.txt')
    stopwords = [line.strip() for line in open('CSVFiles/stop_words.txt').readlines()]
    # print(stopwords)
    # exit()
    # stopwords = ['啊啊啊']
    replace_words={'吸':'吸吸','报到':'报道','二号':'2号','红红':'红',
                   '周董':'周杰伦','牛批':'牛逼','牛b':'牛逼','牛B':'牛逼','nb':'牛逼','NB':'牛逼','流批':'牛逼','牛':'牛逼','太牛':'牛逼','牛哔':'牛逼',
                   '゜':'(゜ -゜)つロ 乾杯~','乾杯':'(゜ -゜)つロ 乾杯~','bilibili':'B站','b站':'B站','打Call':'打call','打CALL':'打call','打电话':'打call'
                   }

    # 保存全局分词,用于词频统计
    segments = []

    for index, row in df.iterrows():
        content = row[0]
        # print(content)
        #TextRank 关键词抽取,只获取固定词性
        words = jieba.__lcut(content)
        # words = jieba.analyse.textrank(content, topK=20,withWeight=False)
        splitedStr = ''
        for word in words:
            word = word.strip()
            #停用词判断,如果当前的关键词不在停用词库中才进行记录
            if word in replace_words:  # 将某些在文中人物的昵称替换成正式的名字
                word = replace_words[word]
            if word not in stopwords:
                # 记录全局分词
                segments.append({'word':word, 'count':1})
                splitedStr += word + ' '

    # 将结果数组转为df序列
    dfSg = pd.DataFrame(segments)
    # 词频统计
    seg_count = dfSg.groupby('word')['count'].sum()
    seg_count = pd.DataFrame(seg_count)
    seg_count.sort_values(by='count', ascending=False, inplace=True)
    seg_count.reset_index(inplace=True)
    # print(seg_count)
    # exit()
    # word = WordCloud(init_opts=opts.InitOpts(theme=ThemeType.BUILTIN_THEMES))
    word = WordCloud(init_opts=opts.InitOpts())
    word.add("", [*zip(list(seg_count['word']), list(seg_count['count']))], shape=SymbolType.ARROW ,word_size_range=[20100])
    word.set_global_opts(title_opts=opts.TitleOpts(title=mytitle),
                        toolbox_opts=opts.ToolboxOpts())
    print('词云图已经生成')
    return word

word_all_danmu = bili20_wordcloud(df,mytitle='B 站2020跨年晚会弹幕词云图')

Show me data,用数据说话。B 站跨年晚会第1章弹幕的数据分析,今天就聊到这里。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
「爬虫 情感判定 Top10高频词 词云图」热门弹幕python舆情分析
你相信逛B站也能学编程吗?
让弹幕飞一会儿——腾讯视频弹幕(39W )爬取实战
Shifterator库 | 词移图分辨两文本用词风格差异
bilibili_api,仅用 3 行代码获取B站(弹幕、评论、用户)数据
利用Python做一个漂亮小姐姐词云跳舞视频
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服