참고 티스토리 : https://computer-science-student.tistory.com/306
결측값은 탐색적 데이터 분석에도, 그 후 나아가 머신 러닝 알고리즘을 통해 분석을 할때에도 성능에 영향을 줄 수 있는 값이다. 결측값은 아예 제거해주거나, 특정값으로 채워주거나 크게 2가지에서 선택해주는것이 좋다.
결측값을 확인해보려면 isnull().sum()을 사용하는것이 간편하다
df.isnull()의 결과를 보면 null값이라면 True를 반환, null값이 아니라면 False를 반환한다. df.isnull().sum()은 각 컬럼별 결측치가 몇개 있는지 확인하기 편하다.
만일 특정 컬럼의 값에서 null 값을 가진 행을 추출하려면 아래와 같은 코드를 작성하면 된다.
df[df['컬럼명'].isnull()]
결측값이 있는 행이나, 열을 제거 하기 위해서는 dropna()를 사용하면 된다. dropna 함수의 axis 인자 값으로 0을 넣어주면 null 값이 있는 행이 삭제되고, 1을 넣어주면 null값이 존재하는 열을 삭제한다
- 결측 값이 있는 행 제거 : df.dropna() 혹은 df.dropna(axis=0) << 디폴트 값
- 결측 값이 있는 열 제거: df.dropna(axis = 1)
결측값을 채우기 위해서는 fillna() 메소드를 사용하면 된다. fillna() 안에 특정값을 넣어 그 값으로 채워 줄수도 있지만, method 인자에 ffill 이나 bfill을 넣어 결측값을 결측값 앞의 인자 혹은 뒤의 인자로 대체해서 채우는 방법도 있다
- 결측값을 특정 값으로 채우기 : df.fillna('특정값')
- 결측값을 결측값의 앞 행의 값으로 채우기: df.fillna(method='ffill') 혹은 df.fillna('pad')
- 결측값을 결측값 뒤 행의 값으로 채우기: df.fillna(method='bfill') 혹은 df.fillna('backfill')
- 결측값을 각 열의 평균 값으로 채우기 : df.fillna(df.mean())