
Pandasの日付・日時データの扱い方
Pandasは、データ分析においてよく使われるPythonのライブラリです。日付・日時データを扱う場合には、Pandasの機能をうまく使って、データの抽出や加工をすることができます。
日付データの抽出方法
まずは、日付データの抽出方法について説明します。Pandasでは、日付データを表すデータ型として、datetime64[ns]を使います。
1 2 3 4 | import pandas as pd # 日付データの作成 date_data = pd.Series([ '2022-01-01' , '2022-01-02' , '2022-01-03' ], dtype = 'datetime64[ns]' ) print (date_data) |
上記のコードでは、pd.Series()を使って、日付データを作成しています。dtype=’datetime64[ns]’と指定することで、日付データを表すデータ型として、datetime64[ns]が使用されます。
出力結果は以下の通りです。
1 2 3 4 | 0 2022 - 01 - 01 1 2022 - 01 - 02 2 2022 - 01 - 03 dtype: datetime64[ns] |
次に、日付データから年月日などを抽出する方法について説明します。
1 2 3 4 5 6 | # 年を抽出 print (date_data.dt.year) # 月を抽出 print (date_data.dt.month) # 日を抽出 print (date_data.dt.day) |
上記のコードでは、dt.year、dt.month、dt.dayを使って、年月日などを抽出しています。
出力結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 | 0 2022 1 2022 2 2022 dtype: int64 0 1 1 1 2 1 dtype: int64 0 1 1 2 2 3 dtype: int64 |
日時データの抽出方法
日時データの抽出方法について説明します。日時データを表すデータ型として、datetime64[ns]を使います。
1 2 3 | # 日時データの作成 datetime_data = pd.Series([ '2022-01-01 00:00:00' , '2022-01-02 12:00:00' , '2022-01-03 23:59:59' ], dtype = 'datetime64[ns]' ) print (datetime_data) |
上記のコードでは、pd.Series()を使って、日時データを作成しています。dtype=’datetime64[ns]’と指定することで、日時データを表すデータ型として、datetime64[ns]が使用されます。
出力結果は以下の通りです。
1 2 3 4 | 0 2022 - 01 - 01 00 : 00 : 00 1 2022 - 01 - 02 12 : 00 : 00 2 2022 - 01 - 03 23 : 59 : 59 dtype: datetime64[ns] |
次に、日時データから年月日時分秒などを抽出する方法について説明します。
1 2 3 4 5 6 7 8 9 10 11 12 | # 年を抽出 print (datetime_data.dt.year) # 月を抽出 print (datetime_data.dt.month) # 日を抽出 print (datetime_data.dt.day) # 時を抽出 print (datetime_data.dt.hour) # 分を抽出 print (datetime_data.dt.minute) # 秒を抽出 print (datetime_data.dt.second) |
上記のコードでは、dt.year、dt.month、dt.day、dt.hour、dt.minute、dt.secondを使って、年月日時分秒などを抽出しています。
出力結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 0 2022 1 2022 2 2022 dtype: int64 0 1 1 1 2 1 dtype: int64 0 1 1 2 2 3 dtype: int64 0 0 1 12 2 23 dtype: int64 0 0 1 0 2 59 dtype: int64 0 0 1 0 2 59 dtype: int64 |
時間データの抽出方法
時間データの抽出方法について説明します。Pandasでは、timedelta64[ns]を使って、時間データを表します。
1 2 3 | # 時間データの作成 time_data = pd.Series([ '00:00:00' , '12:00:00' , '23:59:59' ], dtype = 'timedelta64[ns]' ) print (time_data) |
上記のコードでは、pd.Series()を使って、時間データを作成しています。dtype=’timedelta64[ns]’と指定することで、時間データを表すデータ型として、timedelta64[ns]が使用されます。
出力結果は以下の通りです。
1 2 3 4 | 0 0 days 00 : 00 : 00 1 0 days 12 : 00 : 00 2 0 days 23 : 59 : 59 dtype: timedelta64[ns] |
次に、時間データから時間、分、秒などを抽出する方法について説明します。
1 2 3 4 5 6 | # 時間を抽出 print (time_data.dt.components[ 'hours' ]) # 分を抽出 print (time_data.dt.components[ 'minutes' ]) # 秒を抽出 print (time_data.dt.components[ 'seconds' ]) |
上記のコードでは、dt.componentsを使って、時間、分、秒などを抽出しています。
日付・日時データの時間操作テクニック
日付・日時データに対して、時間操作をする際に使える便利なテクニックを紹介します。
日付・日時データの加算・減算
日付・日時データに対して、加算・減算をすることができます。timedelta64[ns]を使って、加算・減算する値を指定します。
1 2 3 4 5 6 | # 日付データの加算 print (date_data + pd.to_timedelta( 1 , 'D' )) # 日時データの減算 print (datetime_data - pd.to_timedelta( 1 , 'h' )) # 時間データの加算 print (time_data + pd.to_timedelta( 1 , 'h' )) |
上記のコードでは、pd.to_timedelta()を使って、加算・減算する値を指定しています。第1引数に加算・減算する値、第2引数に単位を指定します。
出力結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 | 0 2022 - 01 - 02 1 2022 - 01 - 03 2 2022 - 01 - 04 dtype: datetime64[ns] 0 2022 - 01 - 01 23 : 00 : 00 1 2022 - 01 - 02 11 : 00 : 00 2 2022 - 01 - 03 22 : 59 : 59 dtype: datetime64[ns] 0 0 days 01 : 00 : 00 1 0 days 13 : 00 : 00 2 1 days 22 : 59 : 59 dtype: timedelta64[ns] |
日付・日時データの差分
日付・日時データの差分を求めることができます。timedelta64[ns]を使って、差分を求めます。
1 2 3 4 5 6 | # 日付データの差分 print (date_data.diff()) # 日時データの差分 print (datetime_data.diff()) # 時間データの差分 print (time_data.diff()) |
出力結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 | 0 NaT 1 1 days 2 1 days dtype: timedelta64[ns] 0 NaT 1 1 days 12 : 00 : 00 2 1 days 11 : 59 : 59 dtype: timedelta64[ns] 0 NaT 1 12 : 00 : 00 2 11 : 59 : 59 dtype: timedelta64[ns] |
日付・日時データの比較
日付・日時データを比較することができます。
1 2 3 4 5 6 | # 日付データの比較 print (date_data > '2022-01-02' ) # 日時データの比較 print (datetime_data > '2022-01-02 12:00:00' ) # 時間データの比較 print (time_data > '12:00:00' ) |
出力結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 | 0 False 1 False 2 True dtype: bool 0 False 1 False 2 True dtype: bool 0 False 1 False 2 True dtype: bool |
よく使われる日付・日時データの処理パターン
最後に、よく使われる日付・日時データの処理パターンについて説明します。
日付・日時データのグループ化
日付・日時データをグループ化することができます。groupby()を使って、グループ化したい列を指定します。
1 2 3 4 | # 日付データのグループ化 print (date_data.groupby(date_data.dt.month).count()) # 日時データのグループ化 print (datetime_data.groupby(datetime_data.dt.hour).count()) |
上記のコードでは、groupby()を使って、月ごとの日付データの件数、時ごとの日時データの件数を求めています。
出力結果は以下の通りです。
1 2 3 4 5 6 | 1 3 dtype: int64 0 1 12 1 23 1 dtype: int64 |
日付・日時データの変換
日付・日時データを変換することができます。to_datetime()を使って、文字列型の日付・日時データをdatetime64[ns]に変換します。
1 2 3 4 | # 文字列型の日付データをdatetime64[ns]に変換 str_date_data = pd.Series([ '2022/01/01' , '2022/01/02' , '2022/01/03' ]) date_data2 = pd.to_datetime(str_date_data, format = '%Y/%m/%d' ) print (date_data2) |
上記のコードでは、pd.to_datetime()を使って、文字列型の日付データをdatetime64[ns]に変換しています。
出力結果は以下の通りです。
1 2 3 4 | 0 2022 - 01 - 01 1 2022 - 01 - 02 2 2022 - 01 - 03 dtype: datetime64[ns] |
まとめ
Pandasを使って、日付・日時データの抽出や時間操作をする方法について説明しました。日付・日時データに対して、加算・減算、差分、比較などの操作ができるため、データ分析や可視化において非常に便利です。