PandasでExcelファイル(.xlsx)を開く方法
問題点
Pandasで.xlsx
形式のExcelファイルを読み込もうとすると、以下のエラーが発生することがあります:
import pandas
df = pandas.read_excel('cat.xlsx')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
このエラーは、xlrdライブラリのバージョン2.0.0以降で.xlsx
ファイルのサポートが削除されたことが原因で発生します。
解決策
方法1: openpyxlエンジンの使用(推奨)
最も安全で推奨される解決策は、openpyxl
エンジンを明示的に指定することです:
import pandas as pd
df = pd.read_excel('cat.xlsx', engine='openpyxl')
まず、openpyxlをインストールする必要があります:
pip install openpyxl
方法2: Pandasのバージョンアップグレード
Pandas 1.2.0以降では、.xlsx
ファイルをサポートする新しいエンジンがデフォルトで使用されます:
pip install --upgrade pandas
現在のPandasバージョンを確認:
import pandas as pd
print(pd.__version__)
方法3: ExcelFileでの明示的なエンジン指定
複数のワークシートを含むファイルを扱う場合:
import pandas as pd
xlsx = pd.ExcelFile('cat.xlsx', engine='openpyxl')
df = pd.read_excel(xlsx, sheet_name='Sheet1')
注意
xlrdの古いバージョン(1.2.0など)をインストールする方法は非推奨です。セキュリティ上の脆弱性があるため、この方法は避けるべきです。
背景説明
xlrdライブラリは2020年にリリースされたバージョン2.0.0で、.xlsx
ファイルのサポートを削除しました。これは.xlsx
ファイルのパースに関するセキュリティ上の懸念によるものです。
Pandasは内部的にxlrdを使用してExcelファイルを読み込んでいましたが、この変更により互換性の問題が生じました。現在では、Pandasは複数のExcelエンジンをサポートしており、適切なエンジンを自動的に選択します。
トラブルシューティング
問題が解決しない場合:
依存関係の確認:
bashpip list | grep -E "pandas|openpyxl|xlrd"
キャッシュのクリア:
bashpip cache purge
仮想環境での再試行:
bashpython -m venv env source env/bin/activate # Linux/Mac # または env\Scripts\activate # Windows pip install pandas openpyxl
まとめ
Pandasで.xlsx
ファイルを読み込む際のエラーは、以下のいずれかの方法で解決できます:
engine='openpyxl'
を明示的に指定する- Pandasを最新バージョンにアップグレードする
- openpyxlライブラリをインストールする
セキュリティを考慮すると、古いバージョンのxlrdを使用する方法は避けるべきです。最新のPandasとopenpyxlの組み合わせが最も安全で信頼性の高い解決策です。