728x90
결측치를 처리하기 위해 그동안은 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
728x90
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형1] 모듈, 함수 이름과 사용법이 생각나지 않을 때, dir, help, __all__ (0) | 2023.06.18 |
---|---|
[빅데이터분석기사 실기][작업형1] 슬라이싱 (0) | 2023.06.17 |
[빅데이터분석기사 실기][작업형1] pd.melt(), pd.pivot_table()로 데이터 프레임 변형하기 (0) | 2023.06.16 |
[빅데이터분석기사 실기][작업형1] Shift로 데이터 이동하기 (0) | 2023.06.09 |
[빅데이터분석기사 실기][작업형1] iloc와 loc를 이용한 데이터프레임 접근 (0) | 2023.06.06 |
댓글