본문 바로가기
Python/Pandas

최대/최소값 인덱스(레이블) idxmin, idxmax 메서드-pandas(38)

by 콩돌 2020. 10. 15.
반응형

파이썬 버전 3.8 기준

pandas 버전 1.1.1 기준


 최대/최소값 인덱스(레이블) idxmin, idxmax 메서드


본 포스팅에서는 최대값, 최소값의 인덱스를 찾는 idxmin 및 idxmax 메서드를 다룬다.

  

 최소/최대값의 인덱스


최대값이나 최소값을 가지는 인덱스를 불러오는 방법으로는 아래의 메서드를 활용하면 된다.

  ○ idxmin(): 최소값을 가지는 인덱스 레이블을 출력한다.

  ○ idxmax(): 최대값을 가지는 인덱스 레이블을 출력한다.


아래는 각 매서드의 사용 형식을 보여준다.


메서드 사용 형식)

result=object.idxmin(axis=0, skipna=True)

result=object.idxmax(axis=0, skipna=True)

 

각 입력 객체별 설명은 다음과 같다.

  ○ axis: 함수를 적용할 축을 지정한다.

    ▷ Series에 적용될 경우 이 입력변수 0 or ‘index’만 사용할 수 있다.

    ▷ 0 or ‘index’: 열(columns) 방향으로 최소(최대)값을 탐색하여 출력한다. (행마다 출력)

    ▷ 1 or ‘columns’: 행(row) 방향으로 최소(최대)값을 탐색하여 출력한다. (열마다 출력)

  ○ skipna: 기본값은 True이며, NA/null 값들을 제외시킨다. 

    ▷ False일 경우 NaN이 존재할 때 계산이 불가능하므로 NaN을 출력한다.
 

 

 메서드 사용 예

본 포스팅에서 다루는 예제는 다음과같이 numpy와 pandas를 import하여 수행한다.

 

모듈의 임폴트)

# pandas와 numpy의 import

In[2]: import pandas as pd

In[3]: import numpy as np

 


다음은 메서드의 사용 방법의 예제를 보여준다.

  ○ Series와 DataFrame 모두 같은 방식으로 메서드 적용이 가능하다.

  ○ DataFrame의 경우 최대값의 인덱스

  ○ NaN 값은 skip되어 최대값 최소값의 인덱스를 찾는다.

  ○ skipna 변수를 이용하여 NaN값이 존재할시 스킵하지 않고 NaN을 출력할 수 있도록 설정할 수 있다.

 

메서드 적용 예제)

# 예제용 DataFrame의 정의

In[4]: sample_df= pd.DataFrame([[9.1, 1.2, 1.3, np.nan], [2.1, 9.2, 9.3, 2.4], [np.nan, 3.2, 3.3, 3.4]], index=['a', 'b', 'c'], columns=['A','B','C','D'])


In[5]: sample_df

Out[5]: 

     A    B    C    D

a  9.1  1.2  1.3  NaN

b  2.1  9.2  9.3  2.4

c  NaN  3.2  3.3  3.4


# ex1-1: Series로의 메서드 적용

In[6]: sample_df['B'].idxmin()

Out[6]: 'a'


In[7]: sample_df['B'].idxmax()

Out[7]: 'b'


# ex1-2: DataFrame으로의 메서드 적용 (NaN이 스킵되어 결과 출력)

In[8]: sample_df.idxmin()

Out[8]: 

A    b

B    a

C    a

D    b

dtype: object


In[9]: sample_df.idxmax()

Out[9]: 

A    a

B    b

C    b

D    c

dtype: object


# ex1-3: axis 변수의 사용

In[10]: sample_df.idxmax(axis=1)

Out[10]: 

a    A

b    C

c    D

dtype: object


# ex1-4: skipna 변수의 사용

In[11]: sample_df.idxmax(axis=1, skipna=False)

Out[11]: 

a    NaN

b      C

c    NaN

dtype: object

 

최대값, 최소값이 중복되는 경우 

최소값 혹은 최대값과 매칭되는 다수의 데이터(행 혹은 열)가 있을 경우에는 가장 처음에 매칭되는 위치의 인덱스를 반환한다.

 

최대값, 최소값 중복 예제)

# ex2: 최대값, 최소갑싱 중복되는 경우 

In[12]: sample_se= pd.Series([9.1, 9.1, 1.3, 1.3])


In[13]: sample_se.idxmin()

Out[13]: 2

In[14]: sample_se.idxmax()

Out[14]: 0

 

참고: idxmin과 idxmax와 대응되는 Numpy함수로는 argmin과 argmax 함수가 있다.

 

 

 

 

 

 

 참고자료

  https://pandas.pydata.org/docs/user_guide/basics.html

  https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.idxmin.html

  https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.idxmax.html

 

 

 

 

 

반응형

댓글