ITや趣味など気軽に投稿しています。

【Pandas】Excelファイルをデータフレームとして読み込む

PandasではExcelファイルをデータフレームとして読み込んだり、データフレームをExcelファイルに出力したりすることができます。

この記事では、pd.read_excel()を使ったExcelファイルの読み込み方法と、よく使う引数の詳細を解説します。

Pandasバージョン

本記事は、Pandas 2.2.3の情報を基に執筆しています。

import pandas as pd
print(pd.__version__)

>>
2.2.3

pd.read_excel()

Excelファイルの読込にはpd.read_excel()を使用します。必須の引数として、読み込むファイルのパスを指定します。相対パス・絶対パスのいずれも使用できます。

pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)

基本的な使い方は以下の通りです。

import pandas as pd

df = pd.read_excel("input/apple_stock.xlsx")
apple_stock.xlsx

引数一覧

引数必須説明
io読み込むファイルのパス
sheet_name読み込むシート名またはシート番号。複数の場合はリストで指定
headerカラムとして利用する行番号。デフォルトは0
namesカラム名を配列で指定する
index_colインデックスとして使用する列を指定する
usecols読み込むカラムを指定する
dtypeデータの型を指定する
engine'openpyxl', 'calamine', 'odf', 'pyxlsb', 'xlrd'のいずれかを指定
converters特定の列に関数処理を実行する
true_valuesTrueとして扱う値を指定
false_valuesFalseとして扱う値を指定
skiprowsスキップする行を指定する
nrows読み込む行数を指定する
na_values欠損値として扱う値を指定する
keep_default_naデフォルトの欠損値リストを使用するか
na_filter欠損値検出を行うか
verbose欠損値の数を表示する
parse_dates日付型に変換する列を指定する
date_parser(非推奨)日付の変換関数。date_formatの使用を推奨
date_format日付の変換フォーマットを指定する
thousands数値の区切り文字を指定する
decimal小数点の文字を指定する
commentコメント文字を指定する
skipfooter末尾からスキップする行数
storage_optionsリモートファイルアクセス情報を指定する
dtype_backendバックエンドのデータタイプを指定する

必須なのは読み込むファイルのパス(io)のみです。以降では、よく使う引数を解説します。

基本引数

sheet_name

読み込むシートを指定します。シート名を文字列で指定するか、0からの番号で指定します。デフォルトは0(先頭シート)です。

df = pd.read_excel("input/apple_stock.xlsx", sheet_name=0)

names

データフレームの列名をリスト形式で指定します。

リストの要素数とデータフレームの列数が一致する場合は、リストの順番通りに列名が割り当てられます。

# リストの要素数とデータフレームの列数が同じ場合
cols = ["Date_renemed", "Open_renemed", "High_renemed", "Low_renemed", "Close_renemed", "Volume_renemed", "Adj_Close_renemed"]
df = pd.read_excel("input/apple_stock.xlsx", names=cols)

cols = ["Date_renemed", "Open_renemed", "High_renemed", "Low_renemed", "Close_renemed", "Volume_renemed", "Adj_Close_renemed"]
df = pd.read_excel("input/apple_stock.xlsx", names=cols)

リストの要素数がデータフレームの列数より少ない場合、余剰列がインデックスとして割り当てられます。基本的にはデータフレームの列数とリストの要素数を合わせることを推奨します。

# リストの要素数がデータフレームの列数より少ない場合
cols = ["Date_renemed", "Open_renemed", "High_renemed", "Low_renemed"]
df = pd.read_excel("input/apple_stock.xlsx", names=cols)

cols = ["Date_renemed", "Open_renemed", "High_renemed", "Low_renemed"]
df = pd.read_excel("input/apple_stock.xlsx", names=cols)

header

ヘッダー行を指定します。header=Noneとすることで、1行目もデータとして扱われるようになります。カラム名には0からの連番が割り当てられます。

df = pd.read_excel("input/apple_stock.xlsx", header=None)
header=None

index_col

インデックスに割り当てる列を指定します。列番号(左端が0)または列名で指定できます。

df = pd.read_excel("input/apple_stock.xlsx", index_col=3)
df = pd.read_excel("input/apple_stock.xlsx", index_col="Open")
index_col=3

usecols

読み込み対象の列を指定します。指定しない場合はすべての列が読み込まれます。列番号の配列または列名の配列で指定します。

注意: 列番号と列名の混合指定はエラーになります。

df = pd.read_excel("input/apple_stock.xlsx", usecols=[0, 1, 4])
df = pd.read_excel("input/apple_stock.xlsx", usecols=["Date", "High", "Close"])

df = pd.read_excel("input/apple_stock.xlsx", usecols=["Date", "High", "Close"])

dtype

読み込む列の型を指定します。データフレーム全体への一括指定か、辞書形式で列ごとに指定します。

注意: 数値型に一括変換する場合、文字列が混在しているとエラーになります。

# データフレーム全体を一括で型指定
df = pd.read_excel("input/apple_stock.xlsx", dtype=object)
df.dtypes

>>
Date         object
High         object
Low          object
Open         object
Close        object
Volume       object
Adj Close    object
dtype: object

列ごとに型を指定する場合は辞書形式を使用します。

# 列ごとに型指定
df = pd.read_excel("input/apple_stock.xlsx", dtype={"Date": str, "Open": float, "High": object, "Low": float, "Close": float})
df.dtypes

>>
Date          object
High          object
Low          float64
Open         float64
Close        float64
Volume       float64
Adj Close    float64
dtype: object

skiprows

読み込みをスキップする行を行番号のリストで指定します。callable関数を使用することも可能です。

df = pd.read_excel("input/apple_stock.xlsx", skiprows=[0,2])
# callable関数:偶数行をスキップ
df = pd.read_excel("input/apple_stock.xlsx", skiprows=lambda x: x % 2 == 0)

まとめ

今回は、pd.read_excel()を使ったExcelファイルの読み込み方法を紹介しました。

  • 基本的な読み込み: pd.read_excel("ファイルパス")でExcelファイルを簡単にデータフレーム化できる
  • シート指定: sheet_nameで読み込むシートを選択可能
  • 列・型の制御: usecolsで対象列を絞り、dtypeで型を指定することで効率的な読み込みが可能
  • 不要行のスキップ: skiprowsでヘッダーやコメント行をスキップできる

読み込む際に不要なデータを除外したり、適切な型を指定したりすることで、後続の分析処理のパフォーマンス向上やデータの整合性確保につながります。