如何最好地构建多个股票的多个时间序列?

问题描述 投票:0回答:1

我是Pandas世界的新手,我正试图找出构建数据框架的最佳实践,以便对金融时间序列进行各种时间计算。

我目前正在导入定价时间序列如下:

data_frames = { }
START_DATE = '2000-01-01'
TICKERS = [ 'SPY', 'VWO', 'TLT']

for ticker in TICKERS:
  data_frames[ticker] = pdr.get_data_tiingo( ticker, start = START_DATE, api_key='xxxxxxxx' )

导入之后,数据帧['SPY']的前几列如下所示:

                         adjClose     adjHigh      adjLow     adjOpen  adjVolume  \
symbol date                                                                    
SPY    2000-01-03  101.407597  103.368638  100.318130  103.368638    8164300   
       2000-01-04   97.441937  100.448866   97.365652  100.078415    8089800   
       2000-01-05   97.616251   98.683897   95.698789   97.572673   12177900   
       2000-01-06   96.047419   98.662140   96.047419   97.354779    6227200 

如果我想进行比较时间序列的计算,那么组合三个代码的时间序列的推荐方法是什么。我的第一个想法是我应该连接数据帧

dfs_concat = pd.concat( [data_frames['SPY'], data_frames['VWO'], data_frames['TLT']] )

然后使用apply函数

dfs_concat.apply( some_cross_asset_calculation_here, axis = 1 )

但在some_cross_asset_calculation_here()中,我可以访问一个自动收报机的数据帧行,但不能访问其他代码。

我想我可以在每个自动收报机的一个数据框中创建列,这样我就有了SPY_adjClose,SPY_adjOpen,TLT_adjClose,TLT_adjOpen等列。但这感觉不太对劲。

感觉我必须错过一个如何最好地处理数据的明显方法。

提前致谢!

pandas
1个回答
0
投票

您可以将索引级别symbol作为分类变量放入列中

df = data_frames.drop_index(level='symbols')

然后,您可以根据该列(df[df['type''] == 'SPY'])选择数据或执行每组操作(df.groupby('type').apply(som_func)或`for name,group in df.groupby('type):...')。

这也应该可以在索引轴上进行,但我更喜欢将其存储在列中

© www.soinside.com 2019 - 2024. All rights reserved.