python で日時の連続値を生成し、 DataFrame や Series のインデックスとして使ってみます。
たとえば、1時間毎のデータを Series に持たせる場合、こんな感じです。
1 2 3 4 5 |
2017-01-01 00:00:00 データ0 2017-01-01 01:00:00 データ1 2017-01-01 02:00:00 データ2 2017-01-01 03:00:00 データ3 2017-01-01 04:00:00 データ4 |
連続値の生成は pandas の date_range 関数で行います。
- 目次 -
スポンサーリンク
date_range の使い方
date_range の使い方として、以下の2種類があります。
- 日時の開始、終了を指定する
- 日時の開始(または終了)と個数を指定する
日時の開始、終了を指定する場合
開始と終了を start, end で、間隔を freq で指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import pandas as pd # # 一日毎の連続値 # pd.date_range(start='1/1/2017', end='1/5/2017', freq='D') #---------------------------------------------------------------------- # DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', # '2017-01-05'], # dtype='datetime64[ns]', freq='D') #---------------------------------------------------------------------- # # 一時間毎の連続値 # pd.date_range(start='1/1/2017 10:00:00', end='1/1/2017 14:00:00', freq='H') #---------------------------------------------------------------------- # DatetimeIndex(['2017-01-01 10:00:00', '2017-01-01 11:00:00', # '2017-01-01 12:00:00', '2017-01-01 13:00:00', # '2017-01-01 14:00:00'], # dtype='datetime64[ns]', freq='H') #---------------------------------------------------------------------- |
日時の開始(または終了)と個数を指定する場合
periods で個数を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# # 開始と個数 # pd.date_range(start='1/1/2017', periods=5, freq='D') #-------------------------------------------------------------------------------------------------- # DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', # '2017-01-05'], # dtype='datetime64[ns]', freq='D') #-------------------------------------------------------------------------------------------------- # # 終了と個数 # pd.date_range(end='1/1/2017', periods=5, freq='D') #-------------------------------------------------------------------------------------------------- # DatetimeIndex(['2016-12-28', '2016-12-29', '2016-12-30', '2016-12-31', # '2017-01-01'], # dtype='datetime64[ns]', freq='D') #-------------------------------------------------------------------------------------------------- |
インデックスに
生成した値を pandas のインデックスとして使ってみます。以下の例は Series のインデックスにしたケースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from pandas import Series dates = pd.date_range('1/1/2017', periods=5, freq='D') ts = Series(range(5), index=dates) print (ts) #------------------------ # 2017-01-01 0 # 2017-01-02 1 # 2017-01-03 2 # 2017-01-04 3 # 2017-01-05 4 # Freq: D, dtype: int64 #------------------------ |
freq いろいろ
間隔を指定する freq には、いろいろな値を指定できます。
詳しくは 公式サイト で確認できますが、いくつか試してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# # freq : 3日 # pd.date_range('1/1/2017', periods=3, freq='3D') #--------------------------------------------------------------------------------------------- # DatetimeIndex(['2017-01-01', '2017-01-04', '2017-01-07'], dtype='datetime64[ns]', freq='3D') #--------------------------------------------------------------------------------------------- # # freq : 2時間30分 # pd.date_range('1/1/2017', periods=3, freq='2H30min') #---------------------------------------------------------------- # DatetimeIndex(['2017-01-01 00:00:00', '2017-01-01 02:30:00', # '2017-01-01 05:00:00'], # dtype='datetime64[ns]', freq='150T') #---------------------------------------------------------------- # # freq : 4半期の開始日 # pd.date_range('1/1/2017', periods=3, freq='QS') #-------------------------------------------------------------------------------------------------- # DatetimeIndex(['2017-01-01', '2017-04-01', '2017-07-01'], dtype='datetime64[ns]', freq='QS-JAN') #-------------------------------------------------------------------------------------------------- |