Pandas 熊猫:如何根据月度数据计算年度通胀?
我有一个带有月经通货膨胀的数据框,它有一个周期指数:Pandas 熊猫:如何根据月度数据计算年度通胀?,pandas,Pandas,我有一个带有月经通货膨胀的数据框,它有一个周期指数: 通货膨胀 月份 2016-01 1.27 2016-02 0.90 2016-03 0.43 2016-04 0.61 2016-05 0.78 2016-06 0.35 2016-07 0.52 2016-08 0.44 2016-09 0.08 2016-10 0.26 2016-11 0.18 2016-
通货膨胀
月份
2016-01 1.27
2016-02 0.90
2016-03 0.43
2016-04 0.61
2016-05 0.78
2016-06 0.35
2016-07 0.52
2016-08 0.44
2016-09 0.08
2016-10 0.26
2016-11 0.18
2016-12 0.30
2017-01 0.38
2017-02 0.33
2017-03 0.25
2017-04 0.14
2017-05 0.31
2017-06 -0.23
2017-07 0.24
2017-08 0.19
2017-09 0.16
2017-10 0.42
2017-11 0.28
2017-12 0.44
我认为年通货膨胀率很容易计算,只需重新取样到一个年周期:
(df/100+1).resample('A').cumprod()
但它给了我一个错误:
AttributeError: 'PeriodIndexResampler' object has no attribute 'cumprod'
它适用于更简单的函数,比如sum,但我尝试了一些替代方法,而cumprod并没有对结果进行聚合
我的预期答案是:
2016 1.062881
2017 1.029473
进行此计算的最佳方法是什么?
以下是用于复制和粘贴的数据:
python
[[期间('2016-01,'M'),1.27],
[期间('2016-02,'M'),0.9],
[期间('2016-03,'M'),0.43],
[期间('2016-04','M'),0.61],
[期间('2016-05,'M'),0.78],
[期间('2016-06,'M'),0.35],
[期间('2016-07','M'),0.52],
[期间('2016-08,'M'),0.44],
[期间('2016-09','M'),0.08],
[期间('2016-10','M'),0.26],
[期间('2016-11','M'),0.18],
[期间('2016-12','M'),0.3],
[期间('2017-01,'M'),0.38],
[期间('2017-02','M'),0.33],
[期间('2017-03,'M'),0.25],
[期间('2017-04','M'),0.14],
[期间('2017-05','M'),0.31],
[期间('2017-06','M'),-0.23],
[期间('2017-07','M'),0.24],
[期间('2017-08','M'),0.19],
[期间('2017-09','M'),0.16],
[期间('2017-10','M'),0.42],
[期间('2017-11','M'),0.28],
[期间('2017-12','M'),0.44]]
使用:
df.groupby(pd.Grouper(freq='A')).cumprod()
使用:
什么是预期输出?什么是预期输出?这并不奇怪,如果我使用sum()运行,它会正确地给出聚合值,但是如果我使用cumprod()运行,它会返回每个月的值。看起来pandas没有将cumprod()视为聚合函数。@neves-是的,它应该返回与原始数据帧相同大小的序列。sum,mean aggregate data,
cumsum
,cumprod
,diff
不是。因此可能需要先使用sum
之类的,然后再对输出系列df.groupby(pd.Grouper(freq='A')).sum().cumprod()
如果我使用sum()运行,它会正确地给出聚合值,但是如果我使用cumprod()运行,它会返回每个月的值。看起来pandas没有将cumprod()视为聚合函数。@neves-是的,它应该返回与原始数据帧相同大小的序列。求和,平均聚集数据,cumsum
,cumprod
,diff
不是。因此可能需要首先使用sum
类似,然后用于输出系列df.groupby(pd.Grouper(freq='A')).sum().cumprod()