-
【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
四、附完整源码
出处:https://www.cnblogs.com/mashukui/p/16242980.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式