PandasではExcelファイルをデータフレームとして読み込んだり、データフレームをExcelファイルに出力したりすることができます。
この記事では、pd.read_excel()を使ったExcelファイルの読み込み方法と、よく使う引数の詳細を解説します。
Pandasバージョン
本記事は、Pandas 2.2.3の情報を基に執筆しています。
import pandas as pd
print(pd.__version__)
>>
2.2.3pd.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")
引数一覧
| 引数 | 必須 | 説明 |
|---|---|---|
| io | ○ | 読み込むファイルのパス |
| sheet_name | 読み込むシート名またはシート番号。複数の場合はリストで指定 | |
| header | カラムとして利用する行番号。デフォルトは0 | |
| names | カラム名を配列で指定する | |
| index_col | インデックスとして使用する列を指定する | |
| usecols | 読み込むカラムを指定する | |
| dtype | データの型を指定する | |
| engine | 'openpyxl', 'calamine', 'odf', 'pyxlsb', 'xlrd'のいずれかを指定 | |
| converters | 特定の列に関数処理を実行する | |
| true_values | Trueとして扱う値を指定 | |
| false_values | Falseとして扱う値を指定 | |
| 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)](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
リストの要素数がデータフレームの列数より少ない場合、余剰列がインデックスとして割り当てられます。基本的にはデータフレームの列数とリストの要素数を合わせることを推奨します。
# リストの要素数がデータフレームの列数より少ない場合
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)](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
header
ヘッダー行を指定します。header=Noneとすることで、1行目もデータとして扱われるようになります。カラム名には0からの連番が割り当てられます。
df = pd.read_excel("input/apple_stock.xlsx", 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")
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"])](https://nao-util-blog.com/wp-content/themes/the-thor/img/dummy.gif)
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: objectskiprows
読み込みをスキップする行を行番号のリストで指定します。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でヘッダーやコメント行をスキップできる
読み込む際に不要なデータを除外したり、適切な型を指定したりすることで、後続の分析処理のパフォーマンス向上やデータの整合性確保につながります。