pandasでread_csv時にUnicodeDecodeErrorが起きた時の対処 (pd.read_table())

More than 3 years have passed since last update.

pandasでCSVファイルを読み込む場合はread_csvするだけなので非常に便利です。

import pandas as pd

pd.read_csv("file/to/path")

通常は上記で問題無いのですが、CSVの中にダメな文字があると以下のようなエラーを吐かれてしまいます。

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

「デコード出来ねーぞ」ってお怒りの模様。

Excel作成のCSVは文字コードが「shift-jis」なので、一応読み込みのencodingでを指定してみますが、

import pandas as import pd

pd.read_csv("file/to/path", encoding="shift-jis")

やっぱりエラー。ですよね。

UnicodeDecodeError: 'shift_jis' codec can't decode byte 0x87 in position 0: illegal multibyte sequence

解決策としては、codecs.openignoreを指定のうえエラーを無視して開いて、pd.read_tableすると読み込めるみたい。

with codecs.open("file/to/path", "r", "Shift-JIS", "ignore") as file:

df = pd.read_table(file, delimiter=",")
print(df)

file.read()とせずにそのままStreamReaderWriter objectのまま渡して良いみたいですね。

チョットハマって右往左往したのでメモまで。