2025.7.14 read_csvで時系列データの読み込み【pandas】
日付(datetime)型は日付順のソート、範囲指定、差分処理など日付特有の高度な処理機能をもつオブジェクトである。
csvから読み込む際に、文字として記述された日付に関する情報をデータを日付型として扱うことができる。
次の csv において、系列「date」は文字列として記述されている。
code:data.csv
date,value
2021-1-1,100
2021-1-2,110
2021-10-1,90
2021-12-2,105
2022-12-31,98
したがって、通常の読み込みを行うと...
code:p1.py
import pandas as pd
dataset = pd.read_csv('data.csv')
print(dataset)
print(type(dataset.date.iloc0))
'''
date value
0 2021-1-1 100
1 2021-1-2 110
2 2021-10-1 90
3 2021-12-2 105
4 2022-12-31 98
<class 'str'>
'''
この場合、date は文字列として扱われている。
引数 parse_dates を用いて、日付として扱いたい系列を指定する。
code:p2.py
import pandas as pd
dataset = pd.read_csv('data.csv', parse_dates='date')
print(dataset.date)
'''
0 2021-01-01
1 2021-01-02
2 2021-10-01
3 2021-12-02
4 2022-12-31
Name: date, dtype: datetime64ns
'''
系列 date は datetime 型となった。このように、日付として解釈可能であれば、自動的に datetime 型への変換が行われる。
日付に関する系列が複数ある場合でも対応できる。
code:data2.csv
date1,date2,value
2021-1-1,Jan-4-2022,100
2021-1-2,Feb-5-2022,110
2021-10-1,Dec-10-2021,90
2021-12-2,Mar-11-2022,105
2022-12-31,Oct-30-2022,98
code:p.py
import pandas as pd
dataset = pd.read_csv('data2.csv', parse_dates='date1','date2')
print(dataset)
'''
date1 date2 value
0 2021-01-01 2022-01-04 100
1 2021-01-02 2022-02-05 110
2 2021-10-01 2021-12-10 90
3 2021-12-02 2022-03-11 105
4 2022-12-31 2022-10-30 98
'''
月-日-年表記であった date2 系列も、適切に datetime 型として扱われている。