파이썬 버전 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 값들을 제외시킨다.
메서드 사용 예 |
본 포스팅에서 다루는 예제는 다음과같이 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 함수가 있다.
'Python > Pandas' 카테고리의 다른 글
이산화를 위한(구간별 나누기) qcut, cut 함수-pandas(40) (0) | 2020.10.17 |
---|---|
중복 요소 수 세기(히스토그래밍) value_counts 메서드-pandas(39) (0) | 2020.10.16 |
데이터 요약을 위한 describe() 메서드-pandas(37) (2) | 2020.10.12 |
pandas에서의 통계함수(메서드)-pandas(36) (0) | 2020.10.11 |
요소별 함수의 적용 applymap(), map() 메서드-pandas(35) (0) | 2020.10.10 |
댓글