학습 기록/데이터 처리

[Data] 결측치 처리 방식

hyunzzzzzz 2021. 5. 26. 01:22

1. 결측치 접근 방식

1) 미가공 데이터(raw data) > 바로 결측치 처리

2) 미가공 데이터 > 필요한 feature만 따로 뽑기 > 그 후 결측치 처리

 

2. 결측치 처리 방식

: 데이터에 대한 이해( + 해당 데이터의 도메인에 대한 이해)

& 데이터의 분포 확인 

& 작업의 목적( 구하고자 하는 바가 무엇인가) 고려하여 결측치 처리 방식을 선택해야한다.

 

1) drop (삭제)

- 결측치가 적은 경우

- 결측치가 있는 행 또는 열을 삭제해도 전체 데이터에 영향을 크게 안 미칠 것 같은 경우

- BUT 결측치가 들어있는 데이터(행/열)을 아예 삭제하는 것이므로, 전체 데이터에 영향 끼칠 수 있어 위험

- 따라서 drop할 땐 신중하게 선택

- dropna

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
# 결측값 제거
# axis : 0(행), 1(열)
# how : 'any'(결측값이 하나라도 있으면, 해당 행/열 제거), 'all'(모든 값이 결측값일 때, 해당 행/열 제거)


df.drop([],axis=)
# [] : 삭제할 데이터 프레임의 열 혹은 행
# axis=0 (행), axis=1 (열)
df.drop(index =[]) #삭제하고 싶은 index
df.drop(column=[]) #삭제하고 싶은 column

 

2) 결측값 채우기

※ 데이터의 분포 확인 ※

(1) 평균으로 채우기 : 데이터의 분포가 정규분포를 이루고 있는 경우

(2) 최빈값으로 채우기 : 데이터의 분포가 어느 한 쪽으로 치우친 경우

(3) 0으로 채우기 

(4) -로 채우기

df.fillna(mean) #평균으로 채우기
df.fillna(mod) #최빈값으로 채우기
df.fillna(0) #0으로 채우기
df.fillna('-') #string인 -로 채우기