본문 바로가기

Programming/Machine Learning

결측치 처리하기

EDA 과정에서 수행하기 좋은
결측치 시각화

Seaborn 결측치 시각화

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns  # seaborn은 matplotlib과 세트

# heatmap 결측치 시각화
%matplotlib inline
sns.heatmap(데이터프레임.isnull(), cbar=False)

 

 

 

결측치 처리하기

10% 미만 : 삭제 또는 대치

10 ~ 20% : Hot deck 또는 Regression 또는 Model based imputation

20 ~ 50% : Regression 또는 Model based imputation

50% 이상 : 해당 변수(컬럼) 제거

 

 

1. 제거하기 (Deletion)

랜덤하게 손실되지 않았다면, 대부분의 가장 좋은 방법은 삭제

- 행 삭제(Listwise)

데이터프레임.dropna(axis=0, how='any', inplace=True)
# axis를 입력하지 않아도 default로 행 삭제
# 결측치가 있는 행을 모두 삭제, how='any'

- 열 삭제

데이터프레임.dropna(axis=1, inplace=True)
# axis='column' 가능

- 값이 모두 결측치인 행 삭제(Pairwise)

데이터프레임.dropna(how='all', inplace=True)

- 결측치가 2개 이상인 행 삭제

데이터프레임.dropna(thresh=2, inplace=True)

- 지정한 컬럼에 결측치가 있는 행 삭제

데이터프레임.dropna(subset=['컬럼1', '컬럼2', '컬럼3', '컬럼4'], inplace=Ture)

 

2. 보간하기(Imputation)

- 평균 값 채우기(Popular Averaging Techniques)

- 관련 변수로 예측하기(Predictive Techniques)

- 지정 값으로 채우기

데이터프레임.fillna(값, inplace=True)
# 채우고 싶은 값 작성

- 결측치 바로 이전 값으로 채우기

데이터프레임.fillna(method='pad' inplace=True)

- 결측치 바로 뒤의 값으로 채우기

데이터프레임.fillna(method='bfill' inplace=True)

- np.nan을 찾아 지정값으로 채우기

데이터프레임.replace(to_replace=np.nan, value=값, inplace=True)
# val은 바꿔주고 싶은 값 작성

'Programming > Machine Learning' 카테고리의 다른 글

수치형 데이터, 범주형 데이터 변환  (0) 2020.02.11
데이터프레임 컬럼이름 변경하기  (0) 2020.02.11
특정 value 처리하기  (0) 2020.02.11
데이터프레임 생성  (0) 2020.02.10
데이터 분석 순서  (0) 2020.02.10