如何从前几个月的平均值计算每个月的百分比变化

问题描述

我有这样的数据:

maxValue

我想找出每个新月份与上个月使用量平均值的百分比差异。例如,

  1. 202001 年将是 NA,因为没有上个月
  2. 202002 年上个月的平均值 将只有 202001,因此页面浏览量的百分比差异 与 202001 年相比,202002 年为 50%,用户为 20%
  3. 与 202003 年类似,前几个月的平均值为 202001 年和 202002 年的平均值相加,因此综合浏览量平均值为 125(100+150 除以 2),并且用户 是 11,因此 202003 年的百分比差异将为 -20% 浏览量和 +18% 的用户等。

我如何使用 python 找到它?任何帮助,将不胜感激。谢谢。

解决方法

尝试 cumsum()/range 的累积平均值:

cols = ['PageViews','Users']
cum_mean = df[cols].cumsum().div(np.arange(len(df))+1,axis=0)
df[cols].div(cum_mean.shift()).sub(1)

输出:

   PageViews     Users
0        NaN       NaN
1   0.500000  0.200000
2  -0.200000  0.181818
3   0.028571  0.285714
4   0.106383 -0.200000