pandasでexcelを開くときは「xlrd」より「openpyxl」の方が安定してるかもしれない話

はじめに

pandasを初めて使って早2年強。この度業務で初めてexcelファイルを取り扱う必要が出てきました。 テキストファイル安定のこのご時世、エクセルみたいなバイナリーファイルという時点で不安はあったのですが、案の定読み込みの時点で少し面倒だったので一応解決法などをメモしておきます。 尚、pandasのバージョンは1.2.1です。

解決法

まず普通にread_excelで読み込もうとすると以下のエラーが

importerror: missing optional dependency 'xlrd'. install xlrd >= 1.0.0 for excel support use pip or conda to install xlrd.

なんでもxlrdというライブラリが別途必要とのこと。そこで現時点で最新だったバージョン2.0.1をインストールして再度試してみることに

your version of xlrd is 2.0.1. in xlrd >= 2.0, only the xls format is supported. install openpyxl instead.

またまたエラーです。どうやら2.0以上のxlrdだとエクセルの拡張子がxlsのものしか読み込めず、比較的新しいxlsxのものに関してはエラーが発生してしまうようです。時代に逆行してますね。

xlrdのバージョンを1.2.0に下げてみました。

attributeerror: 'elementtree' object has no attribute 'getiterator'



は??

本日3度目のエラー。エクセルファイル恐るべしです。 どうやら調べてみると結局xlrdよりもopenpyxlの方がよさげ、バージョン3.0.6をインストールし下記のようにreac_excelの引数に以下を加えたところ、ようやくファイル読み込みができました。

df = pd.read_excel('data.xlsx', engine='openpyxl')