Pythonでpandasを使ってCSVファイルを読み込んでいると、以下のようなエラーに遭遇することがあります。
ParserError: Error tokenizing data. C error: Expected 1 fields in line 8, saw 2
一見すると難解なこのエラーですが、実際にはCSVファイルの中に想定外の形式の行が含まれていることが原因です。
今回はこのエラーの意味と、実際に私が遭遇した事例、そして有効だった対処法について解説いたします。
エラーの意味:行ごとの列数が一致していない
このエラーは、pandas.read_csv()
でCSVファイルを読み込む際に、特定の行(今回の例では8行目)において、他の行と異なる列数が見つかった場合に発生します。
例えば、以下のようなCSVがあったとします:
名前,年齢,性別
田中,28,男性
佐藤,35,女性
,,,, ←← 空白やカンマだけの不正行
鈴木,41,男性
このようなケースでは、3列を期待しているのに5列(カンマ4つ)を含む行が混ざっており、pandas側でパース(構文解析)できずに ParserError
が発生します。
エラーの原因:空白行や余計な区切り記号(カンマ)
私が遭遇したケースでは、CSVファイルに余計な空白行やカンマだけの行が含まれていたことが原因でした。
特に、手作業で作成されたCSVファイルや、他ツールからエクスポートされたデータでは、このような行が入りやすくなります。
有効だった対処法:on_bad_lines='skip'
を使う
pandasの read_csv()
関数には、不正な行をスキップするためのオプションがあります。
以下のように書くことで、エラーの原因となる行を無視して処理を続けることができます。
import pandas as pd
csv_file_path = 'sample.csv'
df = pd.read_csv(
csv_file_path,
encoding='shift_jis',
on_bad_lines='skip', # 不正行をスキップ
warn_bad_lines=True # スキップされた行を警告表示(※pandas 1.3 以前向け)
)
print(df)
パラメータ解説
on_bad_lines='skip'
→ 不正な構文の行(列数の不一致など)を無視して読み込みを継続します
※pandas 1.3.0以降で使用可能warn_bad_lines=True
→ スキップした行に関する警告を表示します
※このオプションはpandas 1.3以降では非推奨です。代わりにon_bad_lines='warn'
を使用してください
その他の回避方法(状況に応じて)
もし on_bad_lines='skip'
を使いたくない、あるいはエラーの原因を根本から取り除きたい場合には、以下のような方法もあります:
- 事前にCSVをテキストエディタなどで開き、空行や不正行を削除する
error_bad_lines=False
を使う(古いバージョン用)csv.reader()
を使って1行ずつ処理する(柔軟だがやや煩雑)
まとめ
ParserError: Expected X fields in line Y, saw Z
は、CSVファイル内で列数が不一致な行があることが原因で発生するエラーです。
今回紹介した対処法:
on_bad_lines='skip'
を指定することで不正な行をスキップwarn_bad_lines=True
で警告を出す(旧バージョン)
このエラーは、CSVの構造や整形処理が正しくできていないときに頻発します。
業務用のデータ処理や自動化の中で遭遇することも多いため、覚えておくと安心です。
スクールの紹介
【アイデミー】AIを学んで一発逆転のキャリアチェンジ!
ここまで読んでいただき、ありがとうございました。
最後に宣伝をさせてください。
夢見るAIエンジニアへ、今こそ一歩を踏み出せ!
最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。
しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!
なぜこのサービスが選ばれるのか?その理由はこちら
- 初心者から上級者まで
完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。 - 徹底的な進捗管理
受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。 - 専属メンターによる徹底サポート
AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。 - 場所を選ばず学べるオンライン完結
東京以外の地域からも、気軽に学び始めることができます。
信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現
夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!