csvファイルのデータをPythonのpandasで読み込むときに以下のエラーとなってしまいはまりました。
pandas.errors.ParserError: Error tokenizing data. C error: Expected 24 fieldder._tokenize_rowss in line 4, saw 28
行と列のデータがいびつだとこのエラーが出ます。自分の場合、列がやたら多いCSVデータでした。
対応としては、
- CSVファイルの直接編集
- ファイルの読み込み設定の工夫
直接編集はおかしな行や列を削除することで解決しますが、ファイルが増えてくると対応不能になりスマートではありません。
今回の記事では、ファイルの読み込み設定の工夫で解決しましたので紹介します。
read_csvのファイル読み込み設定の工夫
解決策です。先に列名を必要な数用意します(今回は100列分)
あとは、普通にpandasのread_csvでcsvファイルを読み込みます。読み込んだデータの列名はcol_1-100になっていますので、リネームするなど適宜対応すればOKです。
import pandas as pd
# 列名
col_names = ['col_{}'.format(i) for i in range(100)]
df = pd.read_csv('test.csv', names=col_names)
print(df.head(5))
というわけで、PandasでCSVファイルが読み込めないときは先に列名を作るとエラーを回避することができます。