Python爬取 冰冰 第一条B站视频的千条评论,绘制词云图,看看大家说了什么吧
B站当日弹幕获取
冰冰B站视频弹幕爬取原理解析
数据分析
import pandas as pd
data = pd.read_excel(r"bingbing.xlsx")data.head()
用户
性别
等级
评论
点赞
0
食贫道
男
6
[呆][呆][呆]你来了嘿!
158457
1
毕导THU
男
6
我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴
148439
2
老师好我叫何同学
男
6
[热词系列_知识增加]
89634
3
央视网快看
保密
6
冰冰来了!我们要失业了吗[doge][doge]
118370
4
厦门大学
保密
5
哇欢迎冰冰!!!
66196
数据预处理
数据描述
data.describe()
等级
点赞
count
1180.000000
1180.000000
mean
4.481356
2200.617797
std
1.041379
10872.524850
min
2.000000
1.000000
25%
4.000000
4.000000
50%
5.000000
9.000000
75%
5.000000
203.750000
max
6.000000
158457.000000
删除空值
data.dropna()
用户
性别
等级
评论
点赞
0
食贫道
男
6
[呆][呆][呆]你来了嘿!
158457
1
毕导THU
男
6
我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴
148439
2
老师好我叫何同学
男
6
[热词系列_知识增加]
89634
3
央视网快看
保密
6
冰冰来了!我们要失业了吗[doge][doge]
118370
4
厦门大学
保密
5
哇欢迎冰冰!!!
66196
...
...
...
...
...
...
1175
黑旗鱼
保密
5
11小时一百万,好快[惊讶]
5
1176
是你的益达哦
男
6
冰冰粉丝上涨速度:11小时107.3万,平均每小时上涨9.75万,每分钟上涨1625,每秒钟...
5
1177
快乐风男崔斯特
男
4
军训的时候去了趟厕所,出来忘记是哪个队伍了。看了up的视频才想起来,是三连[doge][滑稽]
5
1178
很认真的大熊
男
5
我觉得冰冰主持春晚应该问题不大吧。[OK]
5
1179
飞拖鞋呀吼
保密
5
《论一个2级号如何在2020年最后一天成为百大up主》
5
1180 rows × 5 columns
删除空值
data.drop_duplicates()
用户
性别
等级
评论
点赞
0
食贫道
男
6
[呆][呆][呆]你来了嘿!
158457
1
毕导THU
男
6
我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴
148439
2
老师好我叫何同学
男
6
[热词系列_知识增加]
89634
3
央视网快看
保密
6
冰冰来了!我们要失业了吗[doge][doge]
118370
4
厦门大学
保密
5
哇欢迎冰冰!!!
66196
...
...
...
...
...
...
1175
黑旗鱼
保密
5
11小时一百万,好快[惊讶]
5
1176
是你的益达哦
男
6
冰冰粉丝上涨速度:11小时107.3万,平均每小时上涨9.75万,每分钟上涨1625,每秒钟...
5
1177
快乐风男崔斯特
男
4
军训的时候去了趟厕所,出来忘记是哪个队伍了。看了up的视频才想起来,是三连[doge][滑稽]
5
1178
很认真的大熊
男
5
我觉得冰冰主持春晚应该问题不大吧。[OK]
5
1179
飞拖鞋呀吼
保密
5
《论一个2级号如何在2020年最后一天成为百大up主》
5
1179 rows × 5 columns
可视化
点赞TOP20
df1 = data.sort_values(by="点赞",ascending=False).head(20)
from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.faker import Faker c1 = ( Bar() .add_xaxis(df1["评论"].to_list()) .add_yaxis("点赞数", df1["点赞"].to_list(), color=Faker.rand_color()) .set_global_opts( title_opts=opts.TitleOpts(title="评论热度Top20"), datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], ) .render_notebook())c1
等级分布
data.等级.value_counts().sort_index(ascending=False)
6 1655 5024 3123 1382 63Name: 等级, dtype: int64
from pyecharts import options as optsfrom pyecharts.charts import Piefrom pyecharts.faker import Faker c2 = ( Pie() .add( "", [list(z) for z in zip([str(i) for i in range(2,7)], [63,138,312,502,165])], radius=["40%", "75%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="等级分布"), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render_notebook())c2
性别分布
data.性别.value_counts().sort_index(ascending=False)
from pyecharts import options as optsfrom pyecharts.charts import Piefrom pyecharts.faker import Faker c4 = ( Pie() .add( "", [list(z) for z in zip(["男","女","保密"], ["404",'103','673'])], radius=["40%", "75%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="性别分布"), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) .render_notebook() )c4
绘制词云图
from wordcloud import WordCloudimport jiebafrom tkinter import _flattenfrom matplotlib.pyplot import imreadfrom PIL import Image, ImageDraw, ImageFontimport matplotlib.pyplot as pltwith open('stoplist.txt', 'r', encoding='utf-8') as f: stopWords = f.read()with open('停用词.txt','r',encoding='utf-8') as t: stopWord = t.read()total = stopWord.split() + stopWords.split()def my_word_cloud(data=None, stopWords=None, img=None): dataCut = data.apply(jieba.lcut) # 分词 dataAfter = dataCut.apply(lambda x: [i for i in x if i not in stopWords]) # 去除停用词 wordFre = pd.Series(_flatten(list(dataAfter))).value_counts() # 统计词频 mask = plt.imread(img) plt.figure(figsize=(20,20)) wc = WordCloud(scale=10,font_path='C:/Windows/Fonts/STXINGKA.TTF',mask=mask,background_color="white",) wc.fit_words(wordFre) plt.imshow(wc) plt.axis('off')my_word_cloud(data=data["评论"],stopWords=stopWords,img="1.jpeg")
天气好冷,我整个人都是冰冰的
好了,今天的分享就到这,如果你对Python感兴趣,欢迎加入我们【python学习交流裙】,免费领取学习资料和源码。