Pandas pd.read_excel() 関数
read_excel()は pandas ライブラリで Excel ファイルを読み込むための関数であり、読み取りに対応しています.xlsxと.xls形式の Excel ファイル。
Excel は企業のデータ分析で最もよく使われるファイル形式であり、複数のワークシート、豊富なセル形式、数式などをサポートしています。read_excel()Excel ファイル内のデータを読み取り、pandas の DataFrame 形式に変換して、その後のデータ処理や分析を容易にします。
基本構文とパラメータ
構文形式
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, dtype=None, skiprows=None, nrows=None,
na_values=None, ...)
パラメータの説明
| パラメータ | 型 | 説明 | デフォルト値 |
|---|---|---|---|
| io | str, ExcelFile, path object, file-like object | Excel ファイルのパスまたは ExcelFile オブジェクト | 必須 |
| sheet_name | str, int, list, None | 読み取るワークシート名またはインデックス。None はすべてのワークシートを読み取る | 0 |
| header | int, list of int | 列名として使用する行番号。0 は最初の行を表す | 0 |
| names | list-like | カスタム列名のリスト | None |
| index_col | int, str | 行インデックスとして使用する列 | None |
| usecols | int, str, list | 指定した列のみ読み取る | None |
| dtype | dict | 列のデータ型を指定する | None |
| skiprows | list-like, int | 指定した行をスキップする | None |
| nrows | int | 先頭の n 行のみ読み取る | None |
戻り値
- 戻り値の型:
pd.DataFrame或dictof DataFrames - 当
sheet_name単一のワークシートの場合、DataFrame を返します。 - 当
sheet_nameNone または複数のワークシートを含む場合は、辞書を返します。キーはワークシート名、値は対応する DataFrame です。
サンプル
以下の例を通じて、総合的にマスターしましょうread_excel()のさまざまな使い方を。
例 1:ローカルの Excel ファイルを読み込む
最初に簡単な Excel ファイルを作成して読み込みます。
サンプル
import openpyxl # インストールが必要: pip install openpyxl
# DataFrame を作成する
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df_original = pd.DataFrame(data)
# DataFrame を Excel ファイルに書き込む
# Excel ファイルのパス: employees.xlsx
df_original.to_excel('employees.xlsx', index=False, engine='openpyxl')
# read_excel を使用して Excel ファイルを読み込む
# io: ファイルパス(必須)
df = pd.read_excel('employees.xlsx')
# 読み込み結果を確認する
print("読み込んだ DataFrame:")
print(df)
print("nデータ型:")
print(df.dtypes)
実行結果の想定:
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
コードの解説:
pd.read_excel('employees.xlsx')は最も基本的な使い方で、ファイルパスを直接渡すだけでOKです。- デフォルトでは、最初のワークシート(sheet_name=0)を読み取り、最初の行を列名とします。
- インストールが必要です
openpyxlライブラリで .xlsx 形式の読み書きをサポートします。
例 2:複数のワークシートを読み込む
Excel ファイルには複数のワークシートを含めることができ、read_excel()指定したワークシートや全ワークシートを柔軟に読み取ることができます。
# 複数のワークシートを含む Excel ファイルを作成する
# まず2つの DataFrame を作成する
df_sales = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'quantity': [100, 200, 150, 80],
'price': [50, 30, 40, 60]
})
df_inventory = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'stock': [500, 300, 400, 200],
'warehouse': ['WH1', 'WH2', 'WH1', 'WH3']
})
# 複数のワークシートを1つの Excel ファイルに書き込む
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df_sales.to_excel(writer, sheet_name='Sales', index=False)
df_inventory.to_excel(writer, sheet_name='Inventory', index=False)
# 例 2a: 指定したワークシートを読み込む(名前で指定)
df_sales_read = pd.read_excel('multi_sheet.xlsx', sheet_name='Sales')
print("Sales ワークシートを読み込む:")
print(df_sales_read)
print()
# 例 2b: 指定したワークシートを読み込む(インデックスで指定)
df_inv_read = pd.read_excel('multi_sheet.xlsx', sheet_name=1)
print("2番目のワークシートを読み込む (インデックスは1):")
print(df_inv_read)
print()
# 例 2c: すべてのワークシートを読み込む(辞書を返す)
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("すべてのワークシート名:", list(all_sheets.keys()))
print("nすべてのワークシートを反復処理:")
for sheet_name, df_sheet in all_sheets.items():
print(f"n--- {sheet_name} ---")
print(df_sheet)
実行結果の想定:
读取 Sales 工作表: product quantity price 0 A 100 50 1 B 200 30 2 C 150 40 3 D 80 60 读取第2个工作表 (索引为1): product stock warehouse 0 A 500 WH1 1 B 300 WA2 2 C 400 WH1 3 D 200 WH3 所有工作表名称: ['Sales', 'Inventory'] 遍历所有工作表: --- Sales --- product quantity price ... --- Inventory --- product stock warehouse ...
コードの解説:
sheet_nameパラメータはワークシート名(文字列)またはインデックス(整数)を受け取ることができます。- 設定すると、
sheet_name=Noneすべてのワークシートが読み込まれ、キーがワークシート名、値が DataFrame の辞書が返されます。 - 使用すると、
pd.ExcelWriter複数のワークシートを簡単に書き込むことができます。
例 3:上級の使い方 - 列のカスタマイズと行のスキップ
実際の業務では、Excel ファイルは複雑な形式の場合があり、柔軟な処理が必要です。
サンプル
# タイトル行と空行を含む Excel ファイルを作成する
# 最初の数行はメタデータで、実際のデータは4行目から始まる
data_with_header = """会社の従業員データ
作成日: 2024-01-01
部門: 技術部
---
name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
"""
# まず CSV を作成し、Excel に変換する(実際のシナリオを模擬)
import io
df_temp = pd.read_csv(io.StringIO(data_with_header.split('---')[1]))
df_temp.to_excel('complex_format.xlsx', index=False, engine='openpyxl')
# 例 3a: 最初の数行をスキップし、N行目を列名として使用する
df_skip = pd.read_excel('complex_format.xlsx', header=3)
print("最初の3行をスキップし、4行目を列名として使用:")
print(df_skip)
print()
# 例 3b: 指定した列のみを読み込む
df_cols = pd.read_excel('complex_format.xlsx', usecols=['name', 'salary'])
print("name と salary 列のみ読み込む:")
print(df_cols)
print()
# 例 3c: 最初の数行のみを読み込む
df_head = pd.read_excel('complex_format.xlsx', nrows=2)
print("最初の2行のみ読み込む:")
print(df_head)
print()
# 例 3d: 列名をカスタマイズする
df_custom_names = pd.read_excel('complex_format.xlsx',
names=['氏名', '年齢', '都市', '給与'],
header=0)
print("カスタム列名:")
print(df_custom_names)
実行結果の想定:
跳过前3行,使用第4行作为列名:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
只读取 name 和 salary 列:
name salary
0 Tom 8000
1 Jerry 12000
只读取前2行:
name age city salary
0 Tom 28 Beijing 8000
自定义列名:
姓名 年龄 城市 薪资
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
コードの解説:
headerパラメータは、何行目を列名として使用するかを指定します(0から数えます)。usecols読み取る列を指定でき、列名のリストまたは列インデックスをサポートします。nrows読み込む行数を制限し、大きなファイルの部分読み込みに適しています。namesパラメータは列名をカスタマイズでき、元のファイルの列名を上書きします。
注意事項
- .xlsx 形式の読み取りにはインストールが必要です
openpyxl:pip install openpyxl。 - .xls 形式の読み取りにはインストールが必要です
xlrd:pip install xlrd(注意:xlrd 2.0+ バージョンは .xls ファイルをサポートしなくなりました)。 - Excel ファイルには行数と列数の制限があり(最大 1048576 行、16384 列)、制限を超えるとデータが失われる可能性があります。
- 大きなファイルを読み取る場合は、次を使用することを検討できます
usecolsパラメータは必要な列のみを読み取り、パフォーマンスを向上させます。 sheet_nameパラメータは名前とインデックスの混在をサポートします。
まとめ
read_excel()は pandas で Excel ファイルを読み込むための中心的な関数であり、非常に強力です。単一または複数のワークシートの読み取りをサポートし、さまざまな形式の Excel ファイルを柔軟に処理できます。
実際のデータ分析業務では、Excel ファイルは最も一般的なデータソースの一つです。しっかりと習得しましょうread_excel()のさまざまなパラメータの使い方をマスターすれば、さまざまな Excel データを効率的に処理でき、その後のデータクレンジングと分析の準備ができます。特に複数ワークシートの読み取りとパラメータ設定を多めに練習することをお勧めします。
Pandas よく使う関数