Python × Excel

Python/PandasでExcel出力【同じファイルの複数シートへの出力も可能】

python-excel-export

本記事では、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')

これによって、次のファイルが出力されました。元々のテストデータと同じ内容になっています。

Excel出力1

 

ただ、赤枠の通り、左の列にインデックスの列ができていたり、シート名がデフォルトの'Sheet1'となっています。

次は、インデックスの列をなくすシート名を指定する方法をみていきます。

sheet_nameでシート名を指定し、index=Falseを付け足すことで、インデックス列を無くします。

 

df.to_excel('予算管理表.xlsx', sheet_name='予算管理表', index=False)

 

結果は次の通りとなります。インデックス列がなくなり、シート名が指定の通りとなりました。

Excel出力2

 

 

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出力3

 

費目ごとのシートは、対象の費目のみレコードとなっています。

Excel出力4

 

このようにフィルターして、同じExcelファイルに複数のシートで出力するのは、日常業務でも頻度は多いと思います。

 

このやり方は覚えるというよりも、使うときにコピーして使うというスタンスで頭に入れておけばと思います。

 

 

以上、Python/PandasでExcel出力する方法を、同じファイルの複数シートへの保存も含めて説明してきました。

最後まで読んでいただき、ありがとうございました。

よく読まれている記事

insta-auto-post 1

  インスタって自動で投稿できないのかな。いつもスマホで投稿するの大変だし・・ Pythonを使えば、インスタで自動で投稿できるよ!!特別に紹介するね ...

python-consult_1 2

  AI・機械学習、データサイエンティスト、、やっぱりこれからの時代Pythonは勉強すべきだよね!   その通り。Pythonは今後も伸び ...

【保存版】PythonでできるExcel操作のまとめ一覧 3

  Excelで作業するのって大変だな〜 なにか楽な方法ないかな〜   Excelの集計や単純作業は、Pythonで楽にできるよ!!この一覧 ...

python-works 4

ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。 以下のリンクで、実際の作り方やソースコードを公開しているので、ぜひ参考にして ...

-Python × Excel

© 2021 inasala note