PandasのDataFrameでEXCELファイルを読み込む(開く)・EXCELファイルを書き込む(保存)

本記事ではPandasのDataFrameにEXCELファイルを読み書きする方法を紹介します。

こんな人におすすめ

・PandasのDataFrameでEXCELファイルを読み込みたい
・ヘッダ行の行数を指定してPandasのDataFrameにEXCELファイルのデータを読み込みたい
・PandasのDataFrameにシートを指定してEXCELファイルのデータを読み込みたい
・PandasのDataFrameに複数シートを指定してEXCELファイルのデータを読み込みたい
・PandasのDataFrameでEXCELファイルに新規もしくは上書きで書き込みたい
・複数のPandasのDataFrameでEXCELファイルに新規もしくは上書きで書き込みたい
・PandasのDataFrameでEXCELファイルに追記で書き込みたい

主なライブラリ

numpy
pandas

本ページで使用するライブラリをインポートするときは以下のコードを使用します。

import numpy as np
import pandas as pd

PandasのDataFrameでEXCELファイルを読み込む

EXCELファイル(data1.xlsx)をPandasのDataFrameに読み込みます。

Pandasのread_excelを使うことで、PandasのDataFrameに読み込むことができます。

df1 = pd.read_excel('data1.xlsx)

ヘッダ行の行数を指定してPandasのDataFrameにEXCELファイルのデータを読み込む

ヘッダ位置を指定してexcelファイルをDataFrameに読み込むときには、headerの引数を使います。
1行目に余分なデータが含まれるdata2.xlsxを読み込む例を使って引数の使い方を見ていきます。

下のコードでは、2行目のデータをヘッダとして読み込むためにheader=1を指定します。

df2 = pd.read_excel('data2.xlsx', header=1)

PandasのDataFrameにシートを指定してEXCELファイルのデータを読み込む

シートを指定してEXCELファイルをDataFrameに読み込むときには、sheet_nameの引数を使います。
data3.xlsxのsheet1を読み込む例を使って引数の使い方を見ていきます。

df3 = pd.read_excel('data3.xlsx', sheet_name='sheet1')

PandasのDataFrameに複数シートを指定してEXCELファイルのデータを読み込む

複数シートを指定してEXCELファイルをDataFrameに読み込むときも、sheet_nameの引数を使います。
data3.xlsxのsheet1sheet2を読み込み、sheet1とsheet2のデータをそれぞれprint関数で出力する例を使って引数の使い方を見ていきます。

df4 = pd.read_excel('data3.xlsx', sheet_name=[’sheet1’, 'sheet2'])

# sheet1を読み込む
df4_1 = df5['sheet1']

# sheet2を読み込む
df4_2 = df5['sheet2']

PandasのDataFrameでEXCELファイルに新規もしくは上書きで書き込む

Pandasのto_excel関数を使うことで、PandasのDataFrameをEXCELファイルに書き込むことができます。

df1.to_excel('data1.xlsx')

複数のPandasのDataFrameでEXCELファイルに新規もしくは上書きで書き込む

PandasのExcelWriterとto_excel関数を使うことで、Pandasの複数のDataFrameをEXCELファイルに書き込むことができます。

with pd.ExcelWriter('data6.xlsx') as writer:
    df1.to_excel(writer, sheet_name='sheet1')
    df2.to_excel(writer, sheet_name='sheet2')

PandasのDataFrameでEXCELファイルに追記で書き込む

PandasのExcelWriterとto_excel関数を使用します。
PandasのExcelWriterのmode引数に’a’を指定することで、PandasのDataFrameをEXCELファイルに追記で書き込むことができます。

with pd.ExcelWriter('data/dst/pandas_to_excel.xlsx', mode='a') as writer:
    df1.to_excel(writer, sheet_name='new_sheet1')