아주 큰 DataFrame일 경우 수동으로 누락된 값을 찾는 것은 매우 번거롭습니다. isnull 메서드는 셀(cell)이 수치 값을 담고 있는지(False) 또는 누락되어 있는지(True)를 나타내는 불리언 값이 채워진 DataFrame을 반환합니다. 다음과 같이 sum 메서드를 사용하면 누락된 값의 개수를 얻을 수 있습니다.1
>>> df.isnull().sum()
A 0
B 0
C 1
D 1
dtype: int64
이런 식으로 열마다 누락된 값의 개수를 헤아릴 수 있습니다. 이어지는 절에서 누락된 값을 다루는 여러 가지 전략을 살펴보겠습니다.
Note ≡ 판다스 데이터프레임을 사용한 간편한 데이터 처리
사이킷런이 넘파이 배열을 다룰 수 있도록 개발되었지만 이따금 판다스의 DataFrame을 사용하여 데이터를 전처리하는 것이 더 편리합니다. 대부분의 사이킷런 함수가 DataFrame 객체 입력을 지원하지만 사이킷런 API에서는 넘파이 배열 처리가 더 성숙하기 때문에 가능하면 넘파이 배열을 사용하는 것이 좋습니다.2 사이킷런의 추정기에 주입하기 전에 DataFrame의 values 속성을 사용하여 언제나 넘파이 배열을 얻을 수 있습니다.
>>> df.values
array([[ 1., 2., 3., 4.],
[ 5., 6., nan, 8.],
[ 10., 11., 12., nan]])
1 역주 판다스에서 데이터프레임의 원소를 종종 셀이라고 부릅니다. isnull 메서드는 셀 값이 None 또는 np.nan(np.NaN)일 경우 True를 반환합니다. 넘파이의 sum 메서드와 마찬가지로 판다스의 sum 메서드는 불리언 값 True를 1로 카운팅합니다. sum 메서드의 axis 매개변수가 기본값 0일 경우 하나의 행으로, 1일 경우 하나의 열로 더해집니다. isnull 메서드의 다른 이름은 isna입니다.
2 역주 3장에서 보았던 load_iris 함수처럼 사이킷런에 내장 데이터셋을 적재하는 함수에 as_frame 매개변수를 True로 지정하면 판다스 데이터프레임으로 반환합니다. 사이킷런 0.24 버전에서는 openml.org에서 데이터를 내려받는 fetch_openml 함수의 as_frame 매개변수 기본값이 False에서 'auto'로 바뀝니다. 'auto'일 경우 데이터가 희소하지 않으면 기본적으로 판다스 데이터프레임이 반환됩니다.