4.1.2 누락된 값이 있는 훈련 샘플이나 특성 제외
누락된 데이터를 다루는 가장 쉬운 방법 중 하나는 데이터셋에서 해당 훈련 샘플(행)이나 특성(열)을 완전히 삭제하는 것입니다. 누락된 값이 있는 행은 dropna 메서드를 사용하여 쉽게 삭제할 수 있습니다.3
>>> df.dropna(axis=0)
A B C D
0 1.0 2.0 3.0 4.0
비슷하게 axis 매개변수를 1로 지정해서 NaN이 하나라도 있는 열을 삭제할 수 있습니다.
>>> df.dropna(axis=1)
A B
0 1.0 2.0
1 5.0 6.0
2 10.0 11.0
dropna 메서드는 몇 가지 편리한 매개변수를 제공합니다.
# 모든 열이 NaN일 때만 행을 삭제합니다
# (여기서는 모든 값이 NaN인 행이 없기 때문에 전체 배열이 반환됩니다)
>>> df.dropna(how='all')
A B C D
0 1.0 2.0 3.0 4.0
1 5.0 6.0 NaN 8.0
2 10.0 11.0 12.0 NaN
# NaN이 아닌 값이 네 개보다 작은 행을 삭제합니다
>>> df.dropna(thresh=4)
A B C D
0 1.0 2.0 3.0 4.0
# 특정 열에 NaN이 있는 행만 삭제합니다(여기서는 'C'열)4
>>> df.dropna(subset=['C'])
A B C D
0 1.0 2.0 3.0 4.0
2 10.0 11.0 12.0 NaN
누락된 데이터를 제거하는 것이 간단해 보이지만 단점도 있습니다. 예를 들어 너무 많은 데이터를 제거하면 안정된 분석이 불가능할 수 있습니다. 또는 너무 많은 특성 열을 제거하면 분류기가 클래스를 구분하는 데 필요한 중요한 정보를 잃을 위험이 있습니다. 다음 절에서 누락된 값을 다루는 데 아주 널리 사용되는 방법 중 하나인 보간(interpolation) 기법을 살펴보겠습니다.
3 역주 dropna 메서드의 axis 매개변수 기본값이 0입니다. inplace 매개변수를 기본값 False에서 True로 바꾸면 새로운 데이터프레임을 반환하지 않고 주어진 데이터프레임 자체를 바꿉니다.
4 역주 비슷하게 특정 행(예를 들어 인덱스가 2인 행)에 NaN이 있는 열을 삭제하려면 df.dropna(axis=1, subset=[2])처럼 씁니다.