【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

一、爬取老番茄B站数据

前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含:

视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕数,播放量,点赞数,投币量,收藏量,评论数,转发量,实时爬取时间

基于这个Python爬虫程序,我更换了up主的UID,把李子柒的uid换成了老番茄的uid,便成功爬取了老番茄的B站数据。共393个视频,17个字段,字段同上。
这里展示下爬取到的前20个视频数据:

基于爬取的老番茄B站数据,用python做了以下基础数据分析的开发。

二、python数据分析

1、读取数据源

import pandas as pd
df = pd.read_excel('B站视频数据_老番茄.xlsx', parse_dates=['视频上传时间', '实时爬取时间'])  # 读取excel数据

2、查看数据概况

df.head(3)  # 查看前三行数据
df.shape  # 查看形状,几行几列
df.info()  # 查看列信息
df.describe()  # 数据分析
df['是否合作视频'].value_counts()  # 统计:是否合作视频
df['视频分区'].value_counts()  # 统计:视频分区

3、查看异常值

df2 = df[['视频标题', '视频地址', '弹幕数', '播放量',
          '点赞数', '投币量', '收藏量', '评论数', '转发量', '视频上传时间']]  # 去掉不关心的列
df2.loc[df.评论数 == 0]  # 评论数是0的数据
df2.isnull().any()  # 空值
df2.duplicated().any()  # 重复值

4.1、查看最大值(max函数)

df2.loc[df.播放量 == df['播放量'].max()]  # 播放量最高的视频
df2.loc[df.弹幕数 == df['弹幕数'].max()]  # 弹幕数最高的视频

4.2、查看最小值(min函数)

df2.loc[df.投币量 == df['投币量'].min()]  # 投币量最小的视频
df2.loc[df.收藏量 == df['收藏量'].min()]  # 收藏量最小的视频

5.1、查看TOP3的视频(nlargest函数)

df2.nlargest(n=3, columns='播放量')  # 播放量TOP3的视频
df2.nlargest(n=3, columns='投币量')  # 投币量TOP3的视频

5.2、查看倒数3的视频(nsmallest函数)

df2.nsmallest(n=3, columns='评论数')  # 评论数倒数3的视频
df2.nsmallest(n=3, columns='转发量')  # 转发量倒数3的视频

6、查看相关性

# 查看spearman相关性(得出结论:收藏量&投币量,相关性最大,0.98)
df2.corr(method='spearman')  

7.1、可视化分析-plot

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
# 可视化效果不好
df2.plot(x='视频上传时间', y=['弹幕数', '播放量', '点赞数', '投币量', '收藏量', '评论数', '转发量'])

7.2、可视化分析-pyecharts

from pyecharts.charts import Line  # 折线图所导入的包
from pyecharts import options as opts  # 全局设置所导入的包
time_list = df2['视频上传时间'].astype(str).values.tolist()
line = (
    Line()  # 实例化Line
    # 加入X轴数据
    .add_xaxis(time_list)
    # 加入Y轴数据
    .add_yaxis("弹幕数", df2['弹幕数'].values.tolist())
    .add_yaxis("播放量", df2['播放量'].values.tolist())
    .add_yaxis("点赞数", df2['点赞数'].values.tolist())
    .add_yaxis("投币量", df2['投币量'].values.tolist())
    .add_yaxis("收藏量", df2['收藏量'].values.tolist())
    .add_yaxis("评论数", df2['评论数'].values.tolist())
    .add_yaxis("转发量", df2['转发量'].values.tolist())
    .set_global_opts(title_opts=opts.TitleOpts(title="老番茄B站数据分析"),
                     legend_opts=opts.LegendOpts(is_show=True),
                     )
    # 全局设置项
)

至此,基础数据分析工作完成了。

三、同步讲解视频

逐行代码视频讲解:
https://www.zhihu.com/zvideo/1455460990275567616


by 马哥python说

posted @ 2022-05-07 16:13  马哥python说  阅读(376)  评论(0编辑  收藏  举报