熊猫通过匹配上一年的基准来计算月度流失率

时间:2020-04-03 01:18:03

标签: python pandas

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

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

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

我有一个简单的YearMonth,User和Sales数据框。

请注意,在此简单示例中,当月可以有新用户“ 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

1 个答案:

答案 0 :(得分:0)

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