# Ch4. 데이터 전처리

- **데이터 전처리의 필요성**

    - 원본(Raw) 데이터는 대부분 정제되지 않은 상태이므로 분석에 바로 활용하기 어려움.

    - 실무 데이터는 교육용 예제 데이터와 달리 지저분하고 복잡함.

    - 따라서 데이터 분석 전, 데이터의 상태를 파악하고 정리하는 전처리 과정이 필수적임.

- **데이터 전처리 정의 및 비유**

    - 흩어진 데이터를 분석 가능한 형태로 정리하는 모든 과정을 '데이터 전처리'라 함.

    - 이는 요리 전 재료를 손질하는 과정에 비유할 수 있음 (상한 부분 제거, 중복 재료 제외, 대체 재료 준비 등)

---

> 실습 파일

Kaggle의 Titanic Dataset

*Kaggel(캐글)

데이터 과학과 머신러닝 분야 최대의 온라인 플랫폼으로, 전 세계 사용자가 데이터 경진대회에 참가하고, 실제 데이터를 활용해 다양한 분석·예측 모델을 만들고 공유할 수 있는 커뮤니티임.

구글(Google) 산하에서 운영되며, 대회(Competition), 데이터셋, 실습 노트북, 토론 포럼 등 데이터 사이언스 학습과 실력 검증에 필요한 모든 리소스를 무료로 제공함.

[Titanic - Machine Learning from Disaster](https://www.kaggle.com/competitions/titanic/data)

- 라이언 드라이브에서 다운로드 

[https://drive.google.com/file/d/1p0NMUr3GyNyMIYsFQV_n4fOwxPTxuWUA/view?usp=drive_link](https://drive.google.com/file/d/1p0NMUr3GyNyMIYsFQV_n4fOwxPTxuWUA/view?usp=drive_link)

## Data Dictionary

| Variable | Definition | Key |
| --- | --- | --- |
| survival | Survival | 0 = No, 1 = Yes |
| pclass | Ticket class | 1 = 1st, 2 = 2nd, 3 = 3rd |
| sex | Sex |  |
| Age | Age in years |  |
| sibsp | # of siblings / spouses aboard the Titanic (sister+brother+spouse) |  |
| parch | # of parents / children aboard the Titanic (parent + chile) |  |
| ticket | Ticket number |  |
| fare | Passenger fare |  |
| cabin | Cabin number |  |
| embarked | Port of Embarkation | C = Cherbourg, Q = Queenstown, S = Southampton |

## 1. 데이터 살펴보기

- 파일 업로드 하고, 아래와 같이 입력

```
데이터 전처리가 필요한 부분을 확인해줘. 
```

> gpt

데이터셋을 점검한 결과, 다음과 같은 **전처리 필요 지점**이 확인되었습니다 🔍

---

### 🧩 1. 결측치(Missing Values)

| 컬럼 | 결측 개수 | 비율 | 비고 |
| --- | --- | --- | --- |
| `Age` | 177 | 약 19.9% | 평균/중앙값/그룹별 평균으로 대체 가능 |
| `Cabin` | 687 | 약 77.1% | 결측률이 매우 높음 → 변수 제거 또는 'Unknown' 처리 고려 |
| `Embarked` | 2 | 약 0.2% | 최빈값(`S`)으로 대체 가능 |

---

### 🧮 2. 데이터 타입(Data Type)

- `Pclass`, `Sex`, `Embarked`는 **범주형 변수(categorical)** 로 인코딩 필요 (예: One-Hot Encoding 또는 Label Encoding).

- `Ticket`, `Name`, `Cabin`은 **문자열** → 직접 사용보다는 파생변수(feature extraction)로 가공 가능

    - 예: `Name` → 호칭(Mr, Mrs 등) 추출

    - `Ticket` → 숫자/문자 분리 후 규칙성 확인

---

### ⚙️ 3. 이상치(Outliers) 후보

- `Fare`: 일부 값이 매우 큰 것으로 알려져 있음 → 로그 변환(log-scaling) 검토

- `Age`: 0세 미만 또는 80세 이상 등 극단값 확인 필요

---

### 🧠 4. 중복 데이터

- `PassengerId`는 고유(unique)하므로 중복 행은 없음.

---

원하신다면,

다음 단계로

**결측치 처리 및 이상치 탐지 시각화**를 바로 수행할 수 있습니다.

원하시는가요?

→ 예를 들어:

`Age` 결측치는 중앙값으로 채우고, `Cabin`은 "Unknown" 처리, `Embarked`는 최빈값으로 대체하는 방식.

For the site tree, see the [root Markdown](https://slashpage.com/lion.md).
