LoginSignup
32
28

More than 3 years have passed since last update.

PythonでCSVファイルの読み込み時、UnicodeDecodeErrorによるエラー【初心者向け】

Posted at

はじめに

pythonでcsvファイルを読み込んだ際に下記のエラーが出てくる理由をまとめました。

 import pandas as pd
pd.read_csv("file/to/path")

pandasでread_csvした際に下記のコードが出てきてしまった方の参考になればと思います。

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

1. 解決策

先に結論だけ言うと下記のコードのようにしてください。

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

encoding="shift-jis"

だけつけたら大体OKなはず!
それでもエラーが出てしまう人は2以降を読んで理由を検討してみてください。

2. エラーが出てきてしまう理由

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

そもそもこのエラーは何を怒っているのかというとざっくりですが
'utf-8'っていう文字コードのままだとデータの読み込みができない的なことを言っています。

例えるなら英語読めないから日本語に直してからデータ読み込ませて!
みたいなことです。

なので別の文字コードに変換してあげましょう。
その文字コードを変換することをエンコーディングと呼びます。

3. では、なんで"shift-jisなのかというと

それを説明する為に、代表的な文字コードの説明をざっとさせてください。

UTF-8

世界的にも最もポピュラーな文字コードで、Unicode用の符号化方式の1つです。ASCIIで定義している文字を、Unicodeでそのまま使用することを目的として制定しています。

ここでは難しい事は置いといて、一番使われてるんだな的な認識で大丈夫です。

JISコード

インターネット上で標準的な文字コードで、特に電子メールでの使用が一般的です。

EUC

Extended Unix Codeを略したもので、日本語UNIXが使用しています。

Shift_JIS

Microsoft社が開発したコードで、ASCIIコードの文字に日本語の文字を加えた物です。Windows、Macでも採用しており、PC上のファイルで広く用いられています。

つまり、日本語が入っているcsvファイルは、UTF-8では読めないからShift_JIS に変更しろってことですね

Shift_JISにエンコードしてデータを読み込めなかった人は、
ファイルが他の文字コードのどれに当てはまるのか考えて試してみてください。


以上メモ書きまでに

※初心者なので間違ってるところがありましたら教えてください!!

32
28
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
32
28