말랑말랑제리스타일

사이킷런 SimpleImputer 사용해서 Nan 값 채우기 본문

프로그래밍/파이썬

사이킷런 SimpleImputer 사용해서 Nan 값 채우기

제리제리 2022. 1. 28. 15:48

데이터 분석을 하다보면 Nan 값 즉, 비어있는 값을 자주 보게 됩니다.

이런 Nan 값을 채우기 위해서 fillna 또는 SimpleImputer를 사용할 수 있는데요.

차이점은 SimpleImputer의 경우 이름처럼 Simple 하기 때문에 fillna보다 자유도가 떨어지는 대신 간단하게 값을 채울 수 있습니다.

예를 들어 SimpleImputer는 groupby 기능을 지원하지 않죠.

SimpleImputer 사용방법

그럼 지금부터 본격적으로 SimpleImputer를 사용해 Nan 값을 채우는 방법을 보여드리겠습니다.

import pandas as pd
from sklearn.impute import SimpleImputer
#사이킷런의 SimpleImputer Import

my_imputer = SimpleImputer()
#imputer 생성
imputed_df = pd.DataFrame(my_imputer.fit_transform(df))
#Nan이 채워진 DataFrame 생성

여타 사이킷런 라이브러리의 객체처럼 변수에 생성자를 입력해서 SimpleImputer 객체를 생성합니다.

그리고 fit_transform(기존 DataFrame) 메서드를 이용해서 빈값을 채운 DataFrame을 다시 만들어줄 수 있습니다.

앞에 사용한 코드에는 SimpleImputer에 파라미터를 넣지 않았는데 이런 경우 디폴트 파라미터가 들어갑니다.

SimpleImputer 파라미터

사이킷런의 SimpleImputer에서는 총 6개의 파라미터가 사용되고 모두 디폴트 파라미터 값이 존재합니다.

  • missing_values : default 값은 np.nan으로 비어있는 값을 채우게 되고 필요시 다른 값을 빈값으로 인식하게 할 수 있습니다.
  • strategy : 채울 값에 대한 함수로 디폴트 파라미터 값은 mean 즉, 산술평균값이 됩니다. 필요시 "median"(중앙값), "most_frequent"(최빈값 : 가장 많이 나온 값), "constant"(따로 지정한 값) 으로 사용할 수 있습니다.
  • fill_value : strategy가 "constant"인 경우 여기에 값을 넣어 동일한 값으로채워줄 수 있습니다.
  • verbose : 디폴트는 0으로 출력하지 않고 1인 경우 자세히 출력, 2인 경우 간단히 출력해줍니다.
  • copy : 디폴트는 True로 True인 경우 복사본을 만들어서 채워주고 False로 지정하면 원 DataFrame에 채워줍니다. 
  • add_indicator : 디폴트는 False로 원래 비어있던 값인지 아닌지를 구분하는 구분자 컬럼을 추가할지 여부입니다.

 

반응형
Comments