csvデータのpandas読み込みエラーの対応

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ファイルが読み込めないときは先に列名を作るとエラーを回避することができます。

  • この記事を書いた人

drーharv

内科医です。資産運用や副業など、さまざまな手段を試しています。このブログでは、医師としての生活、投資、趣味など、幅広いトピックを綴っています。読者の皆様にとって何か参考になる情報があれば、幸いです。

-Python