『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

現場で使える Django の教科書《基礎編》

新品価格
¥1,728から
(2019/8/21 23:36時点)

【pandas】Excelファイルへの書き出し

pandas.DataFrame.to_excel()

pandas.DataFrame.to_excel() を使うと、データフレームを Excelファイルに書き出すことができます。引数で指定したファイル名がすでに存在している場合はファイルを上書きし、存在しない場合は新規ファイルを作成します。Excel ファイルから読み込んだデータをデータフレームに格納する関数については以下の記事を参照してください。

[pandas] Excelファイルの読み込み

最初に国別の人口と面積を格納したデータフレーム df1 を作成しておきます (出典:Wikipedia)。

# PANDAS_WRITE_EXCEL

# In[1]

import numpy as np
import pandas as pd

# 行ラベル
r = ["中国", "インド", "アメリカ合衆国"]

# 列ラベル
c = ["人口", "面積"]

# データ
arr = np.array([[1345750000, 9596961],
                [1198003000, 3287263],
                [314658000,  9629091]])

# データフレームを作成
df1 = pd.DataFrame(arr, index = r, columns=c)

pop_area_c.xlsx という名前で Excelファイルを新規作成して、データフレーム df1 を保存してみます。

# In[2]

df1.to_excel("pop_area_c.xlsx")

pop_area_c.xlsx を開いて中身を確認しておきます。
 
pandas.to_Excel 中国・インド・USAの人口と面積

startrow, startcol

デフォルト設定で書き込むと表はシートの左上隅にくっついていますが、startrow, startcol で表の位置を指定することができます。表の上に 3 行、左に 1 列の空白セルを挿入してみます (pop_area_c.xlsx に上書きします)。

# In[3]

df1.to_excel("pop_area_c.xlsx", startrow=3, startcol=1)

pandas.to_Excel startrow,startcol

sheet_name

sheet_name でシート名を設定できます(デフォルトのシート名は “sheet1″)。

# In[4]

df1.to_excel("pop_area_c.xlsx", sheet_name="pop1-3")

pandas.to_Excel sheet_name

pandas.ExcelWriter

新しいデータフレーム df2 と df3 を作成しておきます。

# In[5]

# 行ラベル
r2 = ["インドネシア", "ブラジル", "パキスタン"]

# 列ラベル
c2 = ["人口", "面積"]

# データ
arr2 = np.array([[229964000, 1904569],
                [193733000, 8514877],
                [180808000,  796095]])

# データフレームを作成
df2 = pd.DataFrame(arr2, index = r2, columns = c2)

# 行ラベル
r3 = ["バングラデシュ", "ナイジェリア", "ロシア"]

# 列ラベル
c3 = ["人口", "面積"]

# データ
arr3 = np.array([[162220000,   143998],
                [154728000,   923768],
                [140873000, 17098242]])

# データフレームを作成
df3 = pd.DataFrame(arr3, index = r3, columns = c3)

ExcelWriter オブジェクトを使うと、複数シートにデータフレームを同時に書き出すことができます。

# In[6]

# シート"pop1-3"にdf1,"po-4-6"にdf2を書き込む
with pd.ExcelWriter("pop_area_c.xlsx") as ew:
    df1.to_excel(ew, sheet_name="pop1-3")
    df2.to_excel(ew, sheet_name="pop4-6")

pandas.ExcelWriter 複数シートへの同時書き込み
pandas はバックグラウンドで xlrd や openpyxl, xlsxwriter などのモジュールを使用しています。pandas.ExcelWriter() の engine に openpyxl を渡し、追記モード (mode=”a”) を指定すると、既存のブックに新しいシートを追加してデータを書き込むことができます。

# In[7]

# pop_area_c.xlsxにシートを追加してデータを書き込む
with pd.ExcelWriter("pop_area_c.xlsx",
                    engine="openpyxl", mode="a") as ew:
    df3.to_excel(ew, sheet_name="pop7-9")

pandas.ExcelWriter 既存のファイルにシートを追加

コメント

  1. HNaito より:

    下記は誤植と思われますので、ご確認ください。
    WRITE_EXCEL-1 プログラムで下記の 2 行を追加。
    import numpy as np
    import pandas as pd

    WRITE_EXCEL-1 プログラムの下の文で、df → df1