python 문법
[데이터 분석][데이터 전처리][결측치]
나눈밍짱이
2023. 2. 28. 20:49
본 글은 https://wooono.tistory.com/103 / https://wikidocs.net/153202 의 내용을 참고하고 정리한 글입니다.
결측치의 종류
- random : 패턴 x
- no random: 패턴 o
결측치 확인하기
- df["col"].isnull() : 결측치 여부 확인
- df["col"].isnull().value_counts() : 결측치 개수 확인
결측치 처리 방법
제거(deletion)
- dropna() : pandas에서 제공하는 결측치 제거 함수
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
axis: {0: index / 1: columns} 결측치 제거를 진행 할 레이블
thresh : 결측값 아닌 값이 몇 개 미만일 경우에만 적용
how: {'any' : 존재하면 제거 / 'all' : 모두 결측치면 제거} 제거할 유형
subset: 레이블 지정
inplace: 원본 변경할지의 여부
대치(imputation)
- 대치 값 종류
: 최빈값 / 평균 / similar case imputation(조건부 대치) / generalized imputation(회귀분석 이용한 대치)
- fillna() : 결측값을 원하는 값으로 변경하는 함수
df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
value: 결측값을 대체할 값
method: {bfill: 결측값을 바로 아래 값으로 / ffill:바로 위 값으로 변경} 결측값을 변경할 방식
axis: {0 : index / 1 : columns} 메서드를 적용할 레이블
inplace: 원본을 변경할지 여부
limit: 결측값을 변경할 횟수, 위에서부터 limit로 지정된 갯수만큼만 변경
dowmcast: 다운캐스트할지 여부, downcast='infer'일 경우 float64를 int64로 변경
결측치 처리 가이드라인
- 10% 미만 > 삭제 or 대치
- 10% ~ 50% > regression or model based imputation
- 50% 이상 > 해당 컬럼 자체 제거