
결측 데이터(= 결측치)란, 데이터가 수집되지 않거나, 누락되어 정보(값)이 존재하지않음을 의미한다.
결측치가 포함된 데이터는 모델 학습이 불가능하여, 모델 학습을 위한 데이터를 생성시에는 결측시를 반드시 처리해주어야 한다.
일반적으로 python에서 결측치는 NaN으로 표기된다. (null, NA, NaN 등으로 보통 결측치를 표현한다.)
결측치는 일반적으로 수집 혹인 관리 과정에서의 실수로 발생한다.
결측치를 처리하는 방법은 크게 2가지로 나눌 수 있다.
항상 결측치를 처리함에 앞서, 왜 결측치가 발생했는지를 파악하는 것이 좋다.
(결측치의 발생 원인을 알면, 결측치를 어떠한 방식으로 처리할지 결정하는데 도움을 받고, 보다 질 좋은 데이터를 만들 수 있다.)
결측치를 제거하는 방식에는 2가지가 존재한다.
Listwise deletion
df.dropna()Pairwise deletion
df.dropna(how='all')당연하게도 Listwise 방식이 Pariwise 방식보다 더 많은 데이터를 제거하게 된다. 이는 정확성 측면에서 온전한 데이터를 활용하려면 고려해볼 수 있는 부분이다.
즉, Listwise 방식을 사용하고자 한다면, 데이터에 결측치가 얼마나 존재하는지 파악하고, 삭제되는 데이터 양을 확인하여, 감수 가능할 때 하는 것이 좋다.
결측치 대체 방식은 정보의 손실은 방지하나, 정보의 왜곡(변수의 특성에 영향 - ex. 평균, 상관관계 등)이 발생할 수 있다.
이러한 결측치 대체 방식에도 2가지가 존재한다.
df['col1'].replace(np.nan, df['col1'].mean())df.interpolate()데이터 대체는 데이터의 특성에 영향을 주므로, 기존 데이터가 어떠한 특성을 가지고 있는지를 잘 파악하는 것이 중요하다.