PythonでExcel : Pandasを使用してExcelファイルを作成する方法

title_openpyxl

Excelファイルの操作はPythonからでも容易に出来ます。Excelに纏わる作業はVBAで行う人が多いかと思いますが、Pythonでも簡単にExcel操作を自動化出来てしまいます。データ処理をPythonで行っている人は、Excel操作もPythonで行っちゃいましょう。

PythonでExcelファイルを作成する方法は幾つかありますが、今回は、pandasを使用した方法を紹介します。

Pandasを使用してエクセルファイルを作成する場合、 ①1個のシートを作成しデータだけ書き込む場合と、②複数シートを作成する、または、チャート(グラフ)等描画する場合、で書き方が若干異なります。

スポンサーリンク

1個のシートにデータだけ書き込む場合

Pandas.DataFrame.to_excelを使用します。使用方法は下記の通りです。

使い方

Pandas.DataFrame.to_excel(filename, sheet_name="Sheet1", header=True, index=True, startrow=0, startcol=0, engine=None)
  • filename : string
    • ファイル名を指定。
  • sheet_name : string
    • シート名を指定。デフォルト値は”Sheet1″。
  • header : boolean
    • デフォルト値はTrue。Trueの場合DataFrameのカラム名がそのまま利用される
  • index : boolean
    • デフォルト値はTrue。Trueの場合データに加え、DataFrameのインデックスが書き込まれる(データ列に加え、インデックス列が出来る)
  • startrow : integer
    • 書き込み開始行を指定。デフォルト値は0。startrow = 1 とた場合、書き込み開始行は2行目からになる
  • startcol : integer
    • 書き込み開始列を指定。デフォルト値は0。startcol= 1とした場合、書き込み開始列はB列となる。
  • engine : string
    • 書き込みエンジンを指定。デフォルト値はNone。Noneの場合、xlsファイルを作成する際にはxlwtが使用され 、xlsxファイルを作成する時はopenpyxlが使用される(詳細はここを参照。xlsxファイルを作成する時は、’xlsxwriter’も指定可能。

指定できるパラメータは上記以外にもあります。詳細はpandasのドキュメントを参照してください。

ソースコード例

import pandas as pd
import numpy as np
#データ作成
X = np.arange(0, 100, 5)
Y = X**2
#データフレーム作成
data = pd.DataFrame({"X": X, "Y": Y})

#例1: engine=None(即ちopenpyxlを使用)
filename = "~/test1.xlsx"
#ファイル名は絶対パスで記述
filename = os.path.expanduser(filename)
data.to_excel(filename, sheet_name = "test01", startrow=1, startcol=1)

#例2: engine=xlsxwriter
#書き込みエンジンにxlsxwriterを使用
filename = "~/test1-1.xlsx)
#ファイル名は絶対パスで記述
filename = os.path.expanduser(filename)
data.to_excel(filename, sheet_name = "test01", startrow=0, startcol=0, engine="xlsxwriter", index=False)

#例3: engine=xlwt
#書き込みエンジンにxlwtを使用。拡張子は.xlsにしないとエラーになる。
filename = "~/test1-2.xls)
#ファイル名は絶対パスで記述
filename = os.path.expanduser(filename)
data.to_excel(filename, sheet_name = "test01", startrow=0, startcol=1, engine="xlwt, index=False)
pandas.DataFrame.to_excelで作成されたエクセルファイル
スポンサーリンク

複数シートを扱う場合、チャートや図を作成する場合

pandas.ExcelWriterpandas.DataFrame.to_excelを使用します

使い方

1. まずExcelWriterオブジェクトを作成します。

writer = pandas.ExcelWriter(filename, engine=None)
  • filename : string
    • ファイル名
  • engine :string
    • pandas.DataFrame.to_excelで述べた内容と同じ

2. 次にpandas.DataFrame.to_excelを使用します。使用方法は殆ど先程と同じです。
writerにwriterオブジェクトをセットする点が先程と異なります。
engineはここで指定しても構いませんが、異なるエンジンを設定するとエラーになります。

Pandas.DataFrame.to_excel(writer, sheet_name="Sheet1", header=True, index=True, startrow=0, startcol=0, engine=None)
  • writer : writerオブジェクト(pandas.ExcelWriter)
  • その他はpandas.DataFrame.to_excelと同じ

3. Writerを閉じます

writer.close()

1と3は下記のように書いてもOKです。

with pd.ExcelWriter(...) as writer:

ソースコード例

import pandas as pd
import numpy as np

X = np.arange(0, 100, 5)
Y = X*2

#ファイル名は絶対パスで記述
filename = "~/test1-3.xlsx"
filename = os.path.expanduser(filename)

#writerオブジェクトの作成
writer = pd.ExcelWriter(filename, engine="xlsxwriter")

#データフレーム作成
data1 = pd.DataFrame({"X1": X, "Y1": Y})
data2 = pd.DataFrame({"X2" : X * 2, "Y2": Y * 2})

#sheet01に書き込み
data1.to_excel(writer, sheet_name="sheet01", header=True, index=False, startrow=0, startcol=0)
#sheet02に書き込み
data2.to_excel(writer, sheet_name="sheet02", header=True, index=True, startrow=0, startcol=0)

writer.close()

''' 
以下のように書いてもよい
with pd.ExcelWriter(filename, engine="xlsxwriter") as writer: 
	data1.to_excel(writer, sheet_name="sheet01", header=True, index=False, startrow=0, startcol=0)
	data2.to_excel(writer, sheet_name="sheet02", header=True, index=True, startrow=0, startcol=0)
'''
pd.ExcelFileで作成されたxlsxファイル
タイトルとURLをコピーしました