본문 바로가기
Data Anlaytist

데이터 분석 시, 결측치(missing value)를 어떻게 처리할 수 있을까?

by goemgoem-i 2025. 3. 31.
반응형

CS 면접 준비하다가 나온 질문

데이터를 다루는 학과다 보니 결측치를 다루는게 항상 고민인데

한 번도 글로 작성해본 적 이 없어서 한 번 작성해 볼 까 한다

 

결측치란?

간단히 말해서 값이 비어 있는 상태
예를 들어, 설문조사에서 어떤 응답자가 ‘나이’를 입력하지 않았다면, 그 항목은 결측치로 남게 된다

 

import pandas as pd
df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '나이': [25, None, 30]
})
print(df)

 

결과 : 

   이름    나이
0  철수  25.0
1  영희   NaN
2  민수  30.0

 

 

 

 

결측치는 왜 생길까?

  1. 사용자가 값을 입력하지 않음 (설문조사, 가입 폼 등)
  2. 시스템 오류로 누락됨
  3. 데이터 수집 범위에 포함되지 않음 (예: 성인만 대상인데 미성년자 항목 포함 등)
  4. 병합/조인 과정에서 생긴 누락

 

 

 

결측치는 어떻게 처리할까?

1️⃣ 결측치 확인하기

df.isnull().sum()

-> 각 컬럼별로 몇 개의 결측치가 있는지 알려준다

 

 

 

2️⃣ 제거하기 (Drop)

df.dropna()

-> 모든 컬럼 기준으로 결측치가 있는 행을 제거

-> 선택적으로 특정 컬럼 기준으로만 제거할 수 있다

 

 

3️⃣ 대체하기 (Fill)

df['나이'].fillna(df['나이'].mean(), inplace=True)

-> 연속형 숫자 데이터에는 평균, 중앙값 추천

-> 범주형 데이터에는 최빈값 사용

 

 

 

4️⃣ 예측 모델로 결측치 채우기

조금 고급 기술이에요. 다른 변수들을 활용해서 결측치를 예측하는 모델을 학습시켜 채울 수 있다
RandomForest, KNN 등 다양한 모델이 가능

 

 

-----------------------------------------------------------------------------------------------------------------------------

 

 

결측치 처리할 때 보통

평균적으로 평균이나 중앙값을 많이 사용하는 것 같다

 

 

 

 

 

반응형