游戏APP用户行为统计分析

文章目录

    • 1.游戏业务数据分析如图所示的用户行为数据
    • 2.数据预处理
      • 2.1加载包
      • 2.2读取数据
      • 2.3查看安装信息
      • 2.4查看注册信息
      • 2.5查看安装信息表中的最大值,最小值等基本信息。
      • 2.6查看注册信息表中的最大值,最小值等基本信息。
    • 3.数据分析
      • 3.1数据统一
      • 3.2安装信息分析
        • 3.2.1安装人数、注册人数、激活率
        • 3.2.2日安装量、安装渠道、TOP15子渠道、安装地区、是否WiFi安装、安装的手机类型统计TOP15、系统版本
      • 3.3注册信息分析
        • 3.3.1每日注册人数、用户类型、注册时段、激活时间、日新增新用户统计

1.游戏业务数据分析如图所示的用户行为数据

在这里插入图片描述

2.数据预处理

2.1加载包


import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

2.2读取数据


az = pd.read_excel('/home/kesci/input/game_data1910/数据源整合.xlsx',sheet_name='安装信息')
zc = pd.read_excel('/home/kesci/input/game_data1910/数据源整合.xlsx',sheet_name='注册信息')

2.3查看安装信息

print("查看安装信息:")
az.head()

在这里插入图片描述

2.4查看注册信息

print('查看注册信息:')
zc.head()

在这里插入图片描述

2.5查看安装信息表中的最大值,最小值等基本信息。

print("安装信息表:")
print(az.info())
print("-"*30)
print(az.describe())
print("-"*30)
print('空值统计:\n',az.isnull().sum())
print("-"*30)
print('重复数据:',az.duplicated().sum())

在这里插入图片描述
在这里插入图片描述

2.6查看注册信息表中的最大值,最小值等基本信息。

print("注册信息表:")
print(zc.info())
print("-"*30)
print(zc.describe())
print("-"*30)
print('空值统计:\n',zc.isnull().sum())
print("-"*30)
print('重复数据:',zc.duplicated().sum())

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上述结果可以得出该份数据还算比较干净,没有什么空值数据。

3.数据分析

3.1数据统一

print('安装信息表的安装时间范围:',az['安装时间'].min(),az['安装时间'].max())
print('注册信息表的安装时间范围:',zc['安装时间'].min(),zc['安装时间'].max())

在这里插入图片描述
为了方便分析,选择安装时间在 2020-4-20——2020-04-26 的数据

az = az[az['安装时间']>'2020-04-19 23:59:59']
zc = zc[zc['安装时间']>'2020-04-19 23:59:59']
print('安装信息表的安装时间范围:',az['安装时间'].min(),az['安装时间'].max())
print('注册信息表的安装时间范围:',zc['安装时间'].min(),zc['安装时间'].max())

安装信息表的安装时间范围: 2020-04-20 00:02:15 2020-04-26 15:59:27
注册信息表的安装时间范围: 2020-04-20 00:04:51 2020-04-26 23:44:39

选择注册信息表中’用户唯一ID’存在安装表中的数据

uid = az['用户唯一ID']
zc = zc[zc['用户唯一ID'].isin(uid)]
print('安装信息:',az.shape)
print('注册信息:',zc.shape

在这里插入图片描述

print('注册信息重复ID:',zc['用户唯一ID'].duplicated().sum())
# 去重
zc = zc.drop_duplicates('用户唯一ID')
print('去重后:',zc.shape)

在这里插入图片描述

3.2安装信息分析

3.2.1安装人数、注册人数、激活率

激活率=激活人数/安装人数(这里激活人数以注册人数代替)

print("安装人数:",az.shape[0])
print('注册人数:',zc.shape[0])
print('激活率:%.2f%%'%((zc.shape[0]/az.shape[0])*100)) #以百分比的格式输出激活率

在这里插入图片描述

3.2.2日安装量、安装渠道、TOP15子渠道、安装地区、是否WiFi安装、安装的手机类型统计TOP15、系统版本
az['安装日期']=az['安装时间'].dt.date
print('日安装用户量:\n',az.groupby('安装日期').用户唯一ID.count())

在这里插入图片描述
结果可以得出2020-04-25安装用户量最多

print("安装渠道:\n",az['渠道'].value_counts())
print('\n TOP 15子渠道:\n',az['子渠道'].value_counts()[:15])

在这里插入图片描述
安装渠道以A为主

print('安装地区:\n',az['地区'].value_counts())

在这里插入图片描述
安装地区A最多,C最少

print('是否WiFi安装:\n',az['WIFI'].value_counts())

在这里插入图片描述
WIFI和流量安装相差不大,可见现在的流量已经价格很低。

从机型属性中拆分手机类型属性,由于手机品牌名称存在大小写不一的情况(例如OPPO,oppo),因此将手机类型属性字段统一转换为首字母大写的格式:
PS :转换成以下模式再统计也是一样的,但必须先统一格式后再统计:

.lower() 将字符串中全部字符转换为小写
.upper() 将字符串中全部字符转换为大写
.title() 将字符串中每个单词的首字母转换为大写字母

print("用户安装手机类型TOP 15:\n")
az['手机类型'] = az['机型'].str.split("-").str[0]
az['手机类型'] = az['手机类型'].str.title() #.title()将所有手机类型的名称转换为首字母大写的格式
az['手机类型'].value_counts()[:15]

在这里插入图片描述
samsung首当其冲,其次是Oppo,Huawei

print('系统:',az['系统'].value_counts())
print('\n操作系统版本:\n',az.groupby('操作系统版本').系统.count())

在这里插入图片描述
可见系统大部分人并没有更新最新系统,只有869人更新系统并下载游戏

3.3注册信息分析

3.3.1每日注册人数、用户类型、注册时段、激活时间、日新增新用户统计
zc['注册日期'] = pd.to_datetime(zc['注册时间']).dt.date
print('日注册用户:\n',zc.groupby('注册日期').用户唯一ID.count())

在这里插入图片描述
2020-04-26注册人数最多

print("用户类型:\n",zc['用户类型'].value_counts())

在这里插入图片描述

zc.head()

在这里插入图片描述

zc['注册时段'] = pd.to_datetime(zc['注册时间']).dt.hour
hzc = zc.groupby(['用户类型','注册时段']).用户唯一ID.count().reset_index(name='total')
sns.lineplot(data=hzc,x='注册时段',y='total',hue='用户类型')
plt.title('各时段的注册用户量',loc='left')
plt.show()

在这里插入图片描述

print("激活时间:\n")
zc['激活时间'] = pd.to_datetime(zc['注册时间']).dt.day-pd.to_datetime(zc['安装时间']).dt.day
jh = zc['激活时间'].value_counts().reset_index(name='total')
jh['percent'] =(jh['total']/7282).round(3)
print(jh)

在这里插入图片描述
有4655人选择在当天激活,占安装人数中的63.9%,占整体注册人数中的94.6%,有32.5%的用户没有在7天内激活注册

print('日新增新用户:\n')
nzc = zc[zc['用户类型']=='new']
nzc.groupby('注册日期').用户唯一ID.count()

在这里插入图片描述
日新增用户基本在每日逐渐增加,呈上升趋势。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ADSelfService Plus 推出离线多因素身份验证以提升远程工作安全性

采用先进验证方法,确保在任何时间、地点或连接问题下对业务数据的合法访问即使远程用户未连接到身份验证服务器或互联网,也可通过MFA安全认证。 MFA 得克萨斯州德尔瓦雷 — 2023年5月3日 — Zoho Corporation 旗下的企业IT管理部门ManageEngine今日宣布…

做好测试用例的分析 ? 是做好软件测试的必要步骤。

目录 1.测试用例的分析指标 2.可能原因的论证 3.确定原因的解决方案 测试用例作为测试人员最重要的输出物之一 ,它的作用不仅仅是能保证需求覆盖 ,提高测试覆盖率等 。通过对执行后的测试用例分析 ,你也可以发现更多在编写上,执…

【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

05 - 什么是路由协议

1 路由协议 路由协议(英语:Routing protocol): 是一种指定数据包转送方式的网上协议。Internet网络的主要节点设备是路由器,路由器通过路由表来转发接收到的数据。 路由协议,根据转发策略进行分类&#xff…

C/C++ - 类的多态机制

目录 多态概念 多态定义 多态的触发机制 虚函数 虚函数表 虚析构函 虚析构函数声明 虚析构函数的作用 纯虚函数 纯虚函数的声明 纯虚函数的作用 抽象类 多态原理 虚函数表 & 虚函数指针 继承机制下的虚函数表 动态绑定 多态概念 狗狗发出的声音为 -> 旺…

Redis -- String 字符串, 计数命令,字符串操作

"学如逆水行舟,不进则退。" 目录 Redis的String字符串 常见命令 set get mget mset setnx setex psetex 计数命令 incr incrby decr decrby incrbyfloat 字符串操作 append getrange setrange strlen 小结 string内部编码 Redis…

web应用课——(第四讲:中期项目——拳皇)

代码AC Git地址:拳皇——AC Git链接

迁移学习实现图片分类任务

导入工具包 import time import osimport numpy as np from tqdm import tqdmimport torch import torchvision import torch.nn as nn import torch.nn.functional as Fimport matplotlib.pyplot as plt %matplotlib inline# 忽略烦人的红色提示 import warnings warnings.fi…

11.Ubuntu

目录 1. 什么是Ubuntu 1.1. 概述 1.2. Ubuntu版本简介 1.2.1. 桌面版 1.2.2. 服务器版 2. 部署系统 2.1. 新建虚拟机 2.2. 安装系统 2.3. 部署后的设置 2.3.1. 设置root密码 2.3.2. 关闭防火墙 2.3.3. 启用允许root进行ssh 2.3.4. 安装所需软件 2.3.5. 制作快照 …

企业图纸数据防泄密方案(图纸防泄密的几个实用方法)

在当今的商业环境中,企业图纸数据的重要性日益凸显。无论是产品设计、研发、生产还是项目管理,图纸都承载着企业的核心知识产权和商业机密。 然而,随着信息技术的迅猛发展,企业图纸数据泄密事件屡屡发生,给企业带来了…

【20240131】USB相机(查看设备列表、打开设备)

USB相机采集 1、v4l2查看设备列表2、查看具体设备信息3、在桌面打开USB相机 1、v4l2查看设备列表 打开终端,输入:v4l2-ctl --list-devices usb设备在Webcam: Webcam栏,分别是video9和video10,下一步:确定哪一个是接入…

存内计算——发展史与近期成果

存内计算的概念早在上个世纪就已经被提出,但当时的人们寄希望于通过优化处理器设计以及工艺制程的升级,来获得性能和能效比的提升,存内计算的研究仅停留在理论阶段。随着大数据时代的到来,存内计算由于其结构特点以及摩尔定律的“…

机器学习 低代码 ML:PyCaret 的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

大数加法-----蓝桥杯

题目描述 以字符串的形式读入两个数字&#xff0c;编写一个函数计算它们的和&#xff0c;以字符串形式返回。 数据范围: s.length,tlength < 100000&#xff0c;字符串仅由0~9构成要求: 时间复杂度 O(n)。 结构示例1&#xff1a; 结果示例2&#xff1a; 代码展示&#xff…

在中国,大多数做机器视觉工程师的人的出路是什么?

工程师一直号称是靠技术吃饭&#xff0c;越老越吃香。显然我们机器视觉工程师归属于工程师。 可是这种是一种低级趣味的思维力度。 试问现在程序员难道不是越老越吃香吗&#xff1f; 律师难道不是吗&#xff1f; 银行家难道不是吗&#xff1f; 现在整体经济下滑情况&#xff0…

C++ 菱形继承和虚拟菱形继承

菱形继承和虚拟菱形继承 菱形继承1. 概念2. 产生的问题 虚拟菱形继承1.1 使用1.2 原理 菱形继承 1. 概念 菱形继承是多继承的一个特殊情况&#xff0c;多继承是指一个子类类继承了两个或以上的直接父类&#xff0c;而菱形继承问题的产生是因为该子类的父类&#xff0c;继承了…

超好看的前端特效HTML特效、CSS特效、JS特效(第一期)

超好看的前端特效 1. 粒子组成文字动画特效 文件组成&#xff1a; base.css import url(https://fonts.googleapis.com/css?familyAbrilFatface|Raleway:300,400,900);.coidea-header {position: fixed;display: block;width: 96%;width: calc( 100% - 32px );height: 40px;m…

面试题:Feign第一次调用为什么会很慢?

文章目录 前言Ribbon是如何进行负载的RibbonClientConfigurationZoneAwareLoadBalancerRibbon负载均衡策略Ribbon-eager-load&#xff08;饥饿加载&#xff09;模式开启Ribbon饥饿加载总结 前言 首先要了解 Feign 是如何进行远程调用的&#xff0c;这里面包括&#xff0c;注册…

Fiddler修改https请求与响应 bug修复变灰了选不了等 Fiddle对夜神模拟器抓包设置

不要修改别人的东西&#xff0c;不要修改别人的东西&#xff0c;不要修改别人的东西 只用于自己的网站&#xff0c;自己安全调试。 fiddler修改https请求 1、打到要改的请求 2、替换请求内容 3、开启捕获。操作产生请求。 4、fiddler里查看请求或响应数据 &#xff0c;确认成…

ubuntu20配置mysql8

首先更新软件包索引运行 sudo apt update命令。然后运行 sudo apt install mysql-server安装MySQL服务器。 安装完成后&#xff0c;MySQL服务将作为systemd服务自动启动。你可以运行 sudo systemctl status mysql命令验证MySQL服务器是否正在运行。 连接MySQL 当MySQL安装…