Python Excel操作 逆引き集 | 読み込み時に先頭行をスキップする

Python
スポンサーリンク

PythonでExcelの先頭行をスキップする入門 — skiprows=range(n)

Excel帳票には「タイトル」「会社ロゴ」「注意書き」など、データの前に余分な行が入っていることがよくあります。そんなときに便利なのが skiprows。初心者向けに、コード例とテンプレートを交えて解説します。


基本の使い方

import pandas as pd

# 先頭3行をスキップして読み込む
df = pd.read_excel("report.xlsx", skiprows=3)

print(df.head())
Python
  • ポイント:
    • skiprows=3 → 0,1,2行目を飛ばして、4行目から読み込みます。
    • skiprows=range(n) と書くと「0〜n-1行目」をまとめてスキップできます。

skiprows=range(n) の具体例

import pandas as pd

# 先頭5行を飛ばす(0〜4行目)
df = pd.read_excel("report.xlsx", skiprows=range(5))

print(df.head())
Python
  • イメージ:
    Excelの1〜5行目がタイトルや説明 → 6行目からが本当のデータ、という帳票にぴったり。

よくあるパターン別テンプレート

1. タイトル行を飛ばして列名を使う

df = pd.read_excel("monthly.xlsx", skiprows=5, header=0)
Python
  • 先頭5行を飛ばし、6行目を列名として使う。

2. 列名がない場合は自分で付ける

df = pd.read_excel(
    "no_header.xlsx",
    skiprows=3,
    header=None,
    names=["date", "item", "qty", "price"]
)
Python
  • 先頭3行を飛ばし、4行目からデータ。列名は自分で指定。

3. 範囲指定+列選択を組み合わせる

df = pd.read_excel(
    "report.xlsx",
    skiprows=range(7),   # 先頭7行を飛ばす
    usecols="B:F",       # B〜F列だけ読む
    header=0
)
Python
  • 帳票の「表部分」だけをすっきり取り込める。

読み込み後の整形ワザ

  • 列名の空白除去:
df = df.rename(columns=lambda c: str(c).strip())
Python
  • 数値変換:
df["qty"] = pd.to_numeric(df["qty"], errors="coerce")
df["price"] = pd.to_numeric(df["price"], errors="coerce")
Python
  • 日付変換:
df["date"] = pd.to_datetime(df["date"], errors="coerce")
Python

つまずきやすいポイント

  • skiprowsとheaderの組み合わせ:
    • skiprows で飛ばした後の行が「列名行」になる。
    • 列名がない場合は header=Nonenames=[...] をセットで。
  • 飛ばしすぎてデータが消える:
    • skiprows=range(n) の n を大きくしすぎると、必要な行まで飛ばしてしまう。
    • まずは小さめで試して、head() で確認。

ミニ例題(練習用)

例題1:説明行を飛ばして列名を使う

  • 課題: sales.xlsx の先頭4行は説明。5行目から列名。
import pandas as pd
df = pd.read_excel("sales.xlsx", skiprows=4, header=0)
print(df.head())
Python

例題2:列名なしデータで先頭行を飛ばす

  • 課題: report.xlsx の先頭2行は不要。3行目からデータ。列は「date, item, qty, price」。
import pandas as pd
df = pd.read_excel("report.xlsx", skiprows=2, header=None, names=["date","item","qty","price"])
print(df.info())
Python

例題3:範囲指定でまとめて飛ばす

  • 課題: orders.xlsx の先頭10行はタイトルや注記。11行目からデータ。
import pandas as pd
df = pd.read_excel("orders.xlsx", skiprows=range(10), header=0)
print(df.head())
Python

まとめ

  • 先頭行を飛ばす → skiprows
  • まとめて飛ばす → skiprows=range(n)
  • 列名行を指定 → header=0 or header=None + names=[...]
  • 不要な説明やタイトルを避けて、データ部分だけを読み込むのがコツ
タイトルとURLをコピーしました