idxmax()와 idxmin()은 행 별/열 별로 최대값/최소값의 인덱스(행 인덱스, 열 인덱스)를 반환하는 메서드다.
idxmax(), idxmin()은 다음 파라미터들을 갖는다.
- axis : 0 / 'index' or 1 / 'columns' (기본값 : 0)
0(행 방향) : 열(column)별 최대(최소)값의 행 인덱스 값 반환
1(열 방향) : 행(row)별 최대(최소)값의 열 인덱스 값 반환
- skipna : True or False (기본값 : True)
True : 결측치는 고려하지 않는다.
False : 결측치가 있으면 해당 행/열의 인덱스 대신 NaN을 출력한다.
- numeric_only :True or False (기본값 : False) =>
int, float형 데이터만 출력할지 다 출력할지 결정하는 파라미터지만, 크게 신경쓰지 않아도 괜찮을 듯.
백문이 불여일견이니, axis와 skipna에 대해 간단한 예시를 통해 알아보자.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 4, np.nan, 2],
'B': [5, np.nan, 8, 7],
'C': [12, 10, 11, 9]
})
# df
A B C
0 1.0 5.0 12
1 4.0 NaN 10
2 NaN 8.0 11
3 2.0 7.0 9
1. axis
print(df.idxmax()) # 열 별 최대값을 갖는 행의 인덱스 값 반환
------------------
A 1
B 2
C 0
dtype: int64
print(df.idxmin()) # 열 별 최소값을 갖는 행의 인덱스 값 반환
------------------
A 0
B 0
C 3
dtype: int64
print(df.idxmax(axis=1)) # 행 별 최대값을 갖는 열의 인덱스 값 반환
------------------------
0 C
1 C
2 C
3 C
dtype: object
print(df.idxmin(axis=1)) # 행 별 최소값을 갖는 열의 인덱스 값 반환
------------------------
0 A
1 A
2 B
3 A
dtype: object
2. skipna
print(df.idxmax()) # NaN값을 고려하지 않고 열 별 최대값을 갖는 행의 인덱스 값 반환
------------------
A 1
B 2
C 0
dtype: int64
print(df.idxmin()) # NaN값을 고려하지 않고 열 별 최소값을 갖는 행의 인덱스 값 반환
------------------
A 0
B 0
C 3
dtype: int64
print(df.idxmax(skipna=False)) # A, B열의 값 중에 결측치가 있어서 NaN 출력.
------------------------------
A NaN
B NaN
C 0.0
dtype: float64
print(df.idxmin(skipna=False)) # A, B열의 값 중에 결측치가 있어서 NaN 출력.
------------------------------
A NaN
B NaN
C 3.0
dtype: float64
** 위 예시의 아래 2개는 왜 dtype이 float이고 열 C의 값이 왜 실수형이 되었을까?
=> 파이썬에서 NaN, 결측치의 데이터 타입이 float이기 때문.
'STUDY > Python' 카테고리의 다른 글
[Pandas] concat()과 merge()의 차이 (0) | 2024.01.16 |
---|---|
[Pandas] describe() (0) | 2024.01.16 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 9. 파이썬 스타일 코드(2) (0) | 2023.08.23 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 8. 파이썬 스타일 코드(1) (0) | 2023.08.22 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 7. 자료구조 (3) | 2023.08.21 |