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ファイルをテキストエディタなどで開いてエンコードを変えて保存し直す。 メモ帳での変換例:
対処法2:
codecsをインポートして、Shift-JISでそのまま開く。
with codecs.open(path_to_csv_file, "r", "Shift-JIS", "ignore") as file: df = pd.read_table(file, delimiter=",")
これで読み出せるようになります。