PythonのPandasライブラリのdtアクセサを使った日付データの処理について
ケース
日付データにto_datetime関数などでオブジェクトから変換したあとに、
任意の日付の型に変えるor特定の部分の日付データを抜き取りとる
データ
まず時間のデータを作ります
import pandas as pd
date_data = pd.DataFrame({'date':
['2020-04-01 01:01:01',
'2021-04-02 02:02:02',
'2022-04-03 03:03:03',
'2023-04-04 04:04:04',
'2024-05-05 05:05:05']})
date_data
date | |
---|---|
0 | 2020-04-01 01:01:01 |
1 | 2021-04-02 02:02:02 |
2 | 2022-04-03 03:03:03 |
3 | 2023-04-04 04:04:04 |
4 | 2024-05-05 05:05:05 |
データのタイプを見ましょう
date_data.dtypes
date object
dtype: object
現在date_data['date']のtypeはobjectです
これをまず日付として扱えるデータの型に変えましょう
date_data['date'] = pd.to_datetime(date_data['date'])
date_data['date']
0 2020-04-01 01:01:01
1 2021-04-02 02:02:02
2 2022-04-03 03:03:03
3 2023-04-04 04:04:04
4 2024-05-05 05:05:05
Name: date, dtype: datetime64[ns]
日付データ処理
年・月・日・秒の部分だけ取りたい
dtアクセサについては以下の通り
pandas.Series.dt
Series.dt()[source]
Accessor object for datetimelike properties of the Series values.
date_data['date'].dt.year
0 2020
1 2021
2 2022
3 2023
4 2024
Name: date, dtype: int64
date_data['date'].dt.month
0 4
1 4
2 4
3 4
4 5
Name: date, dtype: int64
date_data['date'].dt.day
0 1
1 2
2 3
3 4
4 5
Name: date, dtype: int64
date_data['date'].dt.second
0 1
1 2
2 3
3 4
4 5
Name: date, dtype: int64
年/月 (ex:17/01)など特定の型で欲しい場合
strftimeという関数がありました。"strf"は"str format"の略みたいです
date_data['date'].dt.strftime("%y/%m")
0 20/04
1 21/04
2 22/04
3 23/04
4 24/05
Name: date, dtype: object
ex:2002/04/01
%y→%Y にすれば4桁になる
date_data['date'].dt.strftime("%Y/%M/%d")
0 2020/01/01
1 2021/02/02
2 2022/03/03
3 2023/04/04
4 2024/05/05
Name: date, dtype: object
一旦、以上です。