Python、機械学習

【Python、Pandas】pd.read_csvでエラーが出る場合は、engine=”python”を付け加えると解決する

Pythonで、Pandasを使ってcsvファイルを読み込もうとすると、エラーが出てうまくいかない場合があります。どうすればいいのでしょうか?

pd.read_csvにおけるエラーの内容

pd.read_csvでcsvファイルを読み込むと、次のようなエラーが出る時があります。

OSError: Initializing from file failed 

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

それぞれ「初期化できない」「utf-8の文字コード*で文字変換できない」といった意味です。

*文字コードについては最後に補足的に説明します。

エラー解消のための対策

「engine=”python”」を付け加えるとだいたい解消します。つまり、

対策前

df = pd.read_csv("○○.csv")

対策後

df=pd.read_csv("○○.csv", engine="python")

とすればOKです。

デフォルトの読み込み言語がC言語で、この状態だと日本語や全角が入ったものを読み込めないことがエラーの主な原因のようです。「engine=”python”」を付け加えて、Pythonで読み込むように指定することでエラーを解消するという考えです。

 

最後に:文字コードとは?shift-jisやutf-8の意味

文字をデジタルにするには、文字1個1個に数字を割り当てる必要があります。割り当てた数字のことを文字コードと言います。

割り当て方にはいくつか種類があります。ベースとなるのがASCIIコードと呼ばれるものです。パソコンのキーボードにあるような数字、アルファベットをどのように表現するかを決めたものです。

ASCIIコードに日本語をプラスしたものがshift-jisコードです。ASCIIコードに世界中の文字をプラスしたものがutf-8です。

utf-8は世界標準、shift-jisは日本に特化したコードとも言えそうです。shift-jisだと容量が軽くて済むのがメリットですが、外国の文字を読み込むと文字化けしてしまうことがデメリットです。