pandas Python

pandasのdate_range()で日時データの連続値を生成する方法

この記事は約5分で読めます。

 

今回はpandasで日時の連続値を生成する方法について紹介したいと思います

 

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モジュールでよく使う日付データ処理のサンプルコードまとめ

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました