[서울 ICT 데이터 중급(분석) 과정]
데이터 분석을 하면서 가장 중요하고 많은 시간이 들어가는 과정은 데이터 전처리 과정이다.
전처리 방법에는 여러 방법이 있는데, 이번 포스트에서는 결측치 처리에 대해 살펴보겠습니다.
결측치 처리
결측치란 데이터 내에 비어있는 값을 말한다.
결측치를 처리하기에 앞서 결측치가 있는지를 확인해야 한다.
df.isnull().sum() # 결측치 수만 확인
df.loc[df['col_name'].isnull(),:] # 결측치 포함 데이터 보기
만약 결측치가 있다면,
1) 결측치가 있는 행 또는 열을 제거할 수도 있고,
2) 결측치를 어떠한 값으로 채울 수도 있다.
제거할지, 채울지는 결측치의 수와 기초 통계 등을 확인한 뒤 분석자 재량으로 선택한다.
결측치 제거
결측치 수가 많다면 컬럼 전체를 삭제하고,
결측치가 많지 않다면 결측치가 포함된 행만 삭제한다.
###### 컬럼 제거 ##################################
df_drop = df.drop('col_name',axis=1)
###### 행 제거 ##################################
# 모든 컬럼이 결측값인 행 제거
df_drop = df.dropna(how='all')
# 세개 이상의 컬럼이 결측값인 행 제거
df_drop = df.dropna(thresh=3)
# 특정 컬럼(temp)이 결측값인 행 제거
df_drop = df.dropna(subset=['col_name'])
# 한 컬럼이라도 결측치가 있는 행 제거
df_drop = df.dropna(how='any')
# 한 컬럼이라도 결측치가 있는 행 제거
df_drop = df.dropna()
결측치 채우기
결측치가 있을 때, 평균값, 중앙값, 최빈값, 최댓값, 최솟값 등의 어떠한 값으로 채울 수 있다.
데이터를 잘 설명할 것 같은 대푯값으로 채운다.
# 특정값(0)으로 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':0})
# 평균값 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':df['col_name'].mean()})
# 중앙값 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':df['col_name'].median()})
# 최빈값 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':df['col_name'].mode()})
# 최댓값 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':df['col_name'].max()})
# 최솟값 대치 - 컬럼 지정
df_fill = df.fillna({'col_name':df['col_name'].min()})
# 여러 방법으로 대치 - 컬럼 지정
df_min_slt = df.fillna({'col_name1':df['col_name1'].min(),'col_name2':df['col_name2'].mode()})
'Study' 카테고리의 다른 글
파이썬) 파일과 폴더 다루기(2) (0) | 2024.03.12 |
---|---|
파이썬) 파일과 폴더 다루기(1) (0) | 2024.02.24 |
파이썬) 예외 처리 (0) | 2024.02.24 |
데이터 전처리 - 스케일링 (0) | 2024.02.24 |
광학문자판독기 : OCR (0) | 2024.02.08 |