使用熊猫数据帧从百分比变化中计算绝对值



我知道如何使用熊猫数据帧计算绝对百分比变化,使用以下方法:

df_pctChange = df_absolute.pct_change()

但我似乎无法弄清楚如何计算相反的情况:以df_absolute的第一行为起点,如何从位于df_pctChange的百分比变化中计算绝对数?

例如,假设 df_absolute 中两列的初始行是 548625525980df_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

最新更新