파이썬 판다스 max/min 위치 index, row 찾기
파이썬의 데이터프레임 내에서 최대 혹은 최소값을 가지는 행의 위치에 대한 인덱스나
행 전체를 가져오는 방법에 대하여 idxmax, idxmin 함수의 사용법을 토대로
간단하게 정리해보겠습니다.
용이한 설명을 위하여, 아래와 같은 간단한 데이터프레임 df를 예시로 들어보겠습니다.
import pandas as pd
a = {"이름" : ['AAA', 'BBB', 'CCC', 'DDD'], "국어" : [80, 100, 90, 70], "수학" : [100, 90, 100, 80]}
df = pd.DataFrame(a)
df = df.set_index("이름")
df
여기서는 참고로 "이름" 열이 인덱스로 지정되어 있습니다.
데이터프레임 전체 각 컬럼의 최대/최소값 위치 인덱스 찾기
df.idxmax() 형태의 코드로 각 열별로 최대값의 위치 인덱스를 모아서 가져올 수 있습니다.
(df.idxmin()으로 최소값의 위치 인덱스를 가져오는 것도 가능합니다.)
만일, 최대 혹은 최소값이 여러 개인 경우, 더 앞의 위치에 등장하는 인덱스를 반환합니다.
(수학 column에서는 AAA와 CCC가 동점이지만 AAA 인덱스가 반환되었습니다.)
단, 문자열 등 숫자가 아닌 자료형으로 구성된 열이 포함되면 오류가 발생하니 주의가 필요합니다.
(TypeError: reduction operation 'argmax' not allowed for this dtype)
df.idxmax()
# 결과
국어 BBB
수학 AAA
dtype: object
특정 컬럼의 최대/최소값 위치 인덱스 찾기
만일, 특정 열의 최대값 위치 인덱스를 가져오고 싶다면, df[열 이름].idxmax() 형태로
코드를 작성해주시면 됩니다.
idxmin() 함수도 같은 원리 적용이 가능하며, 해당 열이 숫자 자료형이 아니라면
마찬가지로 위에서 언급했던 TypeError가 발생합니다.
df["국어"].idxmax() # BBB
최대/최소값을 가지는 행 전체 가져오기
idxmax 혹은 idxmin 결과로 얻은 인덱스 정보를 loc 함수에 input으로 넣으면
해당 위치의 행 전체를 가져올 수 있습니다.
"국어" 컬럼의 값이 최대인 행을 가져오는 예시는 아래와 같습니다.
df.loc[df["국어"].idxmax()]
# 결과
국어 100
수학 90
Name: BBB, dtype: int64
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 데이터프레임에서 SQL 쿼리로 데이터 가져오기(feat. pandasql 모듈의 sqldf 함수) (0) | 2022.06.19 |
---|---|
[Pandas] 파이썬 데이터프레임 고유값 목록, 개수 확인 : unique, nunique 함수(열 1개, 여러 개) (0) | 2022.06.07 |
[Pandas] 파이썬 데이터프레임 특정 값, 조건 만족 행 개수 세기 (0) | 2022.06.05 |