Pandas:使用 itertuples 时如何计算滚动指标(平均值、标准差、z 分数等)?

我正在尝试计算金融时间序列数据的滚动指标。我想使用循环方法来模拟实时数据的测试。


在 itertuples 循环中计算这些滚动指标的最有效方法是什么?


示例数据:


DateTime                 Bid                                              

2006-01-03 00:01:07.588  0.85208       

2006-01-03 00:01:08.654  0.85213       

2006-01-03 00:01:08.859  0.85212       

2006-01-03 00:01:11.472  0.85215       

2006-01-03 00:01:12.002  0.85218  

...                          ...  

2020-03-15 23:59:57.150  0.85178  

2020-03-15 23:59:57.300  0.85179  

2020-03-15 23:59:58.233  0.85179  

2020-03-15 23:59:58.366  0.85178  

2020-03-15 23:59:58.595  0.85179  

到目前为止我有代码。


df = pd.read_hdf(r"F:\Market Data\2020.3.15 FXAUDCAD-TICK-NoSession.h5")

df = df.set_index(pd.DatetimeIndex(df['DateTime']))

df = df.drop(columns=['DateTime'])


Rolling_Metric = []


for row in df.itertuples():

     ?


江户川乱折腾
浏览 115回答 1
1回答

繁花不似锦

我认为 pandas 不适合解决这个问题。如果你有像api这样的数据生成源,这里由生成器模拟import numpy as npdef gen():    while True:        yield np.random.rand((np.random.randint(1,10)))输出不同大小的数据数组for i in islice(gen(), 4):    print(i)输出[0.1591485][0.40462191 0.32921298 0.64704824 0.9433797  0.44754502 0.47600713 0.66130654][0.45582976 0.37764161 0.47205139 0.32354448 0.06795233 0.47943393 0.13395702][0.0967848]例如,您可以使用 10 个样本的窗口来计算滚动测量值import timefrom itertools import islicedata = np.array([])for new_data in islice(gen(), 5):              # get data    for elem in new_data:                      # iterate through new data        data = np.concatenate((data, [elem]))  # add new data row by row        print(data[-10:].mean())               # get mean of last 10 observations    time.sleep(.5)输出0.82510549810034620.51543318642629890.56774704775723740.60848441478560470.65324256152311220.66636839169318940.67688105119033730.60986977719035540.59764159740473670.54421126227035450.5567218585292910.58511079751540730.61295485717516870.55195078902953040.478099011252528070.4575999270371350.477395355740477640.51354943767740830.56208254596370690.59140863960347810.55547890931021130.60424567734901610.58605248675015150.62186279455206320.65099482718077250.66937757006740350.66571655694074650.68254553025791730.6092968847209230.6708821735456445
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python