本記事では、PythonでExcel への出力方法を、同じファイルの複数シートの出力も含めてご紹介します。
Pythonの実行環境
今回は、以下の実行環境でプログラムを実行しています。
・Python 3.7.6
・Jupyterlab 1.2.6
・Pandas:1.1.2
テストデータは、次のような予算管理表を使います。
ファイル名は「テストデータ.xlsx」で、シート名は「予算管理表」です。
■予算管理表
本記事で、利用するライブラリはPandasです。
そして、テストデータの予算管理表をdfとして読み込んでおきます。
import pandas as pd
df = pd.read_excel('テストデータ.xlsx', sheet_name = '予算管理表')
※本記事では、Pythonのコードの下のコメントアウトは、出力結果を示しています。
Python/PandasでExcelへの出力方法
まずは、上のテストデータの全体をExcelに出力する方法をみていきます。
to_excel()を使ってExcelへの出力を行います。シンプルで分かりやすいですね。
df.to_excel('予算管理表.xlsx')
これによって、次のファイルが出力されました。元々のテストデータと同じ内容になっています。
ただ、赤枠の通り、左の列にインデックスの列ができていたり、シート名がデフォルトの'Sheet1'となっています。
次は、インデックスの列をなくす、シート名を指定する方法をみていきます。
sheet_nameでシート名を指定し、index=Falseを付け足すことで、インデックス列を無くします。
df.to_excel('予算管理表.xlsx', sheet_name='予算管理表', index=False)
結果は次の通りとなります。インデックス列がなくなり、シート名が指定の通りとなりました。
Python/Pandasで同じExcelファイルの複数シートに出力する方法
同じExcelファイルの複数シートに出力する方法をみていきます。
まず、テストデータを複数の表(データフレーム)に分割します。
今回は、「費目1」列の値ごとにフィルターを使って分けます。
Pythonでのフィルターの使い方については、下の記事を参考にしてください。
参考PythonでExcelのフィルター(完全一致、部分一致、複数条件)を行う方法
それでは、フィルターを定義します。
filter_syoumou = df['費目1'] == '1-消耗品費'
filter_itaku = df['費目1'] == '2-委託費'
filter_setubi = df['費目1'] == '3-設備'
次に、費目別にシートを分けて保存するコードをみていきます。
#出力するファイル名を'予算管理表.xlsx'としてwriterを定義
writer = pd.ExcelWriter('予算管理表_費目別.xlsx', engine = 'xlsxwriter')
#全レコードを'全体'シートに出力
df.to_excel(writer, sheet_name = '全体', index=False)
#'1-消耗品費'のレコードを'消耗品費'シートに出力
df[filter_syoumou].to_excel(writer, sheet_name = '消耗品費', index=False)
#'2-委託費'のレコードを'委託費'シートに出力
df[filter_itaku].to_excel(writer, sheet_name = '委託費', index=False)
#'3-設備'のレコードを'設備'シートに出力
df[filter_itaku].to_excel(writer, sheet_name = '設備', index=False)
#Excelファイルを保存
writer.save()
#Excelファイルを閉じる
writer.close()
すこし長いですが、処理の流れはこんな感じになります。
1. pd.ExcelWriterでファイル名を設定し、writerを定義する
2. writerを使って、シートごとに保存するデータフレーム(df)を決める
3. Excelファイルを保存する
4. Excelファイルを閉じる
実際の出力結果は次のようになります。
「費目1」列の種類だけシートが作られています。
費目ごとのシートは、対象の費目のみレコードとなっています。
このようにフィルターして、同じExcelファイルに複数のシートで出力するのは、日常業務でも頻度は多いと思います。
このやり方は覚えるというよりも、使うときにコピーして使うというスタンスで頭に入れておけばと思います。
以上、Python/PandasでExcel出力する方法を、同じファイルの複数シートへの保存も含めて説明してきました。
最後まで読んでいただき、ありがとうございました。