Home » Python » pandasの使い方 » pandas.read_excel()関数で全シートを読み込む

pandas.read_excel()関数で全シートを読み込む

動作検証バージョン:Windows 11 Home + Python 3.10.6 + Jupyter Notebook 6.5.3 + pandas 1.5.1

「pandas.read_excel 全シート」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

Pythonのデータ分析用ライブラリpandasのread_excel()関数を使って、Excelブックの全シートのデータを読み込むには、どのようなコードを書けばいいのかを調べていた方による検索でしょう。

[スポンサードリンク]

pandas.read_excel()関数で全シートを読み込むサンプル

Cドライブtempフォルダーにsamp.xlsxブックを用意しておいてから以下のスクリプトを実行してください。

import pandas as pd


bk = pd.ExcelFile(r'C:\temp\samp.xlsx')
dic_df = pd.read_excel(bk, sheet_name=None)

print(dic_df)

samp.xlsxブックに、下図のような「SheetA」「SheetB」「SheetC」シートが存在するときに、

Jupyter Notebookで上記のスクリプトを実行すると、以下のように出力されます。

{'SheetA': Id Name Birdhday
0 1001 Alice 2010-01-01
1 1002 Bob 2010-02-01
2 1003 Chris 2010-03-01
3 1004 Dave 2010-04-01, 'SheetB': Id Name Birdhday
0 2001 Eve 2011-01-01
1 2002 Frank 2012-02-01, 'SheetC': Id Name Birdhday
0 3001 Grace 2012-01-01
1 3002 Heidi 2012-02-01
2 3003 Ivan 2012-03-01}

「pandas.read_excel 全シート」
と検索なさった方の探していらしたのは、

dic_df = pd.read_excel(bk, sheet_name=None)

の部分です。

pandas.read_excel()関数の引数sheet_nameにPythonの予約語Noneを指定すると、全シートを取得できます。

引数sheet_nameにNoneを指定するとread_excel()で全シートを読み込める

pandas.read_excel()関数の引数sheet_nameについて、公式ドキュメントには以下のように書かれています。

Strings are used for sheet names. Integers are used in zero-indexed sheet positions (chart sheets do not count as a sheet position). Lists of strings/integers are used to request multiple sheets. Specify None to get all worksheets.

引数sheet_nameにNoneを指定したときの戻り値は辞書

引数sheet_nameにNoneを指定した場合、シート名がkeyで値がDataFrameの辞書が返されます。
先ほどのスクリプト実行後に

type(dic_df)

をJupyter Notebookで実行すると、

dict

と出力されます。

dic_df.keys()

を実行すると

dict_keys(['SheetA', 'SheetB', 'SheetC'])

が出力され、辞書のkeyがシート名であることを確認できます。
また、

dic_df.items()

を実行すると

dict_items([('SheetA', Id Name Birdhday
0 1001 Alice 2010-01-01
1 1002 Bob 2010-02-01
2 1003 Chris 2010-03-01
3 1004 Dave 2010-04-01), ('SheetB', Id Name Birdhday
0 2001 Eve 2011-01-01
1 2002 Frank 2012-02-01), ('SheetC', Id Name Birdhday
0 3001 Grace 2012-01-01
1 3002 Heidi 2012-02-01
2 3003 Ivan 2012-03-01)])

が出力されます。

dic_df['SheetA']

を実行すると、下図のように出力されます。

read_excel()関数の第1引数はパスの指定も可能

上記のサンプルでは、

bk = pd.ExcelFile(r'C:\temp\samp.xlsx')

と、pandas.ExcelFile()関数で変数bkにExcelFileオブジェクトを用意しておいてから、

dic_df = pd.read_excel(bk, sheet_name=None)

pandas.read_excel()関数の第1引数に、ExcelFileオブジェクトを指定していますが、ワークシートの枚数や全体のデータ量がそれほど多くなければ、

dic_df = pd.read_excel(r'C:\temp\samp.xlsx', sheet_name=None)

のように、read_excel()関数の第1引数にブックへのパスを指定してもOKでしょう。

pandasの作者 Wes McKinney 氏が著者の『Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理』の[6.2.2 Microsoft Excelファイルの読み込み]には、以下のような記述があります。

ファイル内の複数のシートを読もうとしているのであれば、最初にExcelFileインスタンスを作成する方が高速でしょう。しかし、1つのシートだけであれば、 pandas.read_excelにファイル名とシート名を与えるだけでも読めます。

[スポンサードリンク]

Home » Python » pandasの使い方 » pandas.read_excel()関数で全シートを読み込む

「pandasの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.