本記事では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')