Python Excel操作 逆引き集 | 読み込み時に特定列だけ選ぶ

Python
スポンサーリンク

Pythonで特定列だけ読み込む入門 — usecols=[‘A’,’B’] / usecols=[0,2]

不要な列を読み込まないだけで、処理はぐっと速く、分かりやすくなります。初心者向けに、列指定の考え方と使い方をすっきり整理します。


基本の使い方と考え方

import pandas as pd

# 列名で指定(推奨)
df = pd.read_excel("sample.xlsx", usecols=["Date", "Product", "Revenue"])

# Excelの列記法で指定(A列とB列)
df = pd.read_excel("sample.xlsx", usecols=["A", "B"])

# 列番号で指定(0番と2番の列)
df = pd.read_excel("sample.xlsx", usecols=[0, 2])
Python
  • 列名指定(安全): 列の意味が変わっても壊れにくい。列順が入れ替わっても安心。
  • 列記法指定(手早い): 「A:D」のように範囲指定できて便利。見た目の列位置に強い。
  • 列番号指定(シンプル): header=None で列名が無いときや、列名が不安定な帳票で有効。

よく使うパターン別テンプレート

列名で選ぶ(安定運用)

import pandas as pd

df = pd.read_excel(
    "sales.xlsx",
    usecols=["Date", "Product", "Revenue"],
    parse_dates=["Date"]
)
Python
  • 狙い: 列名が決まっているファイルは、これが一番わかりやすい。

列記法で範囲を選ぶ(A:D、B:G)

import pandas as pd

# A〜D列を読み込み
df = pd.read_excel("report.xlsx", usecols="A:D")

# B〜G列を読み込み(タイトル行を飛ばす例)
df = pd.read_excel("report.xlsx", usecols="B:G", skiprows=5, header=0)
Python
  • 狙い: 見た目の列範囲が決まっている帳票でサクッと指定。

列番号で選ぶ(header=None と相性が良い)

import pandas as pd

# 列名がないので番号で選ぶ(0, 2, 4列)
df = pd.read_excel("no_header.xlsx", header=None, usecols=[0, 2, 4])
df.columns = ["date", "item", "amount"]
Python
  • 狙い: 列名が無い・バラつくデータでも、位置で確実に取得。

列名を付け直しつつ選ぶ

import pandas as pd

df = pd.read_excel("no_header.xlsx", header=None, usecols=[0, 1, 3], names=["date", "product", "revenue"])
Python
  • 狙い: 読み込み時に完成形の列名へ直行しておくと後工程が楽。

使いこなしのコツと注意点

  • 列名での精度:
    コツ: 先に列名の空白や全角半角を整えると指定が通りやすい。
df = pd.read_excel("file.xlsx")
df = df.rename(columns=lambda c: str(c).strip())
Python
  • 日付や数値の型は同時に整える:
    コツ: 列を絞ると型指定もしやすい。
df = pd.read_excel(
    "orders.xlsx",
    usecols=["OrderID", "OrderDate", "Amount"],
    dtype={"OrderID": "string"},
    parse_dates=["OrderDate"]
)
df["Amount"] = pd.to_numeric(df["Amount"], errors="coerce")
Python
  • 混在フォーマットの帳票:
    対策: まず広めに読み、後で列名を正規化してから必要列を選ぶ。
raw = pd.read_excel("report.xlsx")
raw = raw.rename(columns={
    "金額": "Revenue",
    "金額(円)": "Revenue",
    "商品名": "Product",
    "日付": "Date"
})
df = raw[["Date", "Product", "Revenue"]]
Python
  • パフォーマンス最優先:
    コツ: 最初から usecols で絞る。巨大ファイルほど効果が大きい。
  • 列記法の範囲と個別指定の違い:
    覚え方: "A:D" は連続範囲、["A","C","E"] は個別指定。目的に合わせて使い分ける。

実践シナリオ例

シートの説明行を飛ばし、必要列だけで月次集計

import pandas as pd

df = pd.read_excel(
    "monthly.xlsx",
    usecols=["Date", "Revenue"],
    skiprows=6,
    parse_dates=["Date"]
)
monthly = (
    df.assign(month=df["Date"].dt.to_period("M"))
      .groupby("month", as_index=False)["Revenue"].sum()
)
print(monthly)
Python

列記法で読み、列名を英語に統一してから分析

import pandas as pd

df = pd.read_excel("japanese.xlsx", usecols="A:D", skiprows=3, header=0)
df = df.rename(columns={
    "日付": "date",
    "商品名": "product",
    "数量": "qty",
    "金額(円)": "amount_jpy"
})
df["qty"] = pd.to_numeric(df["qty"], errors="coerce")
df["amount_jpy"] = pd.to_numeric(df["amount_jpy"], errors="coerce")
print(df.describe())
Python

列番号で選んでから、コード列は文字列に固定

import pandas as pd

df = pd.read_excel("codes.xlsx", header=None, usecols=[0, 3, 5])
df.columns = ["code", "date", "value"]
df["code"] = df["code"].astype("string")
df["date"] = pd.to_datetime(df["date"], errors="coerce")
df["value"] = pd.to_numeric(df["value"], errors="coerce")
Python

ミニ例題(練習用)

例題1:列名で選ぶ

# 課題: sales.xlsx から Date, Product, Revenue だけ読み込んで先頭10行を表示
import pandas as pd
df = pd.read_excel("sales.xlsx", usecols=["Date", "Product", "Revenue"], parse_dates=["Date"])
print(df.head(10))
Python

例題2:列記法で範囲を選ぶ

# 課題: report.xlsx の B〜G 列を読み、最初の5行を確認
import pandas as pd
df = pd.read_excel("report.xlsx", usecols="B:G")
print(df.head())
Python

例題3:列番号で選ぶ+列名を付ける

# 課題: no_header.xlsx から 0,2 列のみ読み、列名を date, amount にして合計を計算
import pandas as pd
df = pd.read_excel("no_header.xlsx", header=None, usecols=[0, 2], names=["date", "amount"])
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
print("合計:", df["amount"].sum())
Python
タイトルとURLをコピーしました