私はパンダを使用していますが、パンダを使用して開始日と終了日の間の営業日を取得する最も簡単な方法は何ですか?パンダを使用して開始日から終了日までの営業日を取得します
Pythonでこれを行うことに関する多くの投稿(example)がありますが、私はパンダがおそらくこれを簡単に処理できると思うので、直接パンダを使用することに興味があります。
私はパンダを使用していますが、パンダを使用して開始日と終了日の間の営業日を取得する最も簡単な方法は何ですか?パンダを使用して開始日から終了日までの営業日を取得します
Pythonでこれを行うことに関する多くの投稿(example)がありますが、私はパンダがおそらくこれを簡単に処理できると思うので、直接パンダを使用することに興味があります。
BDay()
を使用して、範囲内の営業日を取得してください。スライスして
from pandas.tseries.offsets import *
In [185]: s
Out[185]:
2011-01-01 -0.011629
2011-01-02 -0.089666
2011-01-03 -1.314430
2011-01-04 -1.867307
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-08 0.800262
2011-01-09 0.376406
2011-01-10 -0.469988
Freq: D
In [186]: s.asfreq(BDay())
Out[186]:
2011-01-03 -1.314430
2011-01-04 -1.867307
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-10 -0.469988
Freq: B
:
In [187]: x=datetime(2011, 1, 5)
In [188]: y=datetime(2011, 1, 9)
In [189]: s.ix[x:y]
Out[189]:
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-08 0.800262
2011-01-09 0.376406
Freq: D
In [190]: s.ix[x:y].asfreq(BDay())
Out[190]:
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
Freq: B
とcount()
In [191]: s.ix[x:y].asfreq(BDay()).count()
Out[191]: 3
また、この目的のためにdate_range
を使用することができます。
In [3]: pd.date_range('2011-01-05', '2011-01-09', freq=BDay())
Out[3]: DatetimeIndex(['2011-01-05', '2011-01-06', '2011-01-07'], dtype='datetime64[ns]', freq='B', tz=None)
EDIT
またはそれ以上の単純な
In [7]: pd.bdate_range('2011-01-05', '2011-01-09')
Out[7]: DatetimeIndex(['2011-01-05', '2011-01-06', '2011-01-07'], dtype='datetime64[ns]', freq='B', tz=None)
両方の開始日と終了日が含まれていることに注意してください。 出典:。bdate_rangeまたはBDAY()を使用した場合http://pandas.pydata.org/pandas-docs/stable/generated/pandas.bdate_range.html
ちょうど気をつけて - 現実には、ストリッピング週末とだけ暦日(IEのに対し、名前が、それは営業日の範囲であることを考えるようにあなたを誤解させる可能性があること祝日を考慮しない)。
v0.14以降、休日カレンダーを使用できます。
from pandas.tseries.holiday import USFederalHolidayCalendar from pandas.tseries.offsets import CustomBusinessDay us_bd = CustomBusinessDay(calendar=USFederalHolidayCalendar()) print pd.DatetimeIndex(start='2010-01-01',end='2010-01-15', freq=us_bd)
リターン:
DatetimeIndex(['2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08', '2010-01-11', '2010-01-12', '2010-01-13', '2010-01-14', '2010-01-15'], dtype='datetime64[ns]', freq='C')
日付範囲の間の日数が必要な場合は、これを 'pdDatetimeIndex(start = '2010-01-01'、end = '2010-01-15'、freq = us_bd)として取得できます。.shape [ 0] ' – tsando
すごい..完璧!どうもありがとうございました! –