pandasを使ってExcelを読み込む

pandasで.xlsx形式のExcelファイルを読み込む場合は、openpyxlを利用します。以前はxlrdを使う例も多くありましたが、現在のxlrdが対応しているのは旧形式の.xlsです。

この記事では、1シートだけを読み込む方法と、複数のExcelファイルに含まれる全シートを読み込む方法を紹介します。

公式仕様確認日:2026年8月1日

目次

  1. pandasとopenpyxlをインストールする
  2. Excelファイルを読み込む
  3. 読み込み時によく使う引数
  4. まとめ

1. pandasとopenpyxlをインストールする

.xlsxを読み込むため、pandasopenpyxlをインストールします。

python -m pip install pandas openpyxl

古い.xlsファイルを扱う場合はxlrdが選択肢になりますが、.xlsxの読み込みには使用できません。

2. Excelファイルを読み込む

最初のシートだけをDataFrameとして読み込む場合は、pandas.read_excelを使います。

import pandas as pd

df = pd.read_excel("book1.xlsx", engine="openpyxl")
print(df.head())

シート名を指定する場合は、sheet_nameを設定します。

df = pd.read_excel(
    "book1.xlsx",
    sheet_name="Sheet1",
    engine="openpyxl",
)

複数ファイルの全シートを読み込む

sheet_name=Noneを指定すると、シート名をキー、DataFrameを値とする辞書が返ります。複数ファイルの全シートを読み込む場合は、次のように処理できます。

import pandas as pd

books = ["book1.xlsx", "book2.xlsx"]
dataframes = []

for book in books:
    sheets = pd.read_excel(
        book,
        sheet_name=None,
        engine="openpyxl",
    )
    for sheet_name, dataframe in sheets.items():
        dataframes.append(
            {
                "book": book,
                "sheet": sheet_name,
                "data": dataframe,
            }
        )

ファイル名とシート名も一緒に保持しておくと、後から各DataFrameの読み込み元を確認できます。

3. 読み込み時によく使う引数

pandas.read_excelでは、用途に応じて次のような引数を指定できます。

  • sheet_name: 読み込むシート名や位置を指定する。Noneなら全シートを読み込む
  • skiprows: 先頭から読み飛ばす行数、または読み飛ばす行を指定する
  • header: 列名として使う行を指定する。列名のないデータはNoneを指定する
  • usecols: 読み込む列をExcelの列記号や列名などで限定する
  • dtype: 列ごとのデータ型を指定する

例えば、先頭2行を読み飛ばし、A列からE列だけを読み込む場合は次のように書けます。

df = pd.read_excel(
    "book1.xlsx",
    skiprows=2,
    usecols="A:E",
    engine="openpyxl",
)

4. まとめ

.xlsx形式のExcelファイルは、pandasopenpyxlを組み合わせて読み込みます。1シートだけならpandas.read_excelをそのまま使い、全シートが必要な場合はsheet_name=Noneを指定すると簡潔に処理できます。

詳細な引数や対応形式は、pandas.read_excelの公式ドキュメントpandas.ExcelFileの公式ドキュメントで確認できます。

読み込んだ後の操作については、pandas.DataFrameで複数行・列を一括で削除するpandas.DataFrameで置換処理を参照してください。