我知道如何使用熊猫数据帧计算绝对百分比变化,使用以下方法:
df_pctChange = df_absolute.pct_change()
但我似乎无法弄清楚如何计算相反的情况:以df_absolute
的第一行为起点,如何从位于df_pctChange
的百分比变化中计算绝对数?
例如,假设 df_absolute
中两列的初始行是 548625
和 525980
,df_pctChange
如下:
NaN NaN
-0.004522 -0.000812
-0.009018 0.001385
-0.009292 -0.002438
如何制作df_absolute
的内容?它应如下所示:
548625 525980
546144 525553
541219 526281
536190 524998
您应该能够使用以下公式:
(1 + r).cumprod()
以获得累积增长因子。
例:
>>> data
0 1
0 548625 525980
1 546144 525553
2 541219 526281
3 536190 524998
>>> pctchg = data.pct_change()
>>> init = data.iloc[0] # may want to use `data.iloc[0].copy()`
>>> res = (1 + pctchg).cumprod() * init
>>> res.iloc[0] = init
>>> res
0 1
0 548625.0 525980.0
1 546144.0 525553.0
2 541219.0 526281.0
3 536190.0 524998.0
为了确认您向后计算出正确的绝对数字:
>>> np.allclose(data, res)
True