查看原文
其他

B站 | "高铁互殴"视频词云图绘制

大邓 大邓和他的Python
2024-09-09

一、“高铁互殴”

最近「高铁互殴」是个热门话题, 身处局外, 信息是不全面的,没法做到客观公正。但看到大哥这个视频, 我自己是怕麻烦,不敢挺身而出的,所以很佩服东北大哥挺身而出这一行为,至于互殴双方对错与否不做评论。

5月2日四川成都,一名女孩独自乘坐高铁从老家到成都东,她座位后的三个座位一共坐了两个大人三个小孩,孩子在玩游戏时多次撞到女孩的椅背。女孩称自己忍了很多次,也回头进行劝说。孩子的妈妈对着女孩嘶吼说:他们是小孩子,你至于吗?孩子爸爸开始辱骂女孩,女孩回嘴时被孩子妈妈扇了一个耳光,女孩气不过回了手。一名东北大哥看不下去了,起身对双方进行劝说。事后女孩称对于东北大哥的热心出手,也是非常感谢。



二、数据采集

今天就用这个代码,采集视频 https://www.bilibili.com/video/BV1ys4y1g7qt/ 的评论和弹幕。

  • get_video_comments(bv, max_page=10, speed=1, encoding='utf-8') 获取评论
  • get_video_danmaku(bv, encoding='utf-8') 获取弹幕

这两函数在 网络爬虫(付费) | 使用Python采集B站弹幕和评论数据 内可以下载到的。

#每页有20个评论。据此计算页码数
get_video_comments(bv='BV1ys4y1g7qt'
                   max_page=250
                   speed=1
                   encoding='utf-8'

get_video_danmaku(bv='BV1ys4y1g7qt', encoding='utf-8'


三、数据分析

爬虫函数运行结束后,

以评论数据为例,

3.1 导入数据

import pandas as pd

df = pd.read_csv('comments_BV1ys4y1g7qt.csv')
df.head()


#记录数
len(df)
2585

3.2 词频统计

词频统计

import re
import jieba
#pyecharts版本2.0.1

#汇总文本
text = ''.join(df['comment'].tolist())

#清洗数据
text = ''.join(re.findall('[\u4e00-\u9fa5]+', text))

#分词
words = jieba.lcut(text)
words = [w for w in words if len(w)>=2]

#词频统计
wordfreqs = []
for word in set(words):
    freq = words.count(word)
    wordfreqs.append((word, freq))
    
#词频排序
wordfreqs = sorted(wordfreqs, key=lambda k:k[1], reverse=True)

#显示前20个
wordfreqs[:20]

Run

    [('大哥''766'),
     ('东北''519'),
     ('孩子''444'),
     ('这种''254'),
     ('一个''200'),
     ('小孩''199'),
     ('就是''195'),
     ('自己''175'),
     ('父母''155'),
     ('家长''154'),
     ('不是''148'),
     ('真的''146'),
     ('支持''136'),
     ('什么''133'),
     ('这样''127'),
     ('没有''126'),
     ('这个''125'),
     ('他们''120'),
     ('直接''112'),
     ('遇到''102')]

3.3 保存到xlsx中

词频统计保存到xlsx中

df2 = pd.DataFrame(wordfreqs, columns=['word''freq'])

#df2.to_csv('高铁互殴-词频统计.csv', index=False)
df2.to_excel('高铁互殴-词频统计.xlsx', index=False)
#显示前5个词
df2.head()


3.2 词云图

使用pyecharts(版本号2.0.1)绘制词云图,

import pyecharts.options as opts
from pyecharts.charts import WordCloud

#绘制词云图
wordfreqs = [(w, str(f)) for w,f in wordfreqs]
wc = WordCloud()
wc.add(series_name="", data_pair=wordfreqs, word_size_range=[20100])
wc.set_global_opts(
    title_opts=opts.TitleOpts(title="高铁互殴", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
                             ),
    tooltip_opts=opts.TooltipOpts(is_show=True))
wc.render("高铁互殴.html")  #存储位置

精选内容

管理世界 | 使用文本分析词构建并测量 短视主义

管理世界 | 使用 经营讨论与分析 测量 企业数字化指标

管理世界 | 用正则表达式、文本向量化、线性回归算法从md&a数据中计算 「企业融资约束指标

管理世界 | 政府与市场心理因素的经济影响及其测度

PNAS | 14000+篇心理学顶刊论文可复现性调研(含代码)

网络爬虫 | 使用Python采集B站弹幕和评论数据

可视化 | 绘制《三体》人物关系网络图

可视化 | 99-21年地方政府报告关键词变化趋势

可视化 | 文本数据分成n等份、词云图、情绪变化趋势、相似度变化趋势

文本分析 | 中国企业高管团队创新注意力(含代码)

文本分析 | MD&A 信息含量指标构建代码实现

金融研究 | 使用Python构建「关键审计事项信息含量」

使用 Word2Vec 和 TF-IDF 计算五类企业文化

如何用「图嵌入」将企业、高管职业经历表征为向量数据

Nature | 通用中英文六维语义情感词典

采购合同数据集 | 政府采购何以牵动企业创新

96G数据集 | 2亿条中国大陆企业工商注册信息

70G数据集 | 3571万条专利申请数据集(1985-2022年)

93G数据集 | 中国裁判文书网(2010~2021)

数据集 | 3.9G全国POI地点兴趣点数据集

数据集 | 「问询函」

数据集 | 07-21年上市公司「委托贷款公告」

单个csv文件体积大于电脑内存,怎么办?

网络爬虫 | 使用Python披露采集 Up 主视频详情信息

继续滑动看下一个
大邓和他的Python
向上滑动看下一个

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

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