PandasでデータフレームをExcel(エクセル)ファイルに書き出しする方法を見ていきましょう。エクスポートはとても簡単で、to_excel()メソッドを使うだけです。引数が色々とあるので、よく使う引数を知りたいという方はじっくりご覧ください。
また、Excelファイルを読み込む方法を知りたい方はこちらの記事をどうぞ!

もくじ
Excelファイルはto_excel()で書き出せる
xlwtとopenpyxlをインストールして準備
to_excel()を使いますが、事前にxlwtとopenpyxlというライブラリをpipでインストールしていないとエラーになります。これはto_excel()の内部でxlwtとopenpyxlというライブラリを使っているので、インストールしておく必要があります。xlwtは.xlsファイル(Excel2003以前のフォーマット)の書き出し、openpyxlは.xlsx(Excel2007以降のフォーマット)の書き出しに使われます。
今回は両方インストールしますが、基本的にopenpyxlの方を使っていきます。
pip install xlwt
pip install openpyxl
to_excel()を使う
インストールできたら早速使っていきましょう。データフレームを作成して、Excelファイルに書き出してみます。
import pandas as pd
import openpyxl
df = pd.DataFrame([['Good', 'Nice', 'Awesome'], ['soso', 'Fine', 'Not Good'], ['Bad', 'Good', 'Great']],
index=['first', 'second', 'third'], columns=['Jan', 'Feb', 'Mar'])
print(df)
Jan Feb Mar
first Good Nice Awesome
second soso Fine Not Good
third Bad Good Great
#Sheet 1という名前のExcelファイルが生成される
df.to_excel('data.xlsx')
Excelファイルの読み込みをマスターする
引数指定でできることを見ていきましょう。
シート名を指定する
引数にsheet_nameで指定することで、シート名を変更することができます。デフォルトではsheet1になっています。
#Good Monthというシート名に変更
df.to_excel('data.xlsx', sheet_name='Good Month')
行名と列名を書き出さない方法
データフレームの行と列のラベルをそれぞれ書き出さないこともできます。index=False, header=Falseでそれぞれ書き出しの有無を指定することができます。
#行も列も書き出さない
df.to_excel('data.xlsx', sheet_name='Good Month', index=False, header=False)
複数のデータフレームを書き出す(複数シート作成)
ExcelWriter()にパスを指定して複数のシートを作成します。withを用いてスマートに作りましょう。
#新たに2つデータフレームを作成する
df1 = pd.DataFrame([['Good', 'Nice', 'Awesome'], ['soso', 'Fine', 'Not Good'], ['Bad', 'Good', 'Great']],
index=['first', 'second', 'third'], columns=['Jan', 'Feb', 'Mar'])
df2 = pd.DataFrame([[1, 2, 3], [10, 20, 30], [100, 200, 300]],
index=['one', 'two', 'three'], columns=['Alpha', 'Beta', 'Gamma'])
with pd.ExcelWriter('data.xlsx') as writer:
df1.to_excel(writer, sheet_name='Good Month')
df2.to_excel(writer, sheet_name='oneToThree')
まとめ
Excelファイルへの書き出し方法を見てきました。複数シートへの書き出しは結構使う場面が多い方もいるかと思います。既存のExcelファイルを整理したい時にも便利ですね。
