Pandasで「ImportError: Install xlrd >= 0.9.0 for Excel support」エラー。 openpyxlを使うように変更して解決


『Python実践データ100本ノック』のサンプルで、エクセルファイルを読み込むコードを試していたら、以下エラー発生。

ImportError: Install xlrd >= 0.9.0 for Excel support

解決方法

openpyxlをインストール

pip install openpyxl

pandasのread_excel()のパラメータにengineを指定

# 修正前
# kokyaku_data = pd.read_excel("kokyaku_daicho.xlsx")

# 修正後
kokyaku_data = pd.read_excel("kokyaku_daicho.xlsx", engine="openpyxl")

Pandasのデフォルトのengineがxlrdだけど、最近xlsxファイル非対応になってしまったため、engineをopenpyxlに切り替えてあげることでエラー回避できました。

xlrdのほうもそのうち修正されるだろうけど、それまでは上記で対処するのがよいみたいです。

試したこと

参考までに、エラー発生後試したことメモしておきます。

色々やったけど、多分上記対応のみでいけるはず・・・

こちらの記事を参考に、xlrdをインポートしてみる。

pip install xlrd

しかし今度はインストールしたxlrdはxlsxファイルをサポートしてないとのエラーが発生。

XLRDError: Excel xlsx file; not supported

こちらの記事で、Pandas1.2.0で解消したことを知る。

参考:Pandasの1.2.0関連の記事

そこで一度Pandasをアンインストールし、1.2.0をインストール。2021/1/6時点では、バージョン指定しない場合1.1.3になるようだったので、バージョン指定してインストール。

pip install pandas==1.2.0

ちなみに、condaでインストールしようとすると失敗した。
また、numpyが1.19.5に自動更新された。

すると今度は下記エラー

ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is supported. Install openpyxl instead.

どういうこと?と調べてみたところ、

  • openpyxlをインストール
  • pandasのread_excel()のパラメータにengineを指定

とすればよいとのこと。

pd.read_excel("sample.xlsx", engine="openpyxl")

参考:https://teratail.com/questions/310586