Повторная выборка панд DataFrame данных OHLC в трехдневные бары без учета выходных - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть дневные данные о ценах с индексами как Open, High, Low, Close и дата.Я хочу создать трехдневные бары, но я хочу, чтобы бары «переходили на выходные», чтобы в итоге я получил бары 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

Но мне не совсем ясно, как заставить это работать.

1 Ответ

0 голосов
/ 31 декабря 2018

Я не проверял это, но я думаю, что вам просто нужно использовать:

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

...