Python 如何从上个月的平均值计算每个月的百分比变化
我有如下数据:Python 如何从上个月的平均值计算每个月的百分比变化,python,python-3.x,pandas,numpy,statistics,Python,Python 3.x,Pandas,Numpy,Statistics,我有如下数据: YearMonth PageViews Users 202001 100 10 202002 150 12 202003 100 13 202004 120 15 202005 130 10 我想找出每个新月份与上个月平均使用量的百分比差异。比如说, 202001年将为NA,因为没有上个月 202002年前一个月的平均值 将仅为202001,因此 与202
YearMonth PageViews Users
202001 100 10
202002 150 12
202003 100 13
202004 120 15
202005 130 10
我想找出每个新月份与上个月平均使用量的百分比差异。比如说,
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
尝试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
pct_change只计算前一个元素,我想计算所有前一个元素,就像滚动平均值pct_change只计算前一个元素,我想计算所有前一个元素,就像滚动平均值,如果我们有一个组,我们该怎么办?在组中找到此分析?使用lazy groupby:
groups=df.groupby('some_cols');cumsum=组[cols].cumsum();ranges=groups.cumcount()+1;output=cumsum.div(ranges,axis=0)
。如果我们有一个组,我们该怎么办?在组中找到此分析?使用lazy groupby:groups=df.groupby('some_cols');cumsum=组[cols].cumsum();ranges=groups.cumcount()+1;输出=cumsum.div(范围,轴=0)
。