前言:
群组分析指的是针对具有共同特征的一群用户,对其进行留存、活跃、付费等情况分析,通常会以一定时间段划分用户行为。
本次案例数据源来自秦路老师的orderinfo,对于群组进行用户留存分析,以周为单位。
最终结果:
案例步骤
数据读取
字段解释:
orderid - 订单id,无重复
userid - 用户id,有重复
ispaid - 是否支付,分已支付、未支付,本次研究已支付部分
paidtime - 支付时间
一、数据清洗
1.1 Paidtime剔除空值影响
1.2 剔除isPaid未支付
1.3 建立新字段OrderPeriod
因为我们是在做周度群组,所以我们会关注用户的周度行为。
转换数据类型
新建字段OrderPeriod,以周为时间段划分
二、数据处理
2.1 创建一个名为CohortGroup的新列,它是用户第一次购买的时间区段。
2.2 按CohortGroup 及 OrderPeriod 汇总数据,查看每个时间段第一次购买的总用户人数
2.3 为每个CohortGroup标记CohortPeriod
我们想要查看每个队列在他们第一次购买后的几周内的表现,因此我们需要将每个队列与他们的第一次购买的时间段建立索引。例如,CohortPeriod = 1是队列的第一个时间段,CohortPeriod = 2是第二个时间段,以此类推。
2.4用户保留按群组分组
我们想要查看每组随时间变化的百分比,而不是绝对变化。
为此,我们首先需要创建一个包含每个CohortGroup及其大小的panda系列
现在,我们需要用cohort_group_size除以以cohort_group_size为单位的TotalUsers值。由于DataFrame操作是基于对象的索引执行的,所以我们将在我们的组DataFrame上使用unstack来创建一个矩阵,其中每一列表示一个CohortGroup,每一行表示对应于该组的CohortPeriod。
为了说明unstack的作用,请回忆一下前五个TotalUsers值:
三、最后,我们可以绘制随时间变化的队列,以发现行为上的差异或相似之处。
两种常见的队列图是线图和热力图,如下图所示。
请注意,每个队列的第一阶段是100%——这是因为我们的队列基于每个用户的第一次购买,也就是说队列中的每个人都是在第一个时间段购买的。
参考网站:https://www.jianshu.com/p/1d0aad81b6eb
数据源:https://pan.baidu.com/s/12iKprOiRA0O79NcsPggeMA