대표적인 데이터 전처리 방법인 결측값, 중복값, 이상치 처리에 대해 각각 설명해 주세요.
데이터 전처리(Data Preprocessing)는 데이터 분석이나 머신러닝 모델을 구축하기 전, 데이터를 정제하고 변환하는 과정을 의미한다.
우리가 사는 현실 세계의 정보는 잡음(noise)이 포함되어 있기 때문에 이를 완전한 데이터 형태로 변환하는 과정이 필요하다. 노이즈를 제대로 처리하지 않으면 분석 결과의 정확도가 낮아지고, 모델 성능이 떨어질 수 있기 때문에 필수적인 과정이다.
그렇다면 데이터를 전처리하는 방법에는 어떤 것이 있을까?
아래의 세 가지 방법이 데이터를 전처리하는 주요한 방법이다.
결측값이란 데이터셋에서 누락된 값을 의미한다. 결측치는 데이터가 수집될 때 특정 값이 기록되지 않았거나 손실된 경우 발생한다.

그렇다면 데이터 내 결측치는 어떻게 처리해야 할까?
우선 "왜 결측치가 발생했을까?"를 판단해야 한다.
데이터셋을 다운받은 사이트 문서에서 결측치가 생긴 이유를 설명해줄 수도 있기 때문에 데이터에 대한 정보를 꼼꼼하게 살펴보는 것이 중요하다. 의미없는 특정값으로 채우기보다는 의미있는 값으로 변환하여 채워준다면 데이터셋의 품질이 높아지기 때문이다.
결측치를 처리하는 방법에는 세가지 정도가 있다.
1️⃣ 삭제
2️⃣ 대체
3️⃣ 예외 처리
중복값은 데이터셋에서 동일한 데이터가 반복되는 것을 의미한다. 중복값은 데이터의 신뢰성을 낮추고, 모델이 과적합되는 문제를 일으킬 수 있기 때문에 처리해주어야 한다.
중복값은 아래와 같은 과정을 통해 전처리한다.
1️⃣ 중복값 확인
2️⃣ 중복값 제거
3️⃣ 상황에 맞게 처리
이상치란 일반적인 데이터 범위에서 크게 벗어나는 값을 의미한다. 이상치는 데이터 분석 결과를 왜곡할 수 있으므로 처리해야 한다.
이상치는 주로 IQR 방식으로 탐지한다.
1️⃣ IQR (Interquartile Range)
IQR(사분위수 범위)는 데이터의 중간 50% 범위를 의미한다.
일반적으로 1.5 * IQR 범위를 벗어나는 값을 이상치로 간주한다.

계산 공식
Q1 = 25번째 백분위수
Q3 = 75번째 백분위수
IQR = Q3 - Q1
값 < Q1 - 1.5 * IQR
값 > Q3 + 1.5 * IQR
import pandas as pd
df = pd.read_csv('data.csv')
# IQR로 이상치 탐지
Q1 = df['column'].quantile(0.25)
Q3 = df['column'].quantile(0.75)
IQR = Q3 - Q1
# 이상치 조건
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 이상치 제거
df = df[(df['column'] >= lower_bound) & (df['column'] <= upper_bound)]
이렇게 이상치를 탐지했다면 이제 어떻게 처리할지 결정하면 된다. 이상치가 명백한 오류인 경우 해당 데이터를 제거하면 된다. 그러나 특정 상황에서는 이상치가 의미 있는 데이터일 수도 있기 때문에 도메인 지식을 바탕으로 남겨두는 선택을 할 수도 있다.