note.nkmk.me

PythonでExcelファイルを扱うライブラリの比較

Date: 2018-05-06 / tags: 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を使う。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事