오답노트

[Pandas] NaN 처리 본문

Python/Pandas

[Pandas] NaN 처리

권멋져 2022. 8. 9. 19:01

NaN

Not A Number의 약자로

사용할 수 없는 데이터, 빈 값이라고 볼 수 있다.

 

1.1 예제 데이터프레임

 

NaN 확인하기

isnull 메소드와 isna 메소드 둘 다 같은 결과를 출력한다.

예제는 isna로만 살펴보자

 

df.isna()
import pandas as pd

df.isna()

 

2.1 isna 결과

isna 는 데이터 프레임의 형태로 NaN라면 True 아니면 False로 요소를 표현한다.

 

sum

각 시리즈 별로 NaN의 개수를 나타낸다. 집계함수 sum과 같다

df.isna().sum()


'''

Label      0
Serise1    1
Serise2    2
Serise3    2

'''

 

any

각 시리즈별로 NaN이 존재 여부를 나타낸다.

df.isna().any()

'''

Label      False
Serise1     True
Serise2     True
Serise3     True

'''

 

NaN 채우기

fillna

df.fillna(n, method)

fillna 는 NaN 자리에 사용자가 지정한 값을 넣을 수 있다. 

또는 method 옵션을 통해서 NaN 자리에 적당한 값을 넣게 할 수 있다.

 

  • method=ffill : forward fill로 이전 데이터 값을 NaN에 넣는다.
  • method=bfill : back fill로 앞에 데이터 값을 NaN에 넣는다.
df_ffill = df.fillna(method='ffill')

df_bfill = df.fillna(method='bfill')

2.1.1 ffill의 결과(좌)와 bfill의 결과(우)

interpolate

df.interporate()

inerpolate도 method 옵션이 존재하는데 기본값이 linear이다.

linear는 요소의 평균이 되는 값을 NaN 자리에 넣는다.

 

df_itp = df.interpolate()

2.2.1 interpolate linear 옵션 결과

NaN 지우기 (dropna)

df.dropona(axis)

NaN이 존재하는 행 또는 열을 삭제할 수 있다.

하지만 보통 열이 아닌 행을 삭제한다.

 

axis 옵션으로 행 또는 열을 선택할 수 있는데, 기본값은 0으로 행을 삭제한다. 1은 열을 삭제한다.

 

df_dropna1 = df_itp.dropna()

df_dropna2 = df_itp.dropna(axis =1)

 

3.1 행 삭제 결과(좌)와 열 삭제 결과(우)

 

'Python > Pandas' 카테고리의 다른 글

[Pandas] pivot  (0) 2022.08.11
[Pandas] 가변수 (Dummy Variable)  (0) 2022.08.09
[Pandas] 시간 데이터  (0) 2022.08.08
[Pandas] Crosstab (교차표)  (0) 2022.08.08
[Pandas] Rolling 과 Shift  (0) 2022.08.08