PythonのPandasで最大値・最小値を抽出する方法について

Python,イメージ

AI実装検定のご案内

Pandasで最大値・最小値を抽出する方法はいくつかあります。

ここでは 基本的な使い方 → 列単位の処理 → 行単位の処理 → 条件付きの応用 の順に詳しく解説します。

目次

基本のメソッド

Pandasには max()min() というメソッドがあり、SeriesやDataFrameに対して簡単に利用できます。

Series(1次元データ)の場合

import pandas as pd

s = pd.Series([3, 7, 1, 9, 4])

print(s.max())  # 最大値 → 9
print(s.min())  # 最小値 → 1

DataFrame(2次元データ)の場合

df = pd.DataFrame({
    "A": [3, 7, 1, 9],
    "B": [8, 2, 5, 4]
})

print(df.max())  # 各列の最大値
# A    9
# B    8

print(df.min())  # 各列の最小値
# A    1
# B    2

行・列を指定する方法

axis 引数で「行ごと」か「列ごと」かを指定できます。

  • axis=0(デフォルト) → 列ごとに計算
  • axis=1 → 行ごとに計算
print(df.max(axis=0))  # 列ごとの最大値
print(df.max(axis=1))  # 行ごとの最大値

最大値・最小値の位置を知りたい場合

  • idxmax(): 最大値のインデックスを返す
  • idxmin(): 最小値のインデックスを返す
print(s.idxmax())  # 3 (値9の位置)
print(s.idxmin())  # 2 (値1の位置)

DataFrameの場合

print(df.idxmax())  # 各列の最大値の行インデックス
print(df.idxmin())  # 各列の最小値の行インデックス

最大値・最小値の行そのものを取り出す

loc を組み合わせると、その行全体を取得できます。

max_row = df.loc[df['A'].idxmax()]
min_row = df.loc[df['A'].idxmin()]

print(max_row)
print(min_row)

複数の最大・最小値を抽出(ソート応用)

もし「上位n件」や「下位n件」を抽出したいなら nlargest() / nsmallest() が便利です。

print(df['A'].nlargest(2))   # A列の大きい順 上位2件
print(df['B'].nsmallest(3))  # B列の小さい順 下位3件

条件付きで最大値・最小値を抽出

例えば「B列が5以上のときのA列の最大値」など、条件を絞ることも可能です。

print(df.loc[df['B'] >= 5, 'A'].max())

まとめ

  • 基本: max() / min()
  • インデックス取得: idxmax() / idxmin()
  • 行全体の抽出: loc と組み合わせる
  • 上位/下位n件: nlargest() / nsmallest()
  • 条件付き抽出: loc と組み合わせて柔軟に指定

以上、Pandasで最大値・最小値を抽出する方法についてでした。

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

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