算法学习
、4对1辅导
、论文辅导
、核心期刊
项目的代码和数据下载
可以通过公众号
滴滴我
文章目录
1. 项目背景
本例是对游戏app用户从安装——注册的行为数据进行统计分析
游戏业务数据分析常分析如图所示的用户行为数据:
2. 数据读取
数据集
# 加载包
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
读取数据
az = pd.read_excel('数据源整合.xlsx',sheet_name='安装信息')
zc = pd.read_excel('数据源整合.xlsx',sheet_name='注册信息')
查看数据
print("查看安装信息:")
az.head()
print('查看注册信息:')
zc.head()
查看安装信息
print("安装信息表:")
print(az.info())
print("-"*30)
print(az.describe())
print("-"*30)
print('空值统计:\n',az.isnull().sum())
print("-"*30)
print('重复数据:',az.duplicated().sum())
查看注册信息
查看安装时间范围
print('安装信息表的安装时间范围:',az['安装时间'].min(),az['安装时间'].max())
print('注册信息表的安装时间范围:',zc['安装时间'].min(),zc['安装时间'].max())
安装信息表的安装时间范围: 2020-04-19 16:04:54 2020-04-26 15:59:27
注册信息表的安装时间范围: 2020-02-20 13:21:31 2020-04-26 23:44:39
查看近期安装时间范围
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
查看信息
uid = az['用户唯一ID']
zc = zc[zc['用户唯一ID'].isin(uid)]
print('安装信息:',az.shape)
print('注册信息:',zc.shape)
安装信息: (7282, 9)
注册信息: (5125, 11)
print('注册信息重复ID:',zc['用户唯一ID'].duplicated().sum())
# 去重
zc = zc.drop_duplicates('用户唯一ID')
print('去重后:',zc.shape)
注册信息重复ID: 207
去重后: (4918, 11)
3. 安装信息分析
3.1 安装人数、注册人数、激活率
激活率=激活人数/安装人数(这里激活人数以注册人数代替)
print("安装人数:",az.shape[0])
print('注册人数:',zc.shape[0])
print('激活率:%.2f%%'%((zc.shape[0]/az.shape[0])*100)) #以百分比的格式输出激活率
安装人数: 7282
注册人数: 4918
激活率:67.54%
3.2 日安装量、安装渠道、TOP15子渠道、安装地区、是否WiFi安装、安装的手机类型统计TOP15、系统版本
az['安装日期']=az['安装时间'].dt.date
print('日安装用户量:\n',az.groupby('安装日期').用户唯一ID.count())
日安装用户量:
安装日期
2020-04-20 947
2020-04-21 912
2020-04-22 1045
2020-04-23 1022
2020-04-24 915
2020-04-25 1278
2020-04-26 1163
Name: 用户唯一ID, dtype: int64
print("安装渠道:\n",az['渠道'].value_counts())
print('\n TOP 15子渠道:\n',az['子渠道'].value_counts()[:15])
查看安装地区
print('安装地区:\n',az['地区'].value_counts())
安装地区:
地区A 5663
地区B 1543
地区C 76
Name: 地区, dtype: int64
查看使用网络类型
print('是否WiFi安装:\n',az['WIFI'].value_counts())
是否WiFi安装:
True 3938
False 3344
Name: WIFI, dtype: int64
查看手机类型
print("用户安装手机类型TOP 15:\n")
az['手机类型'] = az['机型'].str.split("-").str[0]
az['手机类型'] = az['手机类型'].str.title() #.title()将所有手机类型的名称转换为首字母大写的格式
az['手机类型'].value_counts()[:15]
查看系统类型
print('系统:',az['系统'].value_counts())
print('\n操作系统版本:\n',az.groupby('操作系统版本').系统.count())
4 注册信息分析
4.1 每日注册人数、用户类型、注册时段、激活时间、日新增新用户统计
zc['注册日期'] = pd.to_datetime(zc['注册时间']).dt.date
print('日注册用户:\n',zc.groupby('注册日期').用户唯一ID.count())
查看用户类型
print("用户类型:\n",zc['用户类型'].value_counts())
用户类型:
new 2565
old 2353
Name: 用户类型, dtype: int64
zc.head()
将注册信息进行图形化展示
# matplotlib显示中文
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
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)
查看新增用户
print('日新增新用户:\n')
nzc = zc[zc['用户类型']=='new']
nzc.groupby('注册日期').用户唯一ID.count()
算法学习
、4对1辅导
、论文辅导
、核心期刊
项目的代码和数据下载
可以通过公众号
滴滴我