PythonでExcelファイルを扱うライブラリの比較
PythonにはExcelファイル(.xls
, .xlsx
)を読み書き(入出力)するためのライブラリがいくつかある。読み込みか書き込みか読み書き両方か、.xls
と.xlsx
のどちらに対応しているかなどの違いがある。
以下の内容について説明する。
- Excelファイルの拡張子xlsとxlsxの違い
- Excelファイルを読み書きするPythonライブラリの違いと使い分け
- Excelファイルのデータをもとに分析するならpandas
- Excelファイルの書式を保ったまま編集・追記するならopenpyxl
- xlsファイルを扱う必要があるならxlrd, xlwt
Excelファイルの拡張子xlsとxlsxの違い
Excelファイルにはバージョンによって拡張子が.xls
のものと.xlsx
のものが存在する。
.xls
: Excel97-2003のExcelファイル.xlsx
: Excel2007以降のExcelファイル
2007以降のExcelであれば.xls
も.xlsx
も両方開けるが、2003以前のExcelでは.xlsx
は開けない。
なお、.xlsm
はマクロが保存されている以外は.xlsx
と同じ。
Excelファイルを読み書きするPythonライブラリの違いと使い分け
Excelファイルを読み書きするPythonライブラリは多数存在するが、ここでは有名どころを紹介する。読み込みか書き込みか読み書き両方か、.xls
と.xlsx
のどちらに対応しているかなどの違いがある。
簡単に違いをまとめると以下の通り。
- xlrd
xls
,xlsx
ファイルの読み込み
- xlwt
xls
ファイルの書き込み(作成・保存)
- openpyxl
xlsx
ファイルの読み込み・書き込み(作成・保存)- 読み書きができるので既存のファイルに追記する場合に便利
- pandas
xls
,xlsx
ファイルの読み込み・書き込み(作成・保存)- 上記のライブラリを内部で使っている
独断と偏見による使い分けは以下の通り。詳しい使い方などはそれぞれの関連記事を参照。
Excelファイルのデータをもとに分析するならpandas
数値や文字列のデータを読み込んで分析するのであればpandasがおすすめ。
pandas.DataFrame
として読み込んでしまえば、pandasのデータ分析のための豊富な関数やメソッドが活用できる。グラフ作成(可視化)なども便利。
ただし、データをpandas.DataFrame
として読み込むため、書式(セルやテキストの色)や罫線などの情報は扱えない。
Excelファイルの書式を保ったまま編集・追記するならopenpyxl
既存のExcelファイルの書式を保ったまま編集・追記(セルの値の変更、新たなセルの追加など)をしたい場合はopenpyxlがおすすめ。すべてをサポートしているわけではないが、基本的なセルの塗りつぶしやテキストの色、数式、罫線などはそのまま保持される。書式の変更も可能。
xlsファイルを扱う必要があるならxlrd, xlwt
openpyxlは.xls
ファイルをサポートしていない。pandasは内部でxlrd, xlwtを使っているため.xls
ファイルも扱えるが、pandasを使うまでもない場合、例えば「複数の.xls
ファイルの同じ位置のセルの値を読みたい」というような場合にはxlrd, xlwtを使う。