Cohort Analysis:留存分析Excel版

本文介绍了如何在Excel中利用MINIFS函数找出首次付款日期,然后通过拼接方式获取该日期的月份。接着,展示了如何插入并配置透视表,以及启用数据模型来增强分析功能。

源数据如图

  1. 采用公式minifs取首次付款日期

=MINIFS(B:B,A:A,A2)

结果如图

2. 取得日期的月份

可以采用拼接字方式,例如:=YEAR(B2)&"-"&MONTH(B2)

结果如图

3. 插入透视表

记得勾选将此数据添加到数据模型

透视表配置,如图

最终结果如图

<think> 我们参考了上述引用中关于群组分析Cohort Analysis)的内容,尤其是引用[2]、[3]、[4]中提到的分析步骤和代码示例。群组分析的核心是将用户划分为具有共同特征的群组(如同期注册、首次购买等),然后跟踪这些群组在一段时间内的行为(如留存率、活跃度等)。以下是进行群组分析的一般步骤和Python实现方法: ### 1. 数据准备 首先,需要准备包含以下字段的数据集: - **用户ID**:唯一标识用户。 - **行为时间**:用户发生行为(如注册、购买)的时间戳。 - **行为类型**(可选):如注册、购买等,用于确定群组的划分依据。 ### 2. 定义群组 通常,我们将用户按首次发生关键行为的时间划分群组(如按首次注册的月份)。例如: - 将每个用户分配到其首次注册的月份(群组月份)。 - 计算每个用户后续每个月的活跃情况(相对于首次注册月份的时间间隔)。 ### 3. 计算群组指标 常见的指标是留存率(Retention Rate),即某个群组在后续时间点仍然活跃的用户比例。 ### 4. 数据透视表 将数据转换为群组分析矩阵,行表示群组(如注册月份),列表示时间间隔(如第1个月、第2个月等),值表示留存率或活跃用户数。 ### Python实现示例 以下代码基于引用[4]中的示例,使用pandas进行群组分析: ```python import pandas as pd import numpy as np # 假设df包含以下列:CustomerID(用户ID),OrderDate(订单日期) # 步骤1:创建群组月份(CohortMonth),即每个用户首次购买的月份 df['OrderDate'] = pd.to_datetime(df['OrderDate']) df['OrderMonth'] = df['OrderDate'].dt.to_period('M') # 按用户分组,找到每个用户的首次购买月份(即群组月份) df_cohort = df.groupby('CustomerID')['OrderMonth'].min().reset_index() df_cohort.rename(columns={'OrderMonth':'CohortMonth'}, inplace=True) # 合并回原始数据,这样每条记录都有该用户所在的群组月份 df = pd.merge(df, df_cohort, on='CustomerID') # 步骤2:计算每个订单相对于群组月份的时间间隔(月数) df['CohortIndex'] = (df['OrderMonth'] - df['CohortMonth']).apply(lambda x: x.n) # 步骤3:按群组月份和时间间隔分组,统计唯一用户数 cohort_data = df.groupby(['CohortMonth', 'CohortIndex'])['CustomerID'].nunique().reset_index() # 步骤4:创建数据透视表(群组分析矩阵) cohort_counts = cohort_data.pivot_table(index='CohortMonth', columns='CohortIndex', values='CustomerID') # 步骤5:计算留存率(用每个群组的第一个月的用户数作为分母) cohort_sizes = cohort_counts.iloc[:,0] retention = cohort_counts.divide(cohort_sizes, axis=0) # 按行除,即每个群组除以自己的群组大小 retention = retention.round(3) * 100 # 转换为百分比 # 输出留存率矩阵 print(retention) ``` ### 结果解释 - 行索引:群组月份(如2019-01表示2019年1月首次购买的用户群)。 - 列索引:时间间隔(0表示群组月份当月,1表示下个月,依此类推)。 - 值:留存率(百分比),例如,0列都是100%,因为用户在自己的群组月份都是活跃的。 ### 可视化 可以使用热图(Heatmap)来直观展示留存率矩阵: ```python import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(12, 8)) sns.heatmap(retention, annot=True, fmt='.1f', cmap='Blues', vmin=0, vmax=100) plt.title('Monthly Cohorts: User Retention') plt.ylabel('Cohort Month') plt.xlabel('Months Since First Purchase') plt.show() ``` ### 注意事项 - 群组分析不仅限于时间维度,还可以根据用户的行为特征(如首次购买的商品类别)划分群组。 - 留存率是常用指标,但也可以使用其他指标,如平均订单金额、购买频率等。 §§相关问题§§ 1. 群组分析中,如何选择划分群组的依据? 2. 除了留存率,群组分析还可以分析哪些指标? 3. 如何解释群组分析矩阵中的异常值? </think> ### 群组分析Cohort Analysis)方法详解 群组分析是通过将用户划分为具有共同特征的群体(如同期注册、相同行为路径等),追踪其随时间变化的指标(如留存率、转化率等)的分析方法。以下是基于引用内容的完整实施步骤: --- #### **1. 定义群组(Cohort)** 根据业务目标选择划分维度: - **时间型群组**:按用户首次行为时间划分 示例:`2023年6月注册用户`、`2023Q1首次购买用户`(引用[3]) - **行为型群组**:按关键行为特征划分 示例:`通过渠道B注册的用户`、`首单金额>500元的用户`(引用[5]) --- #### **2. 数据处理与计算** 使用Python实现核心计算(引用[4]): ```python import pandas as pd # 步骤1:计算每个用户的首次行为时间 df['首次行为日期'] = df.groupby('用户ID')['行为日期'].transform('min') df['群组月份'] = df['首次行为日期'].dt.to_period('M') # 步骤2:计算时间间隔(群组索引) df['时间间隔'] = (df['行为日期'].dt.to_period('M') - df['群组月份']).apply(lambda x: x.n) # 步骤3:按群组和时间间隔聚合 cohort_data = df.groupby(['群组月份', '时间间隔'])['用户ID'].nunique().reset_index() # 步骤4:生成透视表 retention_matrix = cohort_data.pivot_table( index='群组月份', columns='时间间隔', values='用户ID', aggfunc='sum' ) ``` --- #### **3. 关键指标计算** - **留存率公式**: $$留存率 = \frac{当前活跃用户数}{群组初始用户数} \times 100\%$$ 示例代码: ```python initial_users = retention_matrix.iloc[:, 0] # 群组首月用户数 retention_rate = retention_matrix.div(initial_users, axis=0) * 100 ``` - **其他常用指标**: - 人均收入(ARPU) - 行为转化率 - 复购率(引用[5]) --- #### **4. 可视化分析** - **热力图展示留存率**: ```python import seaborn as sns plt.figure(figsize=(12,8)) sns.heatmap(retention_rate, annot=True, fmt=".1f", cmap="YlGnBu") plt.title("月度群组留存分析", fontsize=14) ``` - **折线图对比群组**: ![](https://example.com/cohort-chart.png) *不同渠道群组的留存趋势对比(引用[5])* --- #### **5. 分析决策应用** - **识别优质群组**:高留存群组(如渠道A用户)增加资源投入(引用[5]) - **产品迭代验证**:对比改前后新用户留存率变化(引用[5]) - **异常诊断**:特定群组指标骤降时定位问题(如渠道B用户留存差) --- ### 常见工具推荐 1. **Python库**: - `pandas`(数据处理) - `matplotlib/seaborn`(可视化) 2. **BI工具**: - Tableau(内置群组分析模块) - Google Analytics(同期群报告) > **注意事项**:群组规模需>100用户以保证统计显著性,时间周期选择需匹配业务场景(周/月/季)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wo.austin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值