how to construct an index from percentage change time series?

心已入冬 提交于 2021-01-29 04:49:42

问题


consider the values below

array1 = np.array([526.59, 528.88, 536.19, 536.18, 536.18, 534.14, 538.14, 535.44,532.21, 531.94, 531.89, 531.89, 531.23, 529.41, 526.31, 523.67])

I convert these into a pandas Series object

import numpy as np
import pandas as pd
df =  pd.Series(array1)

And compute the percentage change as

df = (1+df.pct_change(periods=1))

from here, how do i construct an index (base=100)? My desired output should be:

0     100.00
1     100.43
2     101.82
3     101.82
4     101.82
5     101.43
6     102.19
7     101.68
8     101.07
9     101.02
10    101.01
11    101.01
12    100.88
13    100.54
14     99.95
15     99.45

I can achieve the objective through an iterative (loop) solution, but that may not be a practical solution, if the data depth and breadth is large. Secondly, is there a way in which i can get this done in a single step on multiple columns? thank you all for any guidance.


回答1:


An index (base=100) is the relative change of a series in retation to its first element. So there's no need to take a detour to relative changes and recalculate the index from them when you can get it directly by

df = pd.Series(array1)/array1[0]*100



回答2:


As far as I know, there is still no off-the-shelf expanding_window version for pct_change(). You can avoid the for-loop by using apply:

# generate data
import pandas as pd
series =  pd.Series([526.59, 528.88, 536.19, 536.18, 536.18, 534.14, 538.14, 535.44,532.21, 531.94, 531.89, 531.89, 531.23, 529.41, 526.31, 523.67])

# copmute percentage change with respect to first value
series.apply(lambda x: ((x / series.iloc[0]) - 1) * 100) + 100

Output:

0     100.000000
1     100.434873
2     101.823050
3     101.821151
4     101.821151
5     101.433753
6     102.193357
7     101.680624
8     101.067244
9     101.015971
10    101.006476
11    101.006476
12    100.881141
13    100.535521
14     99.946828
15     99.445489
dtype: float64


来源:https://stackoverflow.com/questions/51856261/how-to-construct-an-index-from-percentage-change-time-series

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!