簡體   English   中英

將 OHLC 數據的 pandas DataFrame 重新采樣為三天的條形圖,忽略周末

[英]Resample pandas DataFrame of OHLC data into three-day bars ignoring weekends

我有以開盤價、最高價、最低價、收盤價和日期為索引的每日價格數據。 我想創建三天的柱狀圖,但我希望這些柱狀圖“環繞周末”,這樣我最終會得到 MTuW、TuWTh、WThF、ThFM 和 FMTu 柱狀圖。

(MTuW = 星期一星期二星期三)

(FMTu = 星期五星期一星期二)

(FSaSu = 周五周六周日)

我試過

df = df.asfreq('B')
df = df.resample('3D').mean()

但這似乎只適用於 MTuW、TuWTh 和 WThF 金條。 其他柱狀圖似乎沒有跳過周末,這意味着本應成為 FMTu 柱狀圖的實際上是一個 FSaSu 柱狀圖,或更准確地說只是一個星期五柱狀圖。

我相信有一種方法可以使這項工作也許與

from pandas.tseries.offsets import BDay

但我不清楚如何讓它發揮作用。

我沒有對此進行測試,但我認為您只需要使用:

df = df.resample('3B').mean()

更新

為了也適應假期,使用自定義規則重新采樣:

from pandas.tseries.offsets import CustomBusinessDay
from pandas.tseries.holiday import USFederalHolidayCalendar

bday_us = CustomBusinessDay(calendar=USFederalHolidayCalendar())

df = df.resample(bday_us).mean()

我在這里使用了USFederalHolidayCalendar 要在這樣的假期類中獲得假期的概述:

>>> pprint(USFederalHolidayCalendar().rules)
[Holiday: New Years Day (month=1, day=1, observance=<function nearest_workday at 0x10db3ce18>),
 Holiday: Dr. Martin Luther King Jr. (month=1, day=1, offset=<DateOffset: weekday=MO(+3)>),
 Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: weekday=MO(+3)>),
 Holiday: MemorialDay (month=5, day=31, offset=<DateOffset: weekday=MO(-1)>),
 Holiday: July 4th (month=7, day=4, observance=<function nearest_workday at 0x10db3ce18>),
 Holiday: Labor Day (month=9, day=1, offset=<DateOffset: weekday=MO(+1)>),
 Holiday: Columbus Day (month=10, day=1, offset=<DateOffset: weekday=MO(+2)>),
 Holiday: Veterans Day (month=11, day=11, observance=<function nearest_workday at 0x10db3ce18>),
 Holiday: Thanksgiving (month=11, day=1, offset=<DateOffset: weekday=TH(+4)>),
 Holiday: Christmas (month=12, day=25, observance=<function nearest_workday at 0x10db3ce18>)]

顯然,這樣的節日對象也可以從頭開始定制和構建。 有關假期課程的更多信息: https ://pandas.pydata.org/pandas-docs/stable/timeseries.html#holidays-holiday-calendars

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM