【Python】pd.date_range()で指定した範囲の日付を取得
pandas.date_range()とは
pandas.date_range()は、pandasライブラリの関数で、datetime型のindexを作成するために使用されます。戻り値はDatetimeIndexオブジェクトであり、生成された日付がインデックスとして格納されます。この関数は、start引数とend引数を指定することで、その期間内のdatetime型のindexを作成することができます。また、freq引数を使用して、indexの頻度を指定することもできます。
指定した範囲の連続した日付を取得する
以下のように記述することで、2023年4月1日から2023年4月30日までの連続した日付を生成することができます。
dates = pd.date_range(start='2023-04-01', end='2023-04-30') print(dates)
実行結果
DatetimeIndex(['2023-04-01', '2023-04-02', '2023-04-03', '2023-04-04', '2023-04-05', '2023-04-06', '2023-04-07', '2023-04-08', '2023-04-09', '2023-04-10', '2023-04-11', '2023-04-12', '2023-04-13', '2023-04-14', '2023-04-15', '2023-04-16', '2023-04-17', '2023-04-18', '2023-04-19', '2023-04-20', '2023-04-21', '2023-04-22', '2023-04-23', '2023-04-24', '2023-04-25', '2023-04-26', '2023-04-27', '2023-04-28', '2023-04-29', '2023-04-30'], dtype='datetime64[ns]', freq='D')
name引数を指定するとDataFrameにするときに便利
pandas.date_range()関数の引数には、name引数があります。name引数は、DatetimeIndexオブジェクトの名前を指定するために使用されます。name引数は省略可能で、デフォルト値はNoneです。name引数を使って名前を指定すると、DataFrameを作るときに名前がcolumn名になるため便利です。
以下のように記述することで、column名がdateで中身が2023年4月1日から2023年4月30日までの連続した日付のDataFrameを生成することができます。
dates = pd.date_range(start='2023-04-01', end='2023-04-30', name='date') pd.DataFrame(dates)
実行結果
date | |
---|---|
0 | 2023-04-01 |
1 | 2023-04-02 |
2 | 2023-04-03 |
3 | 2023-04-04 |
4 | 2023-04-05 |
5 | 2023-04-06 |
6 | 2023-04-07 |
7 | 2023-04-08 |
8 | 2023-04-09 |
9 | 2023-04-10 |
10 | 2023-04-11 |
11 | 2023-04-12 |
12 | 2023-04-13 |
13 | 2023-04-14 |
14 | 2023-04-15 |
15 | 2023-04-16 |
16 | 2023-04-17 |
17 | 2023-04-18 |
18 | 2023-04-19 |
19 | 2023-04-20 |
20 | 2023-04-21 |
21 | 2023-04-22 |
22 | 2023-04-23 |
23 | 2023-04-24 |
24 | 2023-04-25 |
25 | 2023-04-26 |
26 | 2023-04-27 |
27 | 2023-04-28 |
28 | 2023-04-29 |
29 | 2023-04-30 |
日付のマスタを作成したいときに役立ちそうです。
freq引数を使って指定した範囲の月初の日付を取得する
freq引数は、生成する日付の間隔を指定するために使用されます。freq引数は省略可能で、デフォルト値は’D’です。freq引数には、‘D’(日)、‘H’(時間)、‘T’(分)、‘S’(秒)、‘L’(ミリ秒)、‘U’(マイクロ秒)、‘N’(ナノ秒)などがあります。月初の日付を取得する場合は‘MS’を指定します。
以下のように記述することで20223年の毎月の月初の日付を所得できます。
pd.date_range(start='2023-01-01', end='2023-12-01', freq='MS')
実行結果
DatetimeIndex(['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2023-05-01', '2023-06-01', '2023-07-01', '2023-08-01', '2023-09-01', '2023-10-01', '2023-11-01', '2023-12-01'], dtype='datetime64[ns]', freq='MS')
ちなみにstart引数とend引数にはどの日(day)を入れても、freq引数が'MS'ならば、月初の日付を取得することになります。
pd.date_range(start='2023-01-15', end='2023-12-31', freq='MS')
実行結果
DatetimeIndex(['2023-02-01', '2023-03-01', '2023-04-01', '2023-05-01', '2023-06-01', '2023-07-01', '2023-08-01', '2023-09-01', '2023-10-01', '2023-11-01', '2023-12-01'], dtype='datetime64[ns]', freq='MS')
freq引数を使って指定した範囲のn日毎の日付を取得する
freq引数を使うことで、n日毎の日付けを取得することができます。 例えば7日毎の日付を取得する場合は下記のように記述します。
pd.date_range(start='2023-04-01', end='2023-04-30', freq='7D')
実行結果
DatetimeIndex(['2023-04-01', '2023-04-08', '2023-04-15', '2023-04-22', '2023-04-29']