CSVファイルの日付情報解析で失敗する?parser_datesオプションで解決!

スポンサーリンク

parser_datesは、read_csv関数のオプションの1つで、CSVファイル内の日付情報を解析して、datetime型のデータとして取得するために使用されます。このオプションは、デフォルトでFalseになっており、日付情報を文字列として読み込むだけです。

import pandas as pd

# 日付情報を含むCSVファイルの読み込み
df = pd.read_csv("ファイル名.csv", parse_dates=["日付列"])

# 読み込んだデータの表示
print(df)

上記のコードでは、parse_datesオプションに["日付列"]を指定しています。これにより、日付列に含まれる情報が解析され、datetime型のデータとして読み込まれます。

複数の日付列がある場合には、以下のように複数の列名をリストで指定することもできます。

import pandas as pd

# 複数の日付情報を含むCSVファイルの読み込み
df = pd.read_csv("ファイル名.csv", parse_dates=["日付列1", "日付列2"])

# 読み込んだデータの表示
print(df)

上記のコードでは、parse_datesオプションに["日付列1", "日付列2"]を指定しています。これにより、日付列1と日付列2に含まれる情報が解析され、datetime型のデータとして読み込まれます。

parse_datesオプションには、Trueを指定することもできます。この場合、全ての列について日付情報を解析しますが、解析に失敗した場合にはその列を文字列として読み込みます。

import pandas as pd

# 全ての列について日付情報を解析する
df = pd.read_csv("ファイル名.csv", parse_dates=True)

# 読み込んだデータの表示
print(df)

上記のコードでは、parse_datesオプションにTrueを指定しています。これにより、全ての列について日付情報を解析します。ただし、解析に失敗した場合にはその列を文字列として読み込みます。

ただし、日本語表記の日付は正しく読み込めないため、date_parser を使って日付処理を行う必要があります。

例えば、日付列が「21/10/11」(2021年10月11日)などの表記だった場合は、以下のような処理を行います。

def date_adj(x):
        from datetime import datetime
        return datetime.strptime(x.split()[0], '%y/%m/%d')

data = pd.read_csv("data_day.csv", parse_dates=['日付'], date_parser=date_adj)
タイトルとURLをコピーしました