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出力する方法を、同じファイルの複数シートへの保存も含めて説明してきました。

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

よく読まれている記事

se-shikaku 1

  社内SEになるには資格って必要?社内SEでキャリアップするときにおすすめの資格は? 回答としては、 社内SEは、対人スキル、実務での対応力や最新情 ...

社内SEの仕事内容 2

  社内SEってどんな仕事なんだろ~ 検索しても転職サイトの記事ばかりでよく分からない・・   確かにそうですね。。実経験を基に、社内SE( ...

side-work-trial 3

  コロナで会社の経営も不安。。個人でお金稼ぎたいな~ 今、こう考えるサラリーマン、OLの方はごまんといると思います。   僕は、本業では社 ...

adsense-pass 4

【3記事で一発合格】Google AdSense申請に合格したブログ情報 こんにちは、いなサラ(@いなサラ|田舎の情シスサラリーマン)です。 2019年10月5 ...

-Python × Excel

© 2020 inasala note