亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas:使用 itertuples 時如何計算滾動指標(平均值、標準差、z 分數等)?

Pandas:使用 itertuples 時如何計算滾動指標(平均值、標準差、z 分數等)?

江戶川亂折騰 2023-08-22 18:20:56
我正在嘗試計算金融時間序列數據的滾動指標。我想使用循環方法來模擬實時數據的測試。在 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():     ?
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

我認為 pandas 不適合解決這個問題。

如果你有像api這樣的數據生成源,這里由生成器模擬


import numpy as np

def 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 time

from itertools import islice


data = 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.8251054981003462

0.5154331864262989

0.5677470477572374

0.6084844147856047

0.6532425615231122

0.6663683916931894

0.6768810511903373

0.6098697771903554

0.5976415974047367

0.5442112622703545

0.556721858529291

0.5851107975154073

0.6129548571751687

0.5519507890295304

0.47809901125252807

0.457599927037135

0.47739535574047764

0.5135494376774083

0.5620825459637069

0.5914086396034781

0.5554789093102113

0.6042456773490161

0.5860524867501515

0.6218627945520632

0.6509948271807725

0.6693775700674035

0.6657165569407465

0.6825455302579173

0.609296884720923

0.6708821735456445


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號