『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をインストール。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")