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

在这里插入图片描述

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

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

相关文章

焦化行业的变革力量:智能巡检机器人

根据相关数据,2024年1-2月份,焦炭产量为8039.5万吨,同比增长2.1%,这表明,我国焦化行业仍是全球最大的焦炭生产国和消费国,其市场规模占据了重要地位。焦化企业主要集中在山西省,其合计焦炭产能约…

c++的decltype关键字

它可以将变量声明为表达式指定的类型

Hash入门

unordered_set void test_unordered_set() {unordered_set<int> us;us.insert(4);us.insert(2);us.insert(1);us.insert(5);us.insert(6);us.insert(2);us.insert(2);//去重unordered_set<int>::iterator it us.begin();while (it ! us.end()){cout << *it…

MyBatis-Plus代码一键生成

官网地址&#xff1a;MyBatis-Plus &#x1f680; 为简化开发而生 开始&#xff1a; 添加依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.7</version&g…

IMS 在线计费 IMS 离线计费

目录 1. IMS 在线计费 1.1 主要内容 1.2 IMS 在线计费架构 ​编辑1.3 IMS 在线计费方案 1.4 IMS 在线计费的关键步骤 1.5 在线计费的基本流程 1.6 IMS Information AVP 2. IMS 离线计费 2.1 IMS 离线计费架构 2.2 IMS 离线计费概述 2.3 什么时候 AS 给 CG 发送 ACR?…

独立站技能树/工具箱1.0 总纲篇丨出海笔记

正所谓要把一件事做到90分很难&#xff0c;但做到60分基本上照着SOP做到位都没问题&#xff0c;如果我们能把每件事都做到60分&#xff0c;那绝对比至少60%的人都强&#xff0c;除非你的对手不讲武德——那就是他很可能看了我这篇文章&#xff0c;不但每方面都超过及格线&#…

油耳拿什么清理比较好?比较推荐哪种可视耳勺

相信很多小伙伴都有挖耳朵方面的困扰&#xff0c;尤其是油性耳朵的人&#xff0c;用棉签掏耳朵时感觉越掏越往里去&#xff0c;而使用普通耳勺又因为材质过硬&#xff0c;在使用过程中容易刮伤耳道。于是市面上出现了可视挖耳勺&#xff0c;让人们可以在看得见的情况下取出耳道…

解决novnc1.2.0不能使用剪切板的问题

1.下载资源文件asciidef.js,在rfb.js中引入 2.修改rfb.js中clipboardPasteFrom方法如下 clipboardPasteFrom(text) {if (this._rfbConnectionState !== connected || this._viewOnly) {return; }if (this._clipboardServerCapabilitiesFormats[extendedClipboardFormatText] &…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

研发企业的源代码防泄密秘籍:一机两用的沙盒电脑

在数字化时代&#xff0c;数据安全已成为企业最关注的问题之一。尤其是对于研发密集型企业&#xff0c;源代码的安全更是核心资产。SDC沙盒&#xff0c;正是为了应对这一挑战而设计的先进数据防泄密解决方案。 全面保护&#xff0c;从源头开始 SDC沙盒采用独特的代码级安全设…

python线程(python threading模块、python多线程)(守护线程与非守护线程)

文章目录 Python多线程入门1. Python多线程概述2. threading模块基础- Thread 类: 这是一个代表线程的类。可以通过创建Thread类的实例来新建一个线程。- Lock 类: 在多线程环境中&#xff0c;为了防止数据错乱&#xff0c;通常需要用到锁机制。Lock类提供了基本的锁功能&#…

如日中天的AI大模型,也到了发展幻灭期!

近期 Gartner发布了《新兴技术成熟度曲线》&#xff0c;其中生成式 AI &#xff08;GenAI&#xff09; 正式进入到了幻灭期。 2018 年 6 月&#xff0c;OpenAI发布GPT-1模型&#xff0c;生成式AI开始向产品化发展。 到2022年的GPT-3.5发布&#xff0c;并且ChatGPT首次向公众推…

企业微信-前往服务商后台页面对接解决方案

序 我会告诉你在哪里点我会告诉你在哪里配置点下去他只返回auth_code的&#xff0c;我怎么登录 正文 他是在这个位置 是这样&#xff0c;应用授权安装第三方应用后&#xff0c;企业微信&#xff08;管理员角色&#xff09;是可以从pc端企业后台点第三方应用的。 如果我没记…

【qt】一个WPS项目了解qt界面设计的基本套路

项目功能演示: 放心食用!最后有完整代码. 超级详细,期待您的一个点赞❥(^_-) 一览全局: WPS项目目录 一.创建项目二.导入资源三.ui设计四.字号选择框初始化五.滚动条初始化六.添加自定义文本类七.初始化action状态八.新建文档九.打开文件十.保存与另存为十一.打印/打印预览十…

QT设置git仓库

笔者最近想写一个qt的程序&#xff0c;想要把这个代码推送到github上。 前提是电脑已安装了git、QT 以下是设置步骤&#xff1a; 1.设置QT中关于git的配置 打开QT&#xff0c;点击工具-》选项-》版本控制-》填写PATH 这个PATH是你安装git的绝对路径&#xff0c;如果你不记得…

HTTP中的Cookie与Session

一、背景 HTTP协议是无状态无连接的。 无状态&#xff1a;服务器不会保存客户端历史请求记录&#xff0c;每一次请求都是全新的。 无连接&#xff1a;服务器应答后关闭连接&#xff0c;每次请求都是独立的。 无状态就导致服务器不认识每一个请求的客户端是否登陆过。 这时…

Mybatis框架映射---代码实现(XML配置以及注解形式)

目录 一. 映射关系 1 对 1-映射方式 1.通过xml文件实现映射的一对一关系 总结 &#xff1a; 2.通过注解的方式来实现下面的 1 对 1 的映射关系&#xff0c;实现级联查询 总结&#xff1a; 二. 映射关系多对一 1.通过xml文件实现映射的多对一关系 2.通过注解的方式来实现…

【Elasticsearch系列十五】强大特性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MapReduce基本原理

目录 整体执行流程​ Map端执行流程 Reduce端执行流程 Shuffle执行流程 整体执行流程 八部曲 读取数据--> 定义map --> 分区 --> 排序 --> 规约 --> 分组 --> 定义reduce --> 输出数据 首先将文件进行切片&#xff08;block&#xff09;处理&#xff…

EsDA,一站式嵌入式软件

EsDA是一套面向工业智能物联领域的嵌入式系统设计自动化工具集&#xff0c;包含实时操作系统AWorksLP、低代码开发平台AWStudio、资源管理平台AXPI、跨平台GUI引擎AWTK和云服务平台ZWS&#xff0c;旨在提高嵌入式软件开发的效率、性能和可扩展性。 EsDA全称是嵌入式系统设计自动…