【簡単】Pandasのto_excelでExcelファイル(xlsx, xls)に書き出す

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

また、Excelファイルを読み込む方法を知りたい方はこちらの記事をどうぞ!

Pandasのread_excelでExcelファイルを読み込む方法

Excelファイルはto_excel()で書き出せる

xlwtとopenpyxlをインストールして準備

to_excel()を使いますが、事前にxlwtとopenpyxlというライブラリをpipでインストールしていないとエラーになります。これはto_excel()の内部でxlwtopenpyxlというライブラリを使っているので、インストールしておく必要があります。xlwtは.xlsファイル(Excel2003以前のフォーマット)の書き出し、openpyxlは.xlsx(Excel2007以降のフォーマット)の書き出しに使われます。
今回は両方インストールしますが、基本的にopenpyxlの方を使っていきます。

pip
pip install xlwt
pip install openpyxl
注意
読み込んでない状態でto_excel()を使うと、エラーが発生します。ModuleNotFoundError: No module named ‘openpyxl’

to_excel()を使う

インストールできたら早速使っていきましょう。データフレームを作成して、Excelファイルに書き出してみます。

Python
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')
注意
to_excel()でファイル生成のパスを指定した際に、ファイルが存在しない場合は新規作成されます。ファイルが既に存在している場合は上書き保存され、元のファイルのデータが削除されるので注意しましょう!

Excelファイルの読み込みをマスターする

引数指定でできることを見ていきましょう。

シート名を指定する

引数にsheet_nameで指定することで、シート名を変更することができます。デフォルトではsheet1になっています。

Python
#Good Monthというシート名に変更
df.to_excel('data.xlsx', sheet_name='Good Month')

行名と列名を書き出さない方法

データフレームの行と列のラベルをそれぞれ書き出さないこともできます。index=False, header=Falseでそれぞれ書き出しの有無を指定することができます。

Python
#行も列も書き出さない
df.to_excel('data.xlsx', sheet_name='Good Month', index=False, header=False)

複数のデータフレームを書き出す(複数シート作成)

ExcelWriter()にパスを指定して複数のシートを作成します。withを用いてスマートに作りましょう。

Python
#新たに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ファイルを整理したい時にも便利ですね。

Pandasのread_tableでtxtファイルを読み込む方法