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

news2024/12/24 8:47:01

课程目标

基于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轴刻度线颜色为绿色

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

道路坑洞分割数据集/道路裂纹分割数据集

1.道路坑洞,道路裂纹分割数据集,包含5790张坑洞分割图像数据(默认分割标注png图片,850MB)2.10000余张道路裂纹图像数据(默认分割标注png图片,3.7GB)3。道路坑洞,道路 道路坑洞与裂纹…

关于“华为杯”第二十一届中国研究生数学建模竞赛赛题下载及提交作品的重要提醒

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 各参赛队伍: “华为杯”第二十一届中国研究生数学建模竞赛即将于2024年…

零基础玩转实在Agent -- 基础篇|实在Agent研究

前言 实在Agent是什么 实在Agent(智能体)是实在智能基于RPA和自研屏幕语义理解技术,结合最前沿的Al大模型打造的自动化智能体产品。 它能像朋友一样聊天,并通过对话的方式理解你的任务需求,自动规划任务的实现方式&…

Qt clicked()、clicked(bool)、toggled(bool)信号的区别和联系

clicked() 信号 所属控件:clicked()信号是QAbstractButton类(及其子类,如QPushButton、QRadioButton、QCheckBox等)的一个信号。clicked信号可以说是许多控件(特别是按钮类控件,如QPushButton)…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明: 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…

Vue3DevTools7是如何在vscode定位指定文件位置的?

Vue3DevTools7是如何在vscode定位指定文件位置的? 背景 今天在使用vue脚手架创建项目的时候,并发现一个新的(实验中的新功能),可以直接在我们的项目中集成Vue DevTools插件,浏览器插件devtools即将成为历史…

第十三周:机器学习笔记

第十三周周报 摘要Abstract一、机器学习——Transformer(上)1. Sequence to Sequence(Seq 2 Seq,序列到序列模型) 的应用2. Transformer的结构2.1 Transformer encoder(Transformer 编码器) 二、Pytorch学习1. 网络模型…

python爬虫初体验(一)

文章目录 1. 什么是爬虫?2. 为什么选择 Python?3. 爬虫小案例3.1 安装python3.2 安装依赖3.3 requests请求设置3.4 完整代码 4. 总结 1. 什么是爬虫? 爬虫(Web Scraping)是一种从网站自动提取数据的技术。简单来说&am…

BandiView 7.03 看图软件

BandiView 加入了大量现代化功能特性,比如支持 HDR 照片高动态范围效果、支持 HEIC / RAW / 漫画模式、免解压直接看图、查看 AI 图片提示词等 BandiView 是一款非常值得推荐的电脑全能看图浏览工具软件,软件的兼容性非常强,可以一站式满足用…

java通过org.eclipse.milo实现OPCUA客户端进行连接和订阅

前言 之前写过一篇关于MQTT的方式进行物理访问的文章:SpringBoot集成MQTT,WebSocket返回前端信息_springboot mqtt websocket-CSDN博客 最近又接触到OPCUA协议,想通过java试试看能不能实现。 软件 在使用java实现之前,想着有没…

欠款管理代码———未来之窗行业应用跨平台架构

一、欠款管理代码 function fun_会员_还款操作(会员卡信息id,MainID){var 未来之窗vos对话框_内容 ";var title"test";var 未来之窗vos对话框_id"hjksgfjkkhkj_child";CyberWin_Dialog.layer(未来之窗vos对话框_内容,{type:"url",title:&…

windows下,用docker部署xinference,为什么老是提示localhost无法访问?

部署xinference有两种方式: 一、本地部署 (略) 二、使用Docker部署(与运行) 其中又包括: 1)使用CPU的方式:(略) 1)使用GPU的方式&#xff1…

LeetCode_sql_day30(1264.页面推荐)

描述 1264.页面推荐 朋友关系列表: Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…

低代码可视化工具--vue条件判断v-if可视化设置-代码生成器

在Vue UniApp中,条件判断通常是通过指令v-if、v-else-if、v-else来实现的。这些机制允许你根据表达式的真假值来决定是否渲染某个元素或元素组,或者执行特定的逻辑。 条件判断说明 v-if 是惰性的:如果在初始渲染时条件为假,则什么…

mac os x 找不到钥匙串访问

昨天手贱更新了最新的mac系统,结果在实用工具中找不到钥匙串访问APP了。。。 最新mac系统为 15.0 (24A335) 真是醉了。。。 那就得想办法把他给呼出来,在开发者中心下载了一个.cer文件,然后双击打开,此时钥匙串打开了&#xff…

猿大师办公助手在线编辑Office为什么要在客户端电脑安装插件微软Office或金山WPS?

猿大师办公助手作为一款专业级的网页编辑Office方案,与在线云文档方案(飞书、腾讯文档等)不同,需要在客户端电脑安装猿大师办公助手插件及微软Office或者金山WPS软件,很多客户不理解为什么要这么麻烦,能否客…

从虚拟到现实:数字孪生与数字样机的进化之路

数字化技术高速发展的当下,计算机辅助技术已成为产品设计研发中不可或缺的一环,数字样机(Digital Prototype, DP)与数字孪生技术便是产品研发数字化的典型方法。本文将主要介绍数字样机与数字孪生在国内外的发展,并针对…

机器翻译之创建Seq2Seq的编码器、解码器

1.创建编码器、解码器的基类 1.1创建编码器的基类 from torch import nn#构建编码器的基类 class Encoder(nn.Module): #继承父类nn.Moduledef __init__(self, **kwargs): #**kwargs:不定常的关键字参数super().__init__(**kwargs)def forward(self, X, *args…

[产品管理-29]:NPDP新产品开发 - 27 - 战略 - 分层战略与示例

目录 1. 公司战略 2. 经营战略 3. 创新战略 4. 新产品组合战略 5. 新产品开发战略 战略分层是企业规划和管理的重要组成部分,它涉及不同层级的战略制定和实施。以下是根据您的要求,对公司战略、经营战略、创新战略、新产品组合战略、新产品开发战略…