ホーム > 記事 > Python > pandas > 【Python】Excelファイルの書き込み | to_excel | Excelwriter

記事

【Python】Excelファイルの書き込み | to_excel | Excelwriter

ここではpandas.DataFrameからExcelにデータ出力する方法についてのべます。

データ分析や加工で用いるpandas。pandasは様々なデータソースからDataFrameにデータを読み込み、加工して結果を他へ出力するためのプラットフォームとしての役割をもっています。

加工して出力した後のデータはどうするのか。システムとしてデータを保持するのであればデータベースでも良いでしょう。しかし一般の人にもデータを共有する場合には方法が限られます。誰でも利用方法がわかるものでなくてはなりません。

そのように考えたとき分析結果や処理結果をExcelとして出力・共有するというのは良い方法だとおもいます。今回はDataFrameからExcelシートにデータを出力する方法についてのべます。

目次

  1. Excelシートを作成しデータを出力する to_excel
  2. 実装サンプル
  3. 複数シート(Book)に出力する Excelwriter
  4. まとめ

Excelシートを作成しデータを出力する to_excel

DataFrameから新しいExcelシートにデータを出力する場合にはDataFrameのto_exceメソッドを使います。

to_excel('ファイル名.xlsx')

これでファイル名でExcelファイルで出力されます。シート名を指定していないため'Sheet1'という名前でシートが作成されます。

シート名を指定するときにはsheet_name='シート名'で指定します。

to_excel('ファイル名.xlsx',sheet_name='シート名')

↑目次

実装サンプル

Excelからファイルを読み込んでDataFrameに格納し、DataFrameのデータをExcelシートとして出力します。

読み込むファイルは以前にもでた以下のファイルになります。
sample1-read-excel.xlsxファイル

import pandas as pd
data_frame_dict=pd.read_excel('sample1-read-excel.xlsx',index_col='id',header=1,sheet_name=['地域','顧客'])

読み込んだ後'地域.xlsx'と'顧客.xlsx'というファイル名で出力します。read_excelを用いて複数シートを読み込んだ場合、keyとkeyに紐付くDataFrameのディクショナリで格納されるため、以下のようにforループを回してDataFrameのディクショナリに含まれたディクショナリをすべてExcelシートのファイルにして出力します。

for sheet_name,data_frame in data_frame_dict.items():
    file_name=sheet_name + '.' + 'xlsx'
    data_frame.to_excel(file_name,sheet_name=sheet_name)

↑目次

複数シート(Book)に出力する Excelwriter

複数シートを1つのExcelファイルに出力する場合にはExcelwriterを用いて同一writerに対し複数回to_excelメソッドをよびだします。先程までのソースに以下を追加します。

with pd.ExcelWriter('ExcelWriterのテスト.xlsx') as writer:
    for sheet_name,data_frame in data_frame_dict.items():
        data_frame.to_excel(writer, sheet_name)

「ExcelWriterのテスト.xlsx」というファイルが作成されDataFrameのディクショナリに入っているkey名でExcelシートが作成されます。各シートには対応するDataFrameのデータが出力されます。

↑目次

まとめ

データフレームをExcelに出力する方法についてのべました。Sheetのみに出力する場合と、複数シートに出力する方法についてみてみました。簡単にデータをExcelに出力することができるto_excelメソッドですが、既存のExcelを編集することは苦手です。そのような場合にはopenpyxlを使って直接Excelファイルを編集してみてください。

↑目次

この記事へのコメント

コメントはまだありません。

コメントを送る

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  画像の文字を入力してください