본문 바로가기

Python/기초 학습

판다스 결측값 제거하기

결측값 처리에는 (현재까지 공부한 바로는) 두 가지가 있다. 

 

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)
  • 수식을 활용하면 ‘보간법’ → 어렵다, 근거가 있다
  • 딥러닝 활용해서 스스로 채워넣게 할수도 있음