【pandas中級編②】列の追加・削除・名前変更・順序変更まとめ

はじめに

pandasを使ったデータ処理では、「列の操作」がとても重要です。
機械学習や統計処理に進む前に、データを“整える”作業=前処理が必要になりますが、その多くが「列の追加・削除・並べ替え・名前変更」といった作業です。

たとえば:

  • 余分な列を削除して、分析対象だけを残す
  • 計算や条件に基づいて「評価」「合格/不合格」などの新しい列を追加
  • 意味の分かりにくい列名を日本語に直す
  • レポート用に列の順序を入れ替える

このような処理はpandasで非常に簡単にできますが、ミスを防ぐためには使い方をしっかり理解しておくことが大切です。

以下は今回使用するデータです。

名前年齢点数
太郎20.088
花子21.092
次郎19.095
さくら22.070
83

1. 列を追加する:評価・条件列・計算列など

▶ 定数またはリストを使って追加

df["評価"] = ["A", "B", "S", "C", "B"]
  • 各行に対応する値をリストで渡すことで、新しい列を作成できます。
  • リストの長さがデータと合っていないとエラーになるので注意しましょう。

📌 活用例:

  • テスト結果に応じて「S/A/B/C評価」をつける
  • アンケートの回答傾向に応じて「グループ」を振る

▶ 条件に基づいて真偽値を持つ列を追加

df["合格"] = df["点数"] >= 80
  • 点数が80点以上かどうかでTrue / False のブール値列が追加されます。
  • 機械学習の「目的変数(ラベル)」を作るときにも使われる方法です。

▶ np.where() で2パターン分岐の列を作成

import numpy as np
df["評価"] = np.where(df["点数"] >= 90, "S", "A")
  • 点数が90以上なら「S」、それ以外は「A」というふうにif文のような処理が可能です。
  • 条件に応じて、カテゴリを割り振りたいときに非常に便利です。

2. 列を削除する:不要列の除去

▶ 単一の列を削除

df = df.drop("年齢", axis=1)
  • axis=1 は「列方向」を意味します。axis=0 は行方向。
  • drop()元のdfを変更しないため、df = ... で代入する必要があります。

▶ 複数列を同時に削除

df = df.drop(["年齢", "評価"], axis=1)
  • リスト形式で複数列を指定可能です。

▶ inplace=True で元のdfを直接変更

df.drop("年齢", axis=1, inplace=True)
  • inplace=True にすると、元のDataFrameが即時に変更され、戻り値は None になります。

3. 列名を変更する:読みやすく、わかりやすく

▶ 指定した列だけ名前を変える

df = df.rename(columns={"名前": "氏名"})
  • 辞書形式({“旧列名”: “新列名”})で渡す
  • 一部の列だけをリネームしたいときに使います

▶ 複数の列を一括でリネーム

df = df.rename(columns={
"名前": "氏名",
"点数": "スコア",
"年齢": "Age"
})
  • 列名が英語や略称でわかりづらいとき、読みやすく意味のある名前にすることがデータ可読性を大きく高めます。

▶ 全列を一括変更する場合

df.columns = ["氏名", "年齢", "スコア"]
  • 列数が少ないときや、最初から全ての名前を入れ替えたいときに便利です。

4. 列の順序を入れ替える:レポート・可視化前に整理

▶ 明示的に順序を指定して再配置

df = df[["名前", "点数", "年齢"]]
  • 順序を決めたリストをそのまま再指定するだけで、並び順を自由にコントロールできます。

▶ 特定の列を一番前に移動するテクニック

cols = list(df.columns)
cols.remove("点数")
df = df[["点数"] + cols]
  • 一番注目させたい列(例えば点数)を先頭に持ってくることで、表が見やすくなる効果があります。

5. 列の存在確認・一覧取得

▶ 列名一覧を取得

df.columns
  • すべての列名が Index オブジェクトで返されます。

▶ 特定の列が存在するかを確認

"点数" in df.columns
  • 条件処理を書く際に、エラーを防ぐために便利なテクニックです。

💡 エラー対策:よくあるトラブル

エラー内容原因・対策例
KeyError: '列名'存在しない列名を指定した。スペルミスに注意
ValueError: Length mismatch列の追加時に、リストの長さがdfの行数と一致していない
SettingWithCopyWarningコピー元を編集しようとしたときのpandas特有の警告。locを使って明示するのが安全です

📝 実務での使いどころまとめ

目的操作方法
不要な列を削除drop()分析不要なID列などを除外
条件で評価をつけるnp.where()スコアが高い人だけ「S」評価
出力順を整える列順リストで再構成「スコア→名前→年齢」の順に並べ替え
列名を整理rename()columns = [...]英語名から日本語名へ変換

✅ まとめ

  • 追加df["新列"] = 値 または np.where() で条件列作成
  • 削除drop("列名", axis=1)
  • 名前変更rename(columns={}) または df.columns = [...]
  • 順序変更df[["列1", "列2", "列3"]] で再構成

これらの操作は、機械学習・可視化・レポート出力前に欠かせない前処理の基本です。
慣れておくことで、データ整形の柔軟さとスピードが格段に向上します!

🧭 参考リンク・シリーズナビ

コメント

タイトルとURLをコピーしました