Python Excelファイルを扱う
MicrosoftのOfficeスイートに含まれるExcelは、世界で最も広く使われている表計算ソフト。PythonでExcelファイルの入出力を行う方法を解説する。
Google Driveを使用するためにマウントする。
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によってそのデフォルトのシートを選択できる。
シートの名前はtitle属性で参照でき、任意の名前を付けられる。また、シートを追加するにはブックのcreate_sheetメソッドを使う。この例ではブックに2つのシートがあり、それらの名前の一覧をsheetnames属性から確認している。
シートに書き込むデータをリストで作成している。シートのappendメソッドでデータを1行ずつシートに追加していく。最後にsaveメソッドを使ってファイルを保存する。
pandasによるExcelファイルの入出力
pandasではXLS形式とOOXML形式のどちらも読み書きできる。pandasの内部で使用するエンジンとしてxlrd/xlwt, OpenPyXL, XlsxWriterが使用でき、ユーザーが任意に選択できる。
pandasでExcelファイルにデータを書き込むにはto_excelメソッドを使う。引数にはファイル名の他、書き込み先のシート名などを指定できる。
一方、pandasでExcelファイルのデータを読み込むにはread_excel関数を使う。作成されるデータフレームの列ラベルはheader引数で指定でき、デフォルトではワークシートの1行目が列ラベルとなる。デフォルトでは読み込みにxlrdが使われるので、OpenPyXLを使用している場合はengine引数に'openpyxl'と指定する。
複数のワークシートにデータを書き込む場合にはExcelWriterクラスを使うとファイルを開くのが一度で済み、処理が速くなる。with文でExcelWriterクラスを呼び出す。to_excelメソッドにはファイル名の代わりにExcelWriterオブジェクトを渡す。
逆に、複数のワークシートにデータを読み込む場合はExcelFileクラスを使用する。read_excelファイル名の代わりにExcelFileオブジェクトを渡す。
この記事が気に入ったらサポートをしてみませんか?