0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初心者向け)csvファイルをpandasで読み込もうとしたときに発生するエラーの解決方法

Last updated at Posted at 2021-10-01

文字コードの違いなんてよく理解していないし、ほとんど気にもしてないのが初心者の本音(それは私です)

WindowsPCのExcelから出力したcsvファイルを、jupyter notebookなどを利用してpandasで読み込もうとすると'utf-8がなんちゃらで読めないよ'的なエラーが発生しました。

import pandas as pd
df = pd.read_csv('nantoka.csv')

'nantoka.csv'はExcelから入力してcsv形式で出力したファイルという想定です。
上記だとエラーになりpandasがcsvファイルを正しく読み込まれず、以下のようなエラーメッセージが表示されました。

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

原因はPythonでは'utf-8'という文字コードを扱うことが標準ですが、WindowsPCで動くOffice製品でつくらたファイルは文字コードが'932'だからという違いです。

そういう場合は以下のようなおまじないを付ければエラーになりません。

import pandas as pd
df = pd.read_csv('nantoka.csv',encoding='932')

###おまじないは encoding='932'
encordingではなくencodingです。(日本人的発音であるエンコードに引っ張られて'r'を付いた'encording'と思い込んでましたが、あくまでエンコディング(encoding)です。私はこのつづり間違いに気づかずしばらく悩みました)

文字コード指定を'encoding="SHIFT-JIS"'としてもうまく動いたりすることもありますが、経験則としてうまく動かない場合もありましたので、'932'と指定した方が確実だと思います。

ひさしぶりにpandasでcsvを扱おうとしたらエラーになったので、忘れないうちに書いときます。

同じ悩みを抱えている方の助けになればよいなーと。

###参考までに
使っているWindows環境の文字コードは何かの理由であえて別のものを指定していないならば、コマンドプロンプトから確認すると'932'と表示されます。

確認するためのコマンドは'chcp'

c:\>chcp
現在のコード ページ: 932

現場からは以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?