PandasのExcelWriterを活用したエクセルファイルへの効率的な書き込み方法

経理×Excel×Python

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の活用もマスターしてください!

コメント

タイトルとURLをコピーしました