더북(TheBook)

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])처럼 씁니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.