Pandas通过匹配上一年的基线来计算每月的流失率

2024-04-23 18:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要计算数百万用户每月的流失率

月流失率=当月流失用户数/上年12月总用户数

如果用户存在于基线(2016年12月),且当月销售额小于1,则该用户被视为当月的客户流失

我有一个简单的数据框架,包括年、月、用户和销售额

注意:在这个简单的示例中,当月可能有新用户“D”,但由于“D”不在上一年的12月,因此在计算流失率的基线中不考虑它

YearMonth   User    Sales  Year  Month
201612      A       2      2016  12
201612      B       2      2016  12 
201612      C       2      2016  12
201701      A       3      2017  1
201701      B       0.5    2017  1
201701      C       1      2017  1
201701      D       1      2017  1
201702      A       2      2017  2
201702      B       3      2017  2 
201702      C       2      2017  2
201702      D       0.5    2017  2

计算流失率的最有效方法是什么?

YearMonth   User    Sales   Churn or Not?   Churn Rate  In Baseline?
201612      A       2       0               NA          1
201612      B       2       0               NA          1
201612      C       2       0               NA          1
201701      A       3       0               1/3         1
201701      B       0.5     1               1/3         1
201701      C       1       0               1/3         1
201701      D       1       0               1/3         0
201702      A       2       0               0/3         1
201702      B       3       0               0/3         1
201702      C       2       0               0/3         1
201702      D       0.5     0               0/3         0

所需数据帧输出

YearMonth   Churn Rate
201612      NA
201701      1/3
201702      0

Tags: 数据用户框架示例客户ratesalesna
1条回答
网友
1楼 · 发布于 2024-04-23 18:11:34

IIUC

s=df.pivot(*['YearMonth','User','Sales'])
s=s.loc[:,s.iloc[0].notna()]
s.lt(1).sum(1).drop(201612).reindex(s.index)/s.shape[1]
YearMonth
201612         NaN
201701    0.333333
201702    0.000000
dtype: float64

相关问题 更多 >