Python Excelファイルを扱う

MicrosoftのOfficeスイートに含まれるExcelは、世界で最も広く使われている表計算ソフト。PythonでExcelファイルの入出力を行う方法を解説する。

Google Driveを使用するためにマウントする。

スクリーンショット 2020-07-04 15.04.22

Excelファイルを扱うライブラリ

Pythonの標準の機能ではExcelファイルをそのまま扱うことは出来ない。ExcelファイルにはXLS形式(.xlsファイル)とOOXML形式(.xlsx/.xlsmファイル)があり、以下のライブラリを使って読み書きが可能。これらはシステム上にExcelがインストールされていなくても使用できる。

・xlrd/xlwt: XLS形式の読み書き
・OpenPyXL: OOXML形式の読み書き
・XlsxWriter: OOXML形式の書き込み

XLS形式はファイルサイズが大きくなるのでOOXML形式がよく使われる。本稿ではOOXML形式に対応しているOpenPyXLの基本的な使い方を紹介する。

OpenPyXLによるExcelファイルの入出力

ファイル(ワークブック)を新規に作成するには、OpenPyXLのWorkbookクラスを呼び出す。ワークブックは1つ以上のワークシートから構成される。新規に作成したブックには1つのシートが含まれている。wb.activeによってそのデフォルトのシートを選択できる。

スクリーンショット 2020-07-04 15.10.02

シートの名前はtitle属性で参照でき、任意の名前を付けられる。また、シートを追加するにはブックのcreate_sheetメソッドを使う。この例ではブックに2つのシートがあり、それらの名前の一覧をsheetnames属性から確認している。

スクリーンショット 2020-07-04 15.10.49

シートに書き込むデータをリストで作成している。シートのappendメソッドでデータを1行ずつシートに追加していく。最後にsaveメソッドを使ってファイルを保存する。

スクリーンショット 2020-07-04 15.11.43

スクリーンショット 2020-07-04 15.12.18

pandasによるExcelファイルの入出力

pandasではXLS形式とOOXML形式のどちらも読み書きできる。pandasの内部で使用するエンジンとしてxlrd/xlwt, OpenPyXL, XlsxWriterが使用でき、ユーザーが任意に選択できる。

pandasでExcelファイルにデータを書き込むにはto_excelメソッドを使う。引数にはファイル名の他、書き込み先のシート名などを指定できる。

スクリーンショット 2020-07-04 15.13.28

一方、pandasでExcelファイルのデータを読み込むにはread_excel関数を使う。作成されるデータフレームの列ラベルはheader引数で指定でき、デフォルトではワークシートの1行目が列ラベルとなる。デフォルトでは読み込みにxlrdが使われるので、OpenPyXLを使用している場合はengine引数に'openpyxl'と指定する。

スクリーンショット 2020-07-04 15.14.26

複数のワークシートにデータを書き込む場合にはExcelWriterクラスを使うとファイルを開くのが一度で済み、処理が速くなる。with文でExcelWriterクラスを呼び出す。to_excelメソッドにはファイル名の代わりにExcelWriterオブジェクトを渡す。

スクリーンショット 2020-07-04 15.15.09

逆に、複数のワークシートにデータを読み込む場合はExcelFileクラスを使用する。read_excelファイル名の代わりにExcelFileオブジェクトを渡す。

スクリーンショット 2020-07-04 15.15.54


この記事が気に入ったらサポートをしてみませんか?