1. 들어가며
이전 글 **"[DAC-001] Titanic 생존자 예측 #1 - 계획 세우기"**에서는 프로젝트의 목표와 분석 로드맵을 정리했습니다.
이번 글에서는 **데이터 탐색(Exploratory Data Analysis, EDA)**을 수행하며, 데이터의 구조를 이해하고 변수 간의 관계를 분석하여 유용한 패턴을 발견하는 과정을 진행합니다.
EDA는 머신러닝 프로젝트에서 가장 중요한 단계 중 하나입니다. 생존자와 비생존자의 차이점을 분석하고, 의미 있는 변수를 찾아보는 과정을 진행해 보겠습니다.
2. 데이터 불러오기 및 기본 정보 확인
📌 2.1 라이브러리 불러오기
먼저 필요한 라이브러리를 불러옵니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
📌 2.2 데이터 불러오기
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
이제 train.csv의 기본 정보를 확인해 보겠습니다.
train.info()
📌 출력 결과
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Sex 891 non-null object
5 Age 714 non-null float64
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
10 Cabin 204 non-null object
11 Embarked 889 non-null object
🚀 확인할 점
✅ Age, Cabin, Embarked 컬럼에 결측치가 있음
✅ Cabin 데이터는 결측치가 많아 활용 여부를 고민해야 함
✅ Survived는 0(사망) 또는 1(생존)로 되어 있는 이진 분류 문제
3. 생존율 분포 분석
먼저 전체 생존율을 확인해 보겠습니다.
plt.figure(figsize=(6, 4))
sns.countplot(x=train["Survived"], palette="coolwarm")
plt.title("Survival Distribution (0 = Died, 1 = Survived)")
plt.show()
📊 결과 해석
- 생존자(1)의 비율이 사망자(0)보다 적음
- 생존률 ≈ 38.4%, 사망률 ≈ 61.6%
print(f"생존자 비율: {train['Survived'].mean() * 100:.2f}%")
생존자 비율: 38.38%
📌 🚨 분석 포인트:
- 특정 변수(성별, 좌석 등급 등)가 생존 여부에 영향을 미쳤을까?
- 어떤 변수들이 생존 가능성을 높였을까?
4. 주요 변수별 생존률 분석
📌 4.1 성별(Sex)과 생존률
plt.figure(figsize=(6, 4))
sns.barplot(x="Sex", y="Survived", data=train, palette="coolwarm")
plt.title("Survival Rate by Gender")
plt.show()
📊 결과 해석
- 여성의 생존율이 남성보다 훨씬 높음
- 🚀 "여성이 구조될 가능성이 더 높았다"
train.groupby("Sex")["Survived"].mean()
Sex
female 0.742038
male 0.188908
✅ 여성 생존율: 74.2%
✅ 남성 생존율: 18.9%
📌 4.2 좌석 등급(Pclass)과 생존률
plt.figure(figsize=(6, 4))
sns.barplot(x="Pclass", y="Survived", data=train, palette="coolwarm")
plt.title("Survival Rate by Pclass")
plt.show()
📊 결과 해석
- 1등석 승객의 생존율이 가장 높음
- 3등석 승객의 생존율이 가장 낮음
- 🚀 "높은 등급의 좌석이 생존 확률을 높였다"
train.groupby("Pclass")["Survived"].mean()
Pclass
1 0.629630
2 0.472826
3 0.242363
✅ 1등석 생존율: 62.9%
✅ 3등석 생존율: 24.2%
5. 결론 및 다음 단계
🚀 EDA를 통해 얻은 주요 인사이트:
✅ 여성의 생존율이 남성보다 높음 (74.2% vs 18.9%)
✅ 1등석 승객의 생존율이 3등석보다 2배 이상 높음 (62.9% vs 24.2%)
✅ 적당한 가족 크기(1~3명)가 생존 확률을 높임
📌 다음 단계: 데이터 전처리!
다음 글 **"[DAC-001] Titanic 생존자 예측 #3 - 데이터 전처리"**에서는 결측치 처리, 이상치 제거, 범주형 데이터 변환 등의 작업을 진행하겠습니다.
🔥 추가적으로 분석해보고 싶은 요소가 있다면 댓글로 남겨주세요!
➡ 다음 편에서 만나요! 🚀
'04. 캐글' 카테고리의 다른 글
| 00008. [KAG-001] Titanic 생존자 예측 #4 - 제출 파일 생성 및 Kaggle 업로드 (0) | 2025.04.04 |
|---|---|
| 00007. [KAG-001] Titanic 생존자 예측 #3 - 데이터 전처리와 모델 학습 (0) | 2025.04.04 |
| 00005. [KGL-00001] Titanic 생존자 예측 #1 - 계획 세우기 🚢 (0) | 2025.03.10 |
| 00004. 캐글 초보자가 도전할 만한 대회 추천 🚀 (0) | 2025.03.10 |
| 00003. 🚀 Kaggle Novice → Contributor 승급 가이드 (1) | 2025.03.06 |