PythonのPandasで要素を抽出する方法について

Python,イメージ

AI実装検定のご案内

Pandasで「要素を抽出する」と言っても、状況によって色々な方法があります。

ここでは代表的な抽出方法を体系的に解説します。

サンプルコードも含めて解説するので、手を動かしながら確認できる内容にしています。

目次

行・列の抽出方法

列を抽出する

import pandas as pd

df = pd.DataFrame({
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
})

# 1列抽出(Seriesとして)
print(df["name"])

# 複数列抽出(DataFrameとして)
print(df[["name", "city"]])
  • df["列名"] → Seriesを返す(1次元)
  • df[["列A", "列B"]] → DataFrameを返す(2次元)

行を抽出する

# 先頭行(インデックス0)
print(df.loc[0])     # インデックスラベル指定
print(df.iloc[0])    # インデックス番号指定

# 複数行
print(df.loc[[0, 2]])   # 0行目と2行目
print(df.iloc[0:2])     # スライス(0〜1行目)
  • loc → ラベルベースの指定(インデックス名で指定)
  • iloc → 数字ベースの指定(位置番号で指定)

条件抽出(フィルタリング)

単一条件

# 年齢が30以上の行を抽出
print(df[df["age"] >= 30])

複数条件

# 論理演算子を使う
print(df[(df["age"] >= 30) & (df["city"] == "Osaka")])
  • &(AND)、|(OR)、~(NOT)を利用

値の部分一致・完全一致

完全一致

print(df[df["city"] == "Tokyo"])

部分一致(文字列検索)

# "o" を含む city
print(df[df["city"].str.contains("o", case=False)])

特定の要素を抽出する

行列を指定して要素を取り出す

# 1行目(インデックス0)の"name"
print(df.loc[0, "name"])   # Alice

# 複数要素
print(df.loc[0:1, ["name", "age"]])

ilocで行番号・列番号を指定

print(df.iloc[0, 1])   # 0行目・1列目 → 25

特殊な抽出

isinで複数値に一致

print(df[df["city"].isin(["Tokyo", "Nagoya"])])

queryでSQLライクに抽出

print(df.query("age >= 30 and city == 'Osaka'"))

nlargest / nsmallest(ランキング抽出)

# 年齢が大きい上位2件
print(df.nlargest(2, "age"))

まとめ

  • 列抽出df["col"], df[["col1", "col2"]]
  • 行抽出df.loc[], df.iloc[]
  • 条件抽出df[df["col"] 条件]
  • 要素抽出df.loc[row, col]
  • 便利関数isin, query, str.contains, nlargest など

以上、Pandasで要素を抽出する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次