web-dev-qa-db-ja.com

頻度として年を使用してpandas DatetimeIndexを作成するには?

pandas.date_range(startdate, periods=n, freq=f)関数を使用すると、pandas Timestampオブジェクトの範囲を作成できます。ここで、freqオプションパラメーターは頻度(秒、分、時間、日...)の範囲内。

documentation は、渡されると予想されるリテラルについて言及していませんが、数分後にそれらのほとんどを簡単に見つけることができます。

  • 's':2番目
  • 'min':分
  • 'H':時間
  • 'D':日
  • 'w':週
  • 'm':月

ただし、「y」、「Y」、「yr」などのいずれも、年を頻度として日付を作成しません。誰が何を渡すべきかを知っていますか?

21
Drunken Master

年の初めまたは終わりへの年次索引付け

頻度は、年末の頻度の場合は_freq='A'_、年の初めの場合は_'AS'_です。 ドキュメントのエイリアス を確認してください。

例えば。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=4, freq='A')

戻り値

DatetimeIndex(['2000-12-31', '2001-12-31', '2002-12-31', '2003-12-31'], dtype='datetime64[ns]', freq='A-DEC', tz=None)

任意の月の初めへの年次索引付け

特定の時間から毎年使用する必要がある場合は、 アンカーオフセット を使用します。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=10, freq='AS-AUG')

戻り値

DatetimeIndex(['2000-08-01', '2001-08-01', '2002-08-01', '2003-08-01'], dtype='datetime64[ns]', freq='AS-AUG', tz=None)

任意の日付からの年次索引付け

任意の日付からインデックスを作成するには、その日付でシリーズを開始し、カスタム DateOffset オブジェクトを使用します。

例えば。 pd.date_range(start=pd.datetime(2000, 9, 10), periods=4, freq=pd.DateOffset(years=1))

戻り値

DatetimeIndex(['2000-09-10', '2001-09-10', '2002-09-10', '2003-09-10'], dtype='datetime64[ns]', freq='<DateOffset: kwds={'years': 1}>', tz=None)

38
jmz

これらすべてのハックには、明確な方法があります。

pd.date_range(start=datetime.datetime.now(),periods=5,freq='A')

A:毎年。

365D?本当に? うるう年 についてはどうですか?

3
CT Zhu

月を使用して、12か月ごとに選択できます。

months=pandas.date_range(start=datetime.datetime.now(),periods=120,freq='M')
year=[months[11*i] for i in range(12)]

次のこともできます。

usingDays=pandas.date_range(start=datetime.datetime.now(),periods=10,freq='365D')

しかし、うるう年ではあまりうまくいきません。

1
rofls

周波数文字列に倍数を使用できます。例えば:

pd.date_range('01/01/2010 '、periods = 10、freq =' 365D ')

このコードは、2010年1月1日、2011年1月1日などのシリーズを提供します。もちろん、ここでの問題は、うるう年に問題が発生することです。

0
rhozzy