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