爬取冰冰B站千条评论,看看大家说了什么

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理

作者:北山啦

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

数据分析

import pandas as pd
data = pd.read_excel(r"bingbing.xlsx")
data.head()
 用户性别等级评论点赞
0食贫道6[呆][呆][呆]你来了嘿!158457
1毕导THU6我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴148439
2老师好我叫何同学6[热词系列_知识增加]89634
3央视网快看保密6冰冰来了!我们要失业了吗[doge][doge]118370
4厦门大学保密5哇欢迎冰冰!!!66196

数据预处理

数据描述

data.describe()
 等级点赞
count1180.0000001180.000000
mean4.4813562200.617797
std1.04137910872.524850
min2.0000001.000000
25%4.0000004.000000
50%5.0000009.000000
75%5.000000203.750000
max6.000000158457.000000

删除空值

data.dropna()
 用户性别等级评论点赞
0食贫道6[呆][呆][呆]你来了嘿!158457
1毕导THU6我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴148439
2老师好我叫何同学6[热词系列_知识增加]89634
3央视网快看保密6冰冰来了!我们要失业了吗[doge][doge]118370
4厦门大学保密5哇欢迎冰冰!!!66196
..................
1175黑旗鱼保密511小时一百万,好快[惊讶]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

删除空值

data.drop_duplicates()
 用户性别等级评论点赞
0食贫道6[呆][呆][呆]你来了嘿!158457
1毕导THU6我是冰冰仅有的3个关注之一[tv_doge]我和冰冰贴贴148439
2老师好我叫何同学6[热词系列_知识增加]89634
3央视网快看保密6冰冰来了!我们要失业了吗[doge][doge]118370
4厦门大学保密5哇欢迎冰冰!!!66196
..................
1175黑旗鱼保密511小时一百万,好快[惊讶]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

可视化

点赞TOP20

df1 = data.sort_values(by="点赞",ascending=False).head(20)
from pyecharts import options as opts
from pyecharts.charts import Bar
from 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    165
5    502
4    312
3    138
2     63
Name: 等级, dtype: int64
from pyecharts import options as opts
from pyecharts.charts import Pie
from 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 opts
from pyecharts.charts import Pie
from 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 WordCloud
import jieba
from tkinter import _flatten
from matplotlib.pyplot import imread
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt
with 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网络爬虫有了了解,希望大家动手实践,这里就不放代码啦,建议参考:

推荐阅读:

  1. 使用xpath爬取数据
  2. jupyter notebook使用
  3. BeautifulSoup爬取豆瓣电影Top250
  4. 一篇文章带你掌握requests模块
  5. Python网络爬虫基础–BeautifulSoup

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值