じーろぐ

日々の記録。コンピュータやプログラミングの話題が多め。

Excelで作ったcsvファイルがpandasで読めない場合の対処法

Excelは、独自のファイル形式であるxlsx以外にも、シートのデータをcvsで出力することができます。 ただし、この方法で作ったCSVファイルはPythonのライブラリPandasでうまく読み出せないことがあるので注意が必要です。

読み出せない場合のエラーメッセージ

読み出せないときは、こんな感じのメッセージが出ます。

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

読み出せない原因

Excelが出力するcsvファイルがShift-JIS(UTF-8以外の文字コード)でエンコードされているから。

対処法1:UTF-8に変換する

csvファイルをテキストエディタなどで開いてエンコードを変えて保存し直す。 メモ帳での変換例: f:id:z_logger:20181101005316p:plain

対処法2:

codecsをインポートして、Shift-JISでそのまま開く。

with codecs.open(path_to_csv_file, "r", "Shift-JIS", "ignore") as file:
    df = pd.read_table(file, delimiter=",")

これで読み出せるようになります。