본문 바로가기
Programming/Python

[Python] 최대, 최솟값 인덱스 구하기

by 코딩하는 금융인 2023. 12. 22.

안녕하세요.

오늘은 파이썬에서 최대·최솟값의 인덱스를 구하는 방법에 대해 알아보겠습니다.

 

 파이썬 최대·최솟값 인덱스 

▣ 리스트에서 구하기

 - 리스트 객체의 index() 메소드 활용

 - 파이썬의 인덱스는 0번째부터 시작하는 점은 주의해야 하며, 해당 인덱스의 리스트를 불러올 때는 [index_num] 슬라이싱 사용

# 리스트 생성
list_ = [10, 40, 24, 11, 26, 39, 4, 194, 22]

# 최댓값 인덱스 : 7
print(list_.index(max(list_)))

# 최솟값 인덱스 : 6
print(list_.index(min(list_)))

 

▣ 데이터프레임에서 구하기

 - 파이썬 pandas 데이터프레임 객체의 idxmax() & idxmin() 메소드 활용

 - 만일, 최대 혹은 최소값이 여러 개인 경우, 더 앞의 위치에 등장하는 인덱스를 반환함

 - 단, 문자열 등 숫자가 아닌 자료형으로 구성된 열이 포함되면 아래와 같은 오류가 발생함
   (TypeError: reduction operation 'argmax' not allowed for this dtype)

# iris 데이터프레임 생성
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['class'] = iris.target

# 특정 컬럼 최댓/최솟값 행 추출
print(df.loc[df["sepal length (cm)"].idxmax()])
print(df.loc[df["sepal length (cm)"].idxmin()])

# 각 컬럼별 최댓/최솟값 추출
print(df.idxmax(axis=0))
print(df.idxmin(axis=0))

 

-- 특정 컬럼의 최댓/최솟값 행 추출 결과
sepal length (cm) 7.9                                sepal length (cm) 4.3
sepal width (cm) 3.8                                 sepal width (cm) 3.0 
petal length (cm) 6.4                                petal length (cm) 1.1
petal width (cm) 2.0                                 petal width (cm) 0.1
class 2.0 Name: 131, dtype: float64        class 0.0 Name: 13, dtype: float64

-- 각 컬럼별 최댓/최솟값 추출 결과
sepal length (cm) 131                             sepal length (cm) 13
sepal width (cm) 15                                sepal width (cm) 60 
petal length (cm) 118                              petal length (cm) 22
petal width (cm) 100                               petal width (cm) 9
class 100 dtype: int64                             class 0 dtype: int64

 

반응형

댓글