결측값 처리에는 (현재까지 공부한 바로는) 두 가지가 있다.
1. dropna() - 결측값 지우는 메서드
df.dropna()
✔️특징
① 디폴트: 결측값이 1개라도 있는 있는 '행' 제거
- dropna(how="any"): 결측값이 1개라도 포함되어 있는 행 제거
- dropna(how="all"): 행의 모든 값이 결측값인 경우만 행 제거
- dropna(axis=1): 결측값이 1개라도 포함되어 있는 열 제거
- dropna(how="all", axis=1): 열의 모든 값이 결측값인 경우 열 제거
② 데이터 프레임 자체를 결측값 제거한 데이터 프레임으로 바꿔주고 싶을 땐 'inplace=True'
- df.dropna(inplace=True)
2. drop() - 특정 행/열을 지우는 메서드
#특정 행 지우기
df.drop(['column'], axis=0)
#슬라이싱으로 특정 열 지우기
df.drop(df.columns[0:2], axis=1)
#슬라이싱으로 특정 행 지우기
df.drop(df.index[0:5], axis=0)
✔️'.index' 활용해 결측값 처리하기
① 1단계: 데이터 프레임에서 결측치 포함한 행들만 조회
iris_with_nan[iris_with_nan['Sepal Width'].isnull()]
② 2단계: 결측치 포함 행들의 인덱스 값 조회
iris_with_nan[iris_with_nan['Sepal Width'].isnull()].index
③ 3단계: drop()의 drop(index= ) 지정해준 인덱스 값 제거하는 메서드 활용
iris_with_nan.drop(index=iris_with_nan[iris_with_nan['Sepal Width'].isnull()].index)
결측값 처리시(Missing Data)
1. 결측값 제거할 때
- 간단하고 데이터 왜곡이 없다 → 데이터 수가 줄어듬
2. 결측값을 채워넣을 때
- 데이터 수 지킬 수 있음 → 단, 데이터 왜곡이 되지 않도록 신경써서 값을 넣어야 함 (평균, 중앙값, 0)
- 수식을 활용하면 ‘보간법’ → 어렵다, 근거가 있다
- 딥러닝 활용해서 스스로 채워넣게 할수도 있음