今回はpandasで日時の連続値を生成する方法について紹介したいと思います
Contents
date_range()メソッドとは
date_range()メソッドは、pandasで日時の連続値を生成するときに使用されるメソッドです。指定した期間内の日付や時刻の配列を生成することができます。
date_range()メソッドの使い方
date_range()メソッドは、下記のように使用します。
pd.date_range( start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs )
引数には、start、end、periods、freq等が指定できます。
・start: 開始日時。デフォルトはNone。
・end: 終了日時。デフォルトはNone。
・periods: 期間。デフォルトはNone。
・freq: 日時オフセット。デフォルトはNone。
・tz: タイムゾーン。デフォルトはNone。
・normalize: Trueの場合、日付の正規化を行う。デフォルトはFalse。
・name: DatetimeIndexの名前を指定する。デフォルトはNone。
・closed: intervalの開始と終了のどちらが閉区間かを指定する。デフォルトはNone。
date_range()メソッドで日時データを生成するサンプルコード
date_range()メソッドで生成されるデータは、DatetimeIndexという形式の配列です。日時を扱う際には、この形式の配列を使うことが多いです。
以下は、date_range()メソッドを用いた日時の連続値の生成のサンプルコードです。
import pandas as pd # 日時の連続値を生成する # startを指定しない場合、デフォルトで1970-01-01が設定される dates = pd.date_range(start='2023-01-01', end='2023-01-31', freq='D') print(dates)
上記のコードを実行すると、2021年1月1日から2021年1月31日までの日付が1日ごとに生成されます。
DatetimeIndex([‘2023-01-01’, ‘2023-01-02’, ‘2023-01-03’, ‘2023-01-04’, ‘2023-01-05’, ‘2023-01-06’, ‘2023-01-07’, ‘2023-01-08’, ‘2023-01-09’, ‘2023-01-10’, ‘2023-01-11’, ‘2023-01-12’, ‘2023-01-13’, ‘2023-01-14’, ‘2023-01-15’, ‘2023-01-16’, ‘2023-01-17’, ‘2023-01-18’, ‘2023-01-19’, ‘2023-01-20’, ‘2023-01-21’, ‘2023-01-22’, ‘2023-01-23’, ‘2023-01-24’, ‘2023-01-25’, ‘2023-01-26’, ‘2023-01-27’, ‘2023-01-28’, ‘2023-01-29’, ‘2023-01-30’, ‘2023-01-31′], dtype=’datetime64[ns]’, freq=’D’)
freq=’D’とすることで日を指定しています。そのほかの引数は以下のようになります
- H…1時間
- D…日
- W…週
- M…月
- QS…4半期
1時間毎の連続値を生成する
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’)
#———————————————————————-
中途半端な時間間隔でも生成可能
他にも2時間半おきみたいな微妙な間隔の時間データも生成可能です。
# 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’)
#—————————————————————-
【参考文献】
・pandas documentation: https://pandas.pydata.org/docs/
関連記事:【Python】pandasで日付データの欠損を補完するサンプルコード
関連記事:datetimeモジュールでよく使う日付データ処理のサンプルコードまとめ
コメント