Pandas DataFrame DataFrame.to_excel()関数

Jinku Hu 2023年1月30日 2020年5月30日
  1. pandas.DataFrame.to_excel() の構文
  2. コード例:Pandas DataFrame.to_excel()
  3. コード例:Pandas DataFrame.to_excel()ExcelWriter
  4. コード例:既存の Excel ファイルに追加する Pandas DataFrame.to_excel
  5. コード例:複数のシートを書き込むための Pandas DataFrame.to_excel
  6. コード例:header パラメータを持つ Pandas DataFrame.to_excel
  7. コード例:Pandas DataFrame.to_excelindex = False
  8. コード例:Pandas DataFrame.to_excelindex_label パラメータ
  9. コード例:float_format パラメータを持つ Pandas DataFrame.to_excel
  10. コード例:freeze_panes パラメーターを持つ Pandas DataFrame.to_excel
Pandas DataFrame DataFrame.to_excel()関数

Python Pandas DataFrame.to_excel(values) 関数は、データフレームデータを単一シートまたは複数シートの Excel ファイルにダンプします。

pandas.DataFrame.to_excel() の構文

DataFrame.isin(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, 
               encoding=None, 
               inf_rep='inf', 
               verbose=True, 
               freeze_panes=None) 

パラメーター

excel_writer Excel ファイルパスまたは既存の pandas.ExcelWriter
sheet_name DataFrame がダンプするシート名
na_rep null 値の表現。
float_format 浮動小数点数の形式
header 生成された Excel ファイルのヘッダーを指定します。
index True の場合、DataFrame index を Excel に書き込みます。
index_label インデックス列の列ラベル。
startrow Excel にデータを書き込むための左上のセル行。
デフォルトは 0 です
startcol Excel にデータを書き込むための左上のセル列。
デフォルトは 0 です
engine 使用するエンジンを指定するオプションのパラメーター。openyxl または xlswriter
merge_cells 結合されたセルに MultiIndex を結合します
encoding 出力 Excel ファイルのエンコーディング。xlwt ライターを使用する場合にのみ必要であり、他のライターは Unicode をネイティブでサポートします。
inf_rep 無限の表現。デフォルトは inf です
verbose True の場合、エラーログはより多くの情報で構成されます
freeze_panes フリーズしたペインの一番下と一番右を指定します。これは 1 ベースですが、0 ベースではありません。

戻り値

None

コード例:Pandas DataFrame.to_excel()

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

dataframe.to_excel('test.xlsx')

呼び出し元の DataFrame

   Attendance    Name  Marks
0          60  Olivia     90
1         100    John     75
2          80   Laura     82
3          78     Ben     64
4          95   Kevin     45

test.xlsx が作成されます。

Pandas DataFrame to_excel.png

コード例:Pandas DataFrame.to_excel()ExcelWriter

上記の例では、ファイルパスを excel_writer として使用していますが、pandas.Excelwriter を使用して、DataFrame ダンプする Excel ファイルを指定することもできます。

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer)

コード例:既存の Excel ファイルに追加する Pandas DataFrame.to_excel

import pandas as pd
import openpyxl

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx', mode='a', engine='openpyxl') as writer:
    dataframe.to_excel(writer, sheet_name="new")

engineopenpyxl として指定する必要がありますが、デフォルトの xlsxwriter ではありません。そうしないと、xlswriter が追加モードをサポートしないというエラーが発生します。

ValueError: Append mode is not supported with xlsxwriter!

openpyxlpandas の一部ではないため、インストールしてインポートする必要があります。

pip install openpyxl

Pandas DataFrame to_excel-追加シート

コード例:複数のシートを書き込むための Pandas DataFrame.to_excel

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, sheet_name="Sheet1")
    dataframe.to_excel(writer, sheet_name="Sheet2")

DataFrame オブジェクトを Sheet1Sheet2 の両方にダンプします。

また、columns パラメータを指定すると、異なるデータを複数のシートに書き込むことができます。

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, 
                       columns=["Name","Attendance"],
                       sheet_name="Sheet1")
    dataframe.to_excel(writer, 
                       columns=["Name","Marks"],
                       sheet_name="Sheet2")

コード例:header パラメータを持つ Pandas DataFrame.to_excel

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, header=["Student", "First Name", "Score"])

作成された Excel ファイルのデフォルトのヘッダーは、DataFrame の列名と同じです。header パラメータはデフォルトのヘッダーを置き換える新しいヘッダーを指定します。

Pandas DataFrame to_excel-ヘッダー名を変更する

コード例:Pandas DataFrame.to_excelindex = False

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, index=False)

index = False は、DataFrame.to_excel() がヘッダー行のない Excel ファイルを生成することを指定します。

コード例:Pandas DataFrame.to_excelindex_label パラメータ

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, index_label='id')

index_label = 'id'は、インデックス列の列名を id に設定します。

Pandas DataFrame to_excel-インデックスラベルを設定する

コード例:float_format パラメータを持つ Pandas DataFrame.to_excel

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, float_format="%.1f")

float_format ="%.1f "は、浮動小数点数が 2つの浮動数字になるように指定します。

コード例:freeze_panes パラメーターを持つ Pandas DataFrame.to_excel

import pandas as pd

dataframe= pd.DataFrame({'Attendance': [60, 100, 80, 78, 95],
                    'Name': ['Olivia', 'John', 'Laura', 'Ben', 'Kevin'],
                    'Marks': [90, 75, 82, 64, 45]})

with pd.ExcelWriter('test.xlsx') as writer:
    dataframe.to_excel(writer, freeze_panes=(1,1))

freeze_panes =(1,1)は、Excel ファイルに固定された先頭行と固定された最初の列があることを指定します。

Pandas DataFrame to_excel-freeze_panes

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

関連記事 - Pandas DataFrame