分析基础篇(二):什么样的用户会选择离开 - 交叉列表统计
案例背景:
《黑猫拼图》的用户数本月比上月少了很多。
通过确认,商业推广、游戏活动(版本)均没有大的改动。
提出猜测,是某个用户群体出现了问题。
通过数据库的日活跃数据、用户信息,来从不同用户信息(属性)拆解日活。
使用数据:
●DAU(Daily Active User,每天至少来访 1 次的用户数据)
●user_info(用户属性数据)
分析流程:
- 加载常用库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import sklearn
import seaborn as sns
- 读入数据
dau = pd.read_csv('yourpath/R/section4-dau.csv')
user_info = pd.read_csv('yourpath/R/section4-user_info.csv')
dau.head()
user_info.head()
- 预处理数据
连接dau和userinfo表。同时增加一行月份列,方便按月统计
dau_userinfo = pd.merge(dau,user_info,on=['app_name','user_id'],how='left')
dau_userinfo['log_month'] = dau_userinfo.log_date.map(lambda x: str(x)[:7])
dau_userinfo.head()
- 交叉列表统计
接下来,利用交叉列表统计,查看不同用户属性下的月活变化
- 性别
pd.crosstab(index=dau_userinfo.log_month,columns=dau_userinfo.gender)
- 年龄区间
pd.crosstab(index=dau_userinfo.log_month,columns=dau_userinfo.generation)
pd.crosstab(index=dau_userinfo.log_month,columns=[dau_userinfo.gender,dau_userinfo.generation])
可以看到,性别、年龄月份并没有哪个区间尤为突出的变化。性别*年龄的交互项也并没有某项特别突出下降。
当然,最好的方式是可以利用卡方统计看一下,是否有哪个属性值统计显著变化。
- 设备类型
pd.crosstab(index=dau_userinfo.log_month,columns=dau_userinfo.device_type)
显然,设备这里很明显可以看到,Android的下降尤为突出。
为了具体是哪一天的变化,查看两种设备的日活变化。
g = dau_userinfo.groupby(by=['log_date','device_type'])
dau_device = g['user_id'].count().reset_index()
据此,可以得出结论,Android设备在9月13日的日活显著大量下降,此后也未再回升,导致了整体的日活下降。