使用Python完成《数据分析实战》中的案例-2
什么样的顾客会选择离开
现状与预期
现状: “和上月相比,本月的用户数减少了”。
预期 : 查清用户数减少的原因,并确保和上月相同的用户数。
发现问题
为明确现状与预期之间差距的结构,我们需要思考上月与本月有什么不同的地方。在发现问题阶段,重要的是从大而广的视角出发来考虑各种可能性。 尝试做出假设:
1. 商业推广上存在问题,流失的用户数超过了新增的用户数
2. 每月不同主题的游戏活动开始变得很无聊,用户都不爱玩了
3. 按用户的性别或者年龄段等属性来划分用户群,可能是其中某个用户群出现了问题
通过咨询市场部和游戏开发部,对上述假设进行大致的验证。
1. 同上月相比,商业推广的力度大体没变,新增用户数也大致保持在相同的水平
2. 开展的各种游戏活动同上月相比几乎没有变化
验证发现,第 1 条或第 2 条假设没有发现导致用户数减少的问题,因此可能是第3条假设,某个用户群体出现问题。—用户群通常是按照性 别、年龄段等来划分的。首先我们可以考虑是否有某个属性的用户群数量减少了,然后通过和上月的数据加以比较,确认用户数量减少了的用户属性,并思考如何恢复用户数量。
数据收集和加工
探讨所需要的数据
这里,我们只知道存在问题,但却还无法明确问题出现的原因。因此,需要通过数据分析来探索原因所在,这种方式称为“探索型数据分析”。
为了能够通过数据明确问题,我们需要下面的数据。
DAU( Daily Active User,每天至少来访 1 次的用户数据)
user_info(用户属性数据)
查看报表内容及结构,检查是否存在数据缺失
dau 数据信息包含:访问时间(log_date)、应用名称(app_name)、用户ID(user_id)
user_info 数据信息包含:首次登陆时间(install_date)、应用名称(app_name)、用户ID(user_id)、性别(gender)、年龄段(generation)、设备类型(device_type)
数据加工
合并两个数据表
添加一列只显示年月的数据‘log_month’,方便后续月度数据对比。
数据分析
进行因果关系的分析时,具体来说有以下几步。
1. 用户群分析(对每个用户群进行交叉列表统计)
2. 将已明确的用户群数据可视化
对每个用户群进行交叉列表统计(用户群分析)
用户群分析(性别)
通过比较 2013 年 8月和 9 月男女用户的数量,可以看出两个用户群的数量都下降了,但各自的构成比例却大体上没有发生变化,所以性别这个属性对现在的问题影响不大。
用户群分析(按年龄段统计)
通过比较 2013 年 8 月和 9 月的数据,我们可以看到无论是哪个年龄段,在整体用户数量中所占的比例都没有发生大的变化,也没有发现哪个年龄段的用户数大量减少了。因此,再考虑进一步细分结果,观察是否某个性别,某年龄段用户减少。
用户群分析(性别×年龄段)
通过观察统计数据,我们发现各个用户群的用户数量整体都下降了,但每个用户群所占的比例大体没变,也没有发现哪个用户群的数量急剧下降。
用户群分析(设备)
下面我们需要考虑的是用户所使用的设备的差异。
结果是使用 iOS 设备的用户数略有下降,而使用 Android 的用户却大量减少了,因此这个用户群的分析很可能就是解决该问题的关键。
为了更详细地看到上述数值的差异,我们可以生成以天为单位的时间序列图,据此来确认用户数的变化程度。
将用户群分析结果可视化
为了确定每种设备用户数在时间序列上的变化情况,我们利用时间序列图将数据可视化,并得出了显而易见的结论。上图的横轴表示访问日期,纵轴表示访问次数,两条曲线分别表示 iOS 和 Android 设备的访问次数随时间的变化情况。
可以看出, iOS 的用户数和之前大体相同,而 Android 的用户数从9 月的第 2 周开始急剧减少。
根据分析的结果,和游戏开发部门确认后,得知 9 月 12 日 Android版应用进行了一次版本升级。导致部分旧机型用户无法正常登陆。