Pandas pd.read_excel() 関数

Python math 模块Pandas よく使う関数


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, ...)

パラメータの説明

パラメータ型説明デフォルト値
iostr, ExcelFile, path object, file-like objectExcel ファイルのパスまたは ExcelFile オブジェクト必須
sheet_namestr, int, list, None読み取るワークシート名またはインデックス。None はすべてのワークシートを読み取る0
headerint, list of int列名として使用する行番号。0 は最初の行を表す0
nameslist-likeカスタム列名のリストNone
index_colint, str行インデックスとして使用する列None
usecolsint, str, list指定した列のみ読み取るNone
dtypedict列のデータ型を指定するNone
skiprowslist-like, int指定した行をスキップするNone
nrowsint先頭の n 行のみ読み取るNone

戻り値

  • 戻り値の型:pd.DataFrame 或 dict of DataFrames
  • 当 sheet_name単一のワークシートの場合、DataFrame を返します。
  • 当 sheet_nameNone または複数のワークシートを含む場合は、辞書を返します。キーはワークシート名、値は対応する DataFrame です。

サンプル

以下の例を通じて、総合的にマスターしましょうread_excel()のさまざまな使い方を。

例 1:ローカルの Excel ファイルを読み込む

最初に簡単な Excel ファイルを作成して読み込みます。

サンプル

import pandas as pd
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()指定したワークシートや全ワークシートを柔軟に読み取ることができます。

h2 class="example">サンプル
import pandas as pd

# 複数のワークシートを含む 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 ファイルは複雑な形式の場合があり、柔軟な処理が必要です。

サンプル

import pandas as pd

# タイトル行と空行を含む 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 データを効率的に処理でき、その後のデータクレンジングと分析の準備ができます。特に複数ワークシートの読み取りとパラメータ設定を多めに練習することをお勧めします。

Python math 模块Pandas よく使う関数

その他の拡張