본문 바로가기
머신러닝/EDA

[EDA] 결측치 대체

by 공부랑 독서 기록 2024. 12. 22.

 데이터 셋에 결측치가 있을 때 이를 대처하는 여러 방법이 있다. 이 중에서 결측치를 특정 값으로 대체하는 방법에 대해서 확인한다. 

결측치들은 평균이나 중앙값, 최빈값으로 대체할 수 있다. SimpleImputer를 사용하여 결측치들을 대체한다.

from sklearn.impute import SimpleImputer
import pandas as pd

#평균값으로 대체
imputer = SimpleImputer(strategy = 'mean')
train_imputed = pd.DataFrame(imputer.fit_transform(train), columns=train.columns)
print("\n결측치 개수:\n", train_imputed.isnull().sum())

 

 다음은 strategy에 들어갈 수 있는 값들이다.

대체 값 특징
'mean' 평균값으로 대체한다. 이상치에 민감하기에 데이터 분포를 왜곡시킬 수 있다. 수치형 데이터가 정규분포를 따르는 경우에 사용하기 적절하다.
'median' 중앙값으로 대체한다. 이상치의 영향을 적게 받아 데이터 분포의 왜곡을 줄인다. 이상치가 많을 경우 사용하기 적절하다.
'most_frequent' 최빈값으로 대체한다. 수치형 뿐만 아니라 범주형에도 적용이 가능하다. 결측치가 많고 데이터가 희소한 경우에는 데이터셋을 왜곡할 수 있다. 
'constant' imputer = SimpleImputer(strategy='constant', fill_value=0
상황에 맞는 적절한 값을 입력하여 결측치를 대체할 수 있다. fill_value 매개변수와 같이 사용한다. 
FunctionTransformer 클래스를 선언하여 맞춤형 로직으로 결측치를 대체한다. 상황에 따른 함수를 지정하여 적절한 값으로 대체되게끔 한다. 복잡한 형식이나 패턴을 설정할 경우 적합하다.