欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 4.5 pandas 实战 分析抖音播放数据(1)

4.5 pandas 实战 分析抖音播放数据(1)

2024/10/25 20:19:19 来源:https://blog.csdn.net/weixin_44815507/article/details/142386634  浏览:    关键词:4.5 pandas 实战 分析抖音播放数据(1)

课程目标

基于pandas对抖音播放数据做数据分析

数据准备

点此去下载

课程内容

  • 导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams["font.family"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
  • 查看信息
data.info()
  • 数据清洗-检查是否有缺失值
data.isnull().sum()
  • 数据清洗-检查是否有重复值
data.duplicated().sum()
  • 没有,进行列名修改
col_name_dict = {"Unnamed: 0": "ID","uid": "用户id","user_city": "用户城市","item_id": "作品id","author_id": "作者id","item_city": "作品城市","channel": "观看到该作品的的来源","finish": "是否浏览完作品","like": "是否点赞","music_id": "音乐id","duration_time":"作品时长(秒)","real_time":"作品发布时间","H":"当前小时","date":"当前日期"
}
data = data.rename(columns=col_name_dict)
  • 转化时间格式
data["作品发布时间"] = pd.to_datetime(data["作品发布时间"])
data["当前日期"] = pd.to_datetime(data["当前日期"])
  • 再次查看信息
data.info()

分析每日播放量,用户量,作者数,作品数变化情况

  • 先通过日期分组
df_group = data.groupby(by="当前日期")
  • 得到数据
df_id = df_group["ID"].count() # 每日播放量
df_uid = df_group["用户id"].nunique() # 每日用户量
df_author = df_group["作者id"].nunique() # 每日作者数
df_item = df_group["作品id"].nunique() # 每日作品数
  • 开始绘图
x = df_id.index # 获取x轴数据,为所有日期
plt.figure(figsize=(22,16),dpi=100) # 创建一个新的图形,设置图形的大小为22x16英寸,分辨率为100dpi
ax1 = plt.subplot(411) # 创建第一个子图,411表示图形将被分为4行1列,这是第一个子图
plt.plot(x,df_id.values) # 在当前子图上绘制x和df_id.values之间的关系
plt.ylabel("日播放量") # 设置当前子图的y轴标签为“日播放量”
plt.title("统计日播放量,日用户量,日作者量,日作品量") # 设置整个图形的标题plt.subplot(412,sharex=ax1) # 创建第二个子图,412表示这是第二行的第一个子图,sharex=ax1表示x轴与ax1共享
plt.plot(x,df_uid.values) # 在当前子图上绘制x和df_uid.values之间的关系
plt.ylabel("日用户量") # 设置当前子图的y轴标签为“日用户量”plt.subplot(413,sharex=ax1) # 创建第三个子图,413表示这是第三行的第一个子图,同样x轴与ax1共享
plt.plot(x,df_author.values) # 在当前子图上绘制x和df_author.values之间的关系
plt.ylabel("日作者量") # 设置当前子图的y轴标签为“日作者量”plt.subplot(414,sharex=ax1) # 创建第四个子图,414表示这是第四行的第一个子图,x轴与ax1共享
plt.plot(x,df_item.values) # 在当前子图上绘制x和df_item.values之间的关系
plt.ylabel("日作品量") # 设置当前子图的y轴标签为“日作品量”plt.savefig("统计日播放量,日用户量,日作者量,日作品量.png") # 将整个图形保存为名为“统计日播放量,日用户量,日作者量,日作品量.png”的文件

在这里插入图片描述

分析作者id 前50 对平台的贡献

# 获取前50个作者id
author_50 = data["作者id"].value_counts().iloc[:50] 
cols_auther = author_50.index 
item_count = data.groupby("作者id")["作品id"].nunique()[cols_auther] # top50 作者作品数量
authou_star_mean = data.groupby("作者id")["是否点赞"].mean()[cols_auther] # 前50作者点赞平均值
author_player = data["作者id"].value_counts().sort_values(ascending=False)[cols_auther] / len(data["ID"]) # 前50作者播放率(每个作者所有作品的播放量占平台总播放量的比率)
x = [str(i) for i in list(author_50.index)] # x 轴数据离散化
fig, ax1 = plt.subplots(figsize=(25, 8)) # 创建一个新的图形和一个子图,设置图形的大小为25x8英寸
ax1.bar(x, item_count.values, color="blue") # 在ax1子图上绘制条形图,x为x轴数据,item_count.values为y轴数据,颜色设置为蓝色
ax1.set_xlabel("作者id") # 设置ax1子图的x轴标签为“作者id”
ax1.set_ylabel("作品数量", color="blue") # 设置ax1子图的y轴标签为“作品数量”,并设置标签颜色为蓝色ax2 = ax1.twinx() # 创建一个与ax1共享x轴的新轴ax2
ax2.plot(x, authou_star_mean.values, color="red") # 在ax2上绘制线图,x为x轴数据,authou_star_mean.values为y轴数据,颜色设置为红色
ax2.set_ylabel("平均点赞数", color="red") # 设置ax2的y轴标签为“平均点赞数”,并设置标签颜色为红色
ax2.tick_params("y", colors="red") # 设置ax2的y轴刻度线颜色为红色ax3 = ax2.twinx() # 创建一个与ax2共享x轴的新轴ax3
ax3.plot(x, author_player.values, color="green") # 在ax3上绘制线图,x为x轴数据,author_player.values为y轴数据,颜色设置为绿色
ax3.set_ylabel("播放率", color="green") # 设置ax3的y轴标签为“播放率”,并设置标签颜色为绿色
ax3.tick_params("y", colors="green") # 设置ax3的y轴刻度线颜色为绿色

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com