今回は、PandasデータフレームをExcelファイルとして書き出す方法を紹介します。
Pandasバージョン
本記事は、Pandas2.2.3の情報を基に執筆しています。
import pandas as pd
print(pd.__version__)
>>
2.2.3
pd.to_excel()
Excelの出力にはpd.to_excel()を用います。必須の引数として、出力するファイルのパスを拡張子付きで指定します。相対パスでも絶対パスでも問題ありません。
DataFrame.to_excel(excel_writer, *, sheet_name=’Sheet1′, na_rep=”, float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep=’inf’, freeze_panes=None, storage_options=None, engine_kwargs=None)
以下のような形式で指定します。
df.to_excel("output/output.xlsx")
引数
引数 | 必須 | 説明 |
---|---|---|
excel_writer | ○ | 出力するファイルのパスまたはExcelWriterを指定する。 |
sheet_name | 出力するシート名をStringで指定する。デフォルトは‘Sheet1’。 | |
na_rep | 欠損値の表現。デフォルトは”。 | |
float_format | 出力するfloat型のフォーマットを指定する。 | |
columns | 出力するカラムをリスト形式で指定する。 | |
header | Falseとした場合、ヘッダーを出力しない。 列名をリストで指定した場合、その列名をヘッダーとして出力される。 | |
index | Falseとすると、インデックス(行名)を出力しない。 デフォルトはTrue。 | |
index_label | インデックス列の列名をStringで指定する。 | |
startrow | 出力を開始するExcelの行を整数で指定する。 | |
startcol | 出力を開始するExcelの列を整数で指定する。 | |
engine | ‘openpyxl’または‘xlsxwriter’のいずれかを指定する。 | |
merge_cells | マルチインデックスと階層行を結合したセルとして出力する。 | |
inf_rep | 無限を示す文字列を指定する。デフォルトは’inf’。 | |
freeze_panes | 「ウィンドウ枠の固定」を行うセルを指定する。 (行、列)のタプルで指定する。 | |
storage_options | S3などリモートのファイルへのアクセスに必要な情報を辞書形式で指定する。 |
ここからは、よく使う引数をいくつか紹介しよう。
sheet_name
sheet_nameを指定することで、出力するシートの名前を変えることができます。
df.to_excel("output/output.xlsx", sheet_name="test")
float_format
出力するfloat型のフォーマットを指定します。例えば”%.2f”とした場合、少数第2位まで出力されます。
df.to_excel("output/output.xlsx", float_format="%.2f")

columns
出力するカラムを指定します。
df.to_excel("output/output.xlsx", columns=["Date", "Open"])
![df.to_excel("output/output.xlsx", columns=["Date", "Open"])](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
header
Falseを指定することで、ヘッダーを出力しないようにできます。デフォルトはTrueです。
df.to_excel("output/output.xlsx", header=False)

また、リスト形式でヘッダーを指定することもできます。
df.to_excel("output/output.xlsx", header=["a", "b", "c", "d", "e", "f", "g"])
![df.to_excel("output/output.xlsx", header=["a", "b", "c", "d", "e", "f", "g"])](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
index
Falseを指定することで、インデックス列を出力しないようにできます。デフォルトはTrueです。
df.to_excel("output/output.xlsx", index=False)
![df.to_excel("output/output.xlsx", header=["a", "b", "c", "d", "e", "f", "g"])](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
startrow
Excel上の出力位置(行)をずらす引数です。出力を開始するExcelの行を整数で指定します。
※データフレームのデータは全件出力されます。
df.to_excel("output/output.xlsx", startrow=5)

startcol
Excel上の出力位置(列)をずらす引数です。出力を開始するExcelの列を整数で指定します。
※データフレームのデータは全件出力されます。
df.to_excel("output/output.xlsx", startcol=3)

Pythonでデータサイエンスするなら
Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。
ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^
まとめ
pandasでExcelファイルを書き出す方法を紹介しました。Excelを使ったデータ連携の場面は少なくないと思います。是非参考にしてみてください。
連携しやすい形で出力することがポイントだな。
今回はここまでにしよう。
ありがとうございました~~♪