0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】Pandasで行・列・値にアクセス・抽出する方法まとめ

0
Last updated at Posted at 2025-07-27

Pandasでデータを扱っていると、「行を取り出したい」「列だけを取り出したい」「特定の値だけ見たい」など、いろいろな操作が必要になります。

Pandasの「行・列・値のアクセス」と「条件による抽出方法」について、学習の記録としてまとめておこうと思います。

✅ 使用するデータフレーム

import pandas as pd

df = pd.DataFrame({
    "都市名": ["東京", "ニューヨーク", "上海", "ローマ", "パリ", "モスクワ", "サンパウロ", "ロンドン"],
    "面積(km2)": [2190, 783.8, 6340.5, 1285, 105.4, 2561, 1521, 1572],
    "人口_万人": [1396, 841, 2487, 287, 216, 1250, 1230, 898]
})

print(df)

出力例:

       都市名  面積(km2)  人口_万人
0       東京   2190.0   1396
1  ニューヨーク    783.8    841
2       上海   6340.5   2487
3       ローマ   1285.0    287
4        パリ    105.4    216
5     モスクワ   2561.0   1250
6   サンパウロ   1521.0   1230
7     ロンドン   1572.0    898

✅ アクセスと抽出の違いは?

区分 目的 結果
アクセス 明示的に場所を指定して取り出す df.loc[2], df["都市名"] 行や列、または値を取得
抽出 条件によって選び出す df[df["人口_万人"] > 1000], df.query("面積(km2) > 2000") 条件に一致する行を返す

実際には混同されることもありますが、「アクセス=場所指定」「抽出=条件で選ぶ」と理解すると整理しやすいです。

✅ 1. 列へのアクセス

▶ 単一列を取得

df["都市名"]

▶ 複数列を取得

df[["都市名", "人口_万人"]]

▶ ドット記法(簡易表記)

df.都市名

※ ドット記法は、列名にスペースや記号が含まれるとエラーになるので注意です。

✅ 2. 行へのアクセス

loc:ラベルで指定

df.loc[2]
都市名        上海
面積(km2)  6340.5
人口_万人     2487
Name: 2, dtype: object

複数行を取得:

df.loc[[2, 4, 6]]

iloc:番号で指定

df.iloc[2]

複数行を取得:

df.iloc[[2, 4, 6]]

✅ 3. 値(単一要素)へのアクセス

loc を使って(行ラベル × 列ラベル)

df.loc[2, "都市名"]     # "上海"

iloc を使って(行番号 × 列番号)

df.iloc[2, 0]           # "上海"

✅ 4. 高速アクセス(at, iat

atlocと同じだが高速(1要素用)

df.at[2, "都市名"]

iatilocと同じだが高速(1要素用)

df.iat[2, 0]

✅ 5. 条件による行の抽出(ブールインデックス)

▶ 等しい値で抽出

df[df["都市名"] == "東京"]

▶ 複数値で抽出(isin

df[df["都市名"].isin(["東京", "パリ"])]

▶ 数値条件で抽出

df[df["人口_万人"] > 1000]

🔍 df[df["列名"] == 値] の考え方

この書き方は、内部で「条件式」をブール配列にして使っているだけです。

条件 = df["都市名"] == "東京"
df[条件]

このように「まず条件式 → それを使って抽出」と分けて考えるとわかりやすいと感じました。

✅ 6. query() を使った抽出

df.query("人口_万人 > 1000")
df.query("都市名 == '東京'")

※ 列名にスペースや記号が含まれる場合は `列名` のようにバッククォートで囲う必要があります。

✅ 7. インデックスを使った抽出

▶ インデックスが一致する行を抽出

df[df.index == 2]

▶ 複数インデックスで抽出(isin

df[df.index.isin([1, 3, 5])]

✅ 8. 上下から抽出

df.head(3)   # 先頭から3行
df.tail(2)   # 最後から2行

✅ 9. ランダムに抽出

df.sample(1)

✅ アクセス・抽出方法まとめ表

操作 方法 戻り値 説明
列アクセス df["列名"] / df[["列1", "列2"]] Series / DataFrame 列を指定して取り出す
行アクセス df.loc[行ラベル] / df.iloc[行番号] Series 行を取り出す
値アクセス df.loc[行, 列] / df.iloc[行, 列] 単一値 行列を指定して値を取得
高速アクセス df.at[行, 列] / df.iat[行, 列] 単一値 少し高速な要素取得
条件抽出 df[条件] / df.query("条件") DataFrame 条件に一致する行を抽出
インデックス条件 df[df.index == 値] / isin() DataFrame インデックスでの抽出
ランダム抽出 df.sample(n) DataFrame ランダムに n 行抽出
上下抽出 df.head(n) / df.tail(n) DataFrame 上 or 下から n 行取得

✅ おわりに

Pandasには行・列・値を取り出すためのさまざまな方法がありますが、
「何を取り出したいのか?」「それは場所なのか? 条件なのか?」を意識することで、使い分けがしやすくなると感じました。

まずは基本的なアクセス方法(df[...], loc, iloc)を押さえた上で、
条件式や query() などの抽出方法に慣れていくのがよさそうです。

今回まとめた内容を定期的に見返しながら、Pandasの操作に自信をつけていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?