Pythonのデータ分析ライブラリであるPandasを使えば、データの確認、視覚化、整形、欠損値のハンドリング、各種集計など、大量のデータを解析する上で必須となる作業が、シンプルなコードで、比較的高速に実現できます。
また、Pandasで集計したデータフレーム(表形式のデータ)をエクセルに書き出し共有することは実務上よく行われます。単にエクセル化するだけなら、Pandasだけで可能ですが、いくつかにシートを分けてエクセルに書き出すことはPandasだけでは出来ません。
そこで、ExcelWriter
を使用すると、複数のシートへのデータ書き込みや既存ファイルへの追記が容易になります。本記事では、PandasのExcelWriter
を用いたエクセルファイルへの書き込み方法について、具体的な手順と注意点を解説します。
PandasのExcelWriterとは
PandasのExcelWriter
は、エクセルファイルへの書き込みをサポートするコンテキストマネージャであり、複数のシートへのデータ書き込みや既存ファイルへの追記を可能にします。使用する際は、エクセル操作ライブラリとしてopenpyxl
を指定することが推奨されます。
エクセルファイルへの基本的な書き込み方法
単一シートへ書き込む方法
単一シートへの書き込みであれば、Pandasだけで可能です。
例えば、3つの店舗を有している会社を仮定し、各店舗の第一四半期の業績データを集計するとします。
import pandas as pd
import numpy as np
col = ['部門','売上','金額']
idx = ['2025/1/31','2025/2/28','2025/3/31']
data = [
['新宿','11000000','6500000'],
['名古屋','8000000','4500000'],
['博多','7000000','4300000']
]
df_performance_1Q = pd.DataFrame(data,index=idx,columns=col)
df_performance_1Q
上記コードを実行すると、次のデータフレームが表示されます。

このデータフレームを「データ集計」という名前のエクセルファイルの「部門別業績_1Q」というシートに書き出すためには、次のコードを実行します。
df_performance_1Q.to_excel('データ集約.xlsx',sheet_name='部門別業績_1Q')
エクセルファイルを開くと、この様にPandasのデータフレームが書き出されています。

エクセルのシートを追加し、その追加シートへ書き込む方法
次に、上記データフレームに加えて、各店舗のKPIデータも集計するとします。
col = ['客数','回転率','リピート率']
idx = ['新宿','名古屋','博多']
data = [
['500','2.5','40%'],
['400','2.3','55%'],
['380','2,2','50%']
]
df_kpi = pd.DataFrame(data,index=idx,columns=col)
df_kpi
上記コードを実行すると、次のデータフレームが表示されます。

さきほどの「データ集計」ファイルに「部門別KPI」というシートを加え、そのシートに書き出すためには、次のコードを実行します。
with pd.ExcelWriter('データ集約.xlsx',mode='a') as writer:
df_kpi.to_excel(writer,sheet_name='部門別KPI')
エクセルファイルを開くと、「部門別業績_1Q」シートに加え、「部門別KPI」シートができ、Pandasのデータフレームが書き出されています。

複数シートへの書き込み
一機に複数シートに書き出すためのコードは次のとおりです。
import pandas as pd
import numpy as np
col = ['部門','売上','金額']
idx = ['2025/1/31','2025/2/28','2025/3/31']
data = [
['新宿','11000000','6500000'],
['名古屋','8000000','4500000'],
['博多','7000000','4300000']
]
df_performance_1Q = pd.DataFrame(data,index=idx,columns=col)
col = ['客数','回転率','リピート率']
idx = ['新宿','名古屋','博多']
data = [
['500','2.5','40%'],
['400','2.3','55%'],
['380','2,2','50%']
]
df_kpi = pd.DataFrame(data,index=idx,columns=col)
df_performance_1Q.to_excel('データ集約.xlsx',sheet_name='部門別業績_1Q')
with pd.ExcelWriter('データ集約.xlsx',mode='a') as writer:
df_kpi.to_excel(writer,sheet_name='部門別KPI')
この様に、ExcelWriterを使えば、複数シートに書き出すことが容易に行うことができます。
まとめ
PandasのExcelWriter
を活用することで、エクセルファイルへのデータ書き込みや既存ファイルへの追記が効率的に行えます。
是非、Pandasに加え、ExcelWriter
の活用もマスターしてください!
コメント