min

[python 데이터 전처리][결측치 처리] 본문

python 문법

[python 데이터 전처리][결측치 처리]

나눈밍짱이 2023. 3. 23. 22:16
본 글은 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% 이상 > 해당 컬럼 자체 제거
Comments