pandas.read_csvで日本語を含んだCSVを読み込めない

Prep

pandas.read_csvで日本語を含んだCSVを読み込めない

作成日: 最終更新: 読了時間: 1 分

Python の pandas.read_csv() を使って日本語を含む CSV ファイルを読み込もうとすると、
次のような UnicodeDecodeError が発生することがあります。たとえば

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 0: invalid start byte
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x95 in position 0: invalid start byte
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

といった内容です。このようなエラーは、ファイルの文字コードと読み込み指定が一致していないときに発生します。 特に Windows で作成された CSV ファイルcp932(Microsoft独自拡張Shift-JIS)で保存されていることが多く、 そのようなファイルを utf-8 で読み込もうとするとエラーになりやすいです。


解決法:正しいエンコーディングを指定して読み込む #

Shift-JIS の場合 #

import pandas as pd
df = pd.read_csv("filename.csv", encoding="shift-jis")

CP932(Windows環境で一般的)の場合 #

import pandas as pd
df = pd.read_csv("filename.csv", encoding="cp932")

保存時の推奨設定 #

将来的に文字化けや読み込みエラーを避けるため、
保存時は UTF-8-SIG(BOM付きUTF-8)で出力しておくと安全です。

df.to_csv("filename.csv", encoding="utf-8-sig")

⚠️ utf-8 でも問題ありませんが、WindowsのExcelで開くと文字化けすることがあります。 utf-8-sig はその対策になります。


🔠 よく使う文字コード一覧 #

文字コード用途・説明
utf-8最も一般的なUnicodeエンコーディング
utf-8-sigBOM付きUTF-8(Excel互換性が高い)
shift-jis日本語Windowsでよく使用される文字コード
cp932Microsoft拡張Shift-JIS(ExcelやNotepadで作成される)
euc_jpUNIX系環境で使用される日本語文字コード
iso2022_jp古いメールシステムなどで使用されることが多い

📚 関連ページ #