Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从上个月的平均值计算每个月的百分比变化_Python_Python 3.x_Pandas_Numpy_Statistics - Fatal编程技术网

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
我想找出每个新月份与上个月平均使用量的百分比差异。比如说,

  • 202001年将为NA,因为没有上个月
  • 202002年前一个月的平均值 将仅为202001,因此 与202001相比,202002为50%,用户为20%
  • 同样,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
    
    尝试
    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)