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 |