모두의연구소 교육 과정에서 진행한 Data Cleaning 실습 내용을 바탕으로,
Titanic 생존자 데이터를 기반으로 이를 활용하여 결측치, 이상치, 중복값, 텍스트 데이터 등 다양한 전처리 과정을 정리한 기록이다.
자세한 학습 진행 과정은 GitHub repository에 남겨두었다.
🛠️ 사용 환경: Python, Pandas, Jupyter Notebook
✓ 데이터 분석 전 필수 단계인 데이터 정제 흐름을 이해하고 실습
✓ 실제 데이터셋을 기반으로 결측치, 이상치, 중복값 처리, 텍스트 및 날짜/시간 데이터 처리 방법 등을 습득
✓ Pandas 메서드에 익숙해지며 분석 전 데이터의 상태를 점검하고 정비하는 습관을 기르기 위함
| 단계 | 내용 | 사용 메서드 |
|---|---|---|
| 1 | 데이터 구조 확인 | read_csv(), info(), describe() |
| ↓ | ||
| 2 | 불필요한 컬럼 제거 | drop() |
| ↓ | ||
| 3 | 결측치 처리 | dropna(), fillna(), median() |
| ↓ | ||
| 4 | 이상치 탐지 및 처리 | apply(lambda x: 80 if x > 80 else x) |
| ↓ | ||
| 5 | 중복값 처리 | duplicated(), drop_duplicates() |
| ↓ | ||
| 6 | 데이터 형태 변환 | rename(), replace(), map(), apply() |
| ↓ | ||
| 7 | 텍스트 및 날짜/시간 처리 | pd.to_numeric(), pd.to_datetime(), .str, .dt |
결측치는 단순히 제거하는 것보다, 데이터의 특성에 맞춰 채우는 것이 더 합리적인 방법일 수 있다.
→ 예를 들어, Age는 평균보다 중앙값(median)으로 대체하는 것이 이상치 영향을 줄일 수 있었다.
결측치가 일정 이상(50~70%) 포함된 컬럼은 분석 대상에서 제거하는 것도 좋은 선택지임을 확인했다.
문자열 처리 시에는 반드시 .str 접근자를 통해 메서드를 호출해야 Pandas Series에서 작동한다는 것을 알게 되었다.
이상치가 포함되면 모델이 편향될 수 있고, 학습 결과가 왜곡될 수 있다는 것을 다시 한 번 체감했다.
→ 이상치 처리 여부는 단순 기준으로 자르기보다, 모델 복잡도와 실제 목적에 따라 판단하는 것이 중요하다.
정제된 데이터를 기반으로 분석을 시작하면, 데이터에 대한 신뢰도와 정확성이 훨씬 높아진다는 걸 느꼈다.
해당 실습을 통해 데이터 정제 단계에서 생각보다 많은 판단과 작업이 필요하다는 것을 배웠다.
앞으로는 단순히
.dropna()로 처리하지 않고, 각 변수에 맞는 전략을 세우는 습관을 들이는 것이 필요하겠다.