Python

PythonのPandasの対処方法: Shift_JISエンコードエラーを解決する

Pythonでデータ分析を行う際に、PandasでCSVファイルを読み込むコードを書くことがよくあります。しかし、特定のエンコードが原因でエラーが発生することもあります。今回は、特に日本語のテキストを含むファイルを読み込む際によく遭遇する UnicodeDecodeError について、その原因と解決方法を解説します。

エラーの内容

以下のコードを実行した際に、UnicodeDecodeError が発生しました。

Python
df = pd.read_csv(csv_file_path, encoding='shift-jis', on_bad_lines='skip', names=("date", "place", "category", "payment_method", "amount"))

エラーメッセージは次のようなものでした。

ShellScript
UnicodeDecodeError: 'shift_jis' codec can't decode byte 0xfb in position 57617: illegal multibyte sequence

このエラーは、日本語を含むCSVファイルを読み込む際に、shift_jis エンコードで解釈できないバイトが含まれているために発生しています。

対処方法

このエラーを回避するためには、ファイルがどのエンコードで保存されているかを正確に指定する必要があります。以下のコードは、cp932 エンコードを指定してファイルを読み込む方法です。

Python
df = pd.read_csv(csv_file_path, encoding='cp932', on_bad_lines='skip', names=("date", "place", "category", "payment_method", "amount"))

cp932 は、Windowsで一般的に使われる日本語エンコードであり、このエンコードを使用することで、エラーなくデータを読み込むことができます。

まとめ

UnicodeDecodeError は、異なるエンコードで保存されたファイルを誤ったエンコードで読み込もうとした際に発生する一般的なエラーです。日本語のCSVファイルを読み込む際には、shift_ji だけではなく、cp932 を試してみると良いでしょう。

-Python