Python

pandasのread_csvでInitializing failedになってしまう場合

pandasのDataFrameにread_csvでCSVファイルを読み込む際、
OSError: Initializing from file failed
になってしまう場合がある。
今回はこの Initializing failed の原因と対策について紹介する。


現象

pandasのDataFrameにread_csvでCSVファイルを読み込もうとすると、エラーが発生してしまう。

import pandas as pd

print("Read multi-byte csv.")
df = pd.read_csv("ほげ.csv")

# OSError: Initializing from file failed

"Initializing failed" の原因

Initializing failed が発生する原因は2つ。

  • 読み込もうとしているCSVのファイル名に2バイト文字を使っている
  • pandasのバージョンが古い

この2つの原因が合わさった際にエラーが起こる。


CSVファイルに2バイト文字

2バイト文字はひらがなやカタカナ、漢字のような「やや横に広い文字」のことである。
反対に1バイト文字は、数字やアルファベットのような「半角で細めな文字」である。

pandasから read_csv を行う際に、ファイル名がマルチバイト対応されておらずにエラーになってしまう。


pandasのバージョンが古い

ファイル読み込み時のマルチバイト対応されていないのは古いバージョンのpandasで、新しいバージョンであればマルチバイト文字が使われているファイル名でも読み込むことができる。


エラーの回避方法

原因が2つなので回避方法も2種類。

  • CSVのファイル名に2バイト文字を使わない
  • pandasのバージョンを更新する

CSVのファイル名に2バイト文字を使わない

CSVのファイル名に2バイト文字を使わずに、半角英数字でファイルを保存すればpandasから読み込むことができる。

import pandas as pd

print("Read single-byte csv.")
df = pd.read_csv("hoge.csv")

print(df)

#    column1  column2  column3
# 0        1        2        3
# 1        2        3        4
# 2        3        4        5

参考:Python3.6のpandasで「Initializing from file failed」が起きた場合の対策 | 自調自考の旅


pandasのバージョンを更新する

コマンドラインからpandasを更新すれば、2バイト文字にも対応できるようになる。

pip install -U pandas

参考:pandasで「Initializing from file failed」というエラーが出てしまった時の対処法[anaconda] - Qiita


まとめ

pandasのread_csvでInitializing failedになってしまう場合は、

  • CSVのファイル名に2バイト文字を使わない
  • pandasのバージョンを更新する

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

役に立ったらシェアしてくれると励みになります。

にほんブログ村 IT技術ブログへ

-Python

Translate »

© 2021 ITips