본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형1] imputer로 결측치 처리하기

by 우공80 2023. 6. 16.
728x90

imputer로 결측치 처리하기

 

결측치를 처리하기 위해 그동안은 fillna()를 주로 사용했습니다. 

그런데, fillna()로 하나씩 처리하지 않고 sklearn에서 제공하는 imputer를 사용하는 방법이 있어 공유합니다.

Imputer에도 여러 가지가 있지만, 여기서는 가장 간단한 SimpleImputer만 확인합니다.
SimpleImputer는 결측치를 지정된 전략에 따라 대체하는 데 사용됩니다. 가장 일반적인 전략은 평균값(mean) 또는 최빈값(most_frequent)을 사용하는 것입니다.

아래는 SimpleImputer를 사용하여 수치형 변수의 결측치를 평균값으로, 범주형 변수의 결측치를 최빈값으로 대체하는 예제입니다.

import pandas as pd
from sklearn.impute import SimpleImputer

# 예시 데이터 (수치형 변수와 범주형 변수를 포함한 2차원 배열)
age=[10,20,30,40,np.nan,50,60,70]
income=[1000,2000,1500,800,np.nan,900,1000,1800]
grade=['A','B','C',np.nan,'A','B','C','A']
sex=[np.nan,'female','male','female','male','female','male','female']


X = pd.DataFrame({'age':age,'grade':grade,'income':income,'sex':sex})

print(X['age'])
# 수치형 변수에 대한 SimpleImputer 생성 및 적용
num_imputer = SimpleImputer(strategy='mean')
X[['age','income']] = num_imputer.fit_transform(X[['age','income']])

# 범주형 변수에 대한 SimpleImputer 생성 및 적용
cat_imputer = SimpleImputer(strategy='most_frequent')
X[['grade','sex']] = cat_imputer.fit_transform(X[['grade','sex']])

#결측치가 대체된 데이터프레임 출력
print(X)

Output: 결측치가 예쁘게 정리되었네요. 

    age grade       income     sex
0  10.0     A  1000.000000  female
1  20.0     B  2000.000000  female
2  30.0     C  1500.000000    male
3  40.0     A   800.000000  female
4  40.0     A  1285.714286    male
5  50.0     B   900.000000  female
6  60.0     C  1000.000000    male
7  70.0     A  1800.000000  female

※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.

https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글