繁体   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