본문 바로가기
ML.DL

타이타닉 생존자 분석 EDA 2

by somoony 2025. 1. 13.

타이타닉 생존자 분석 EDA2

1. 경제력 대비 생존률

pd.crosstab(titanic['pclass'], titanic['survived'], margins=True)

pclass 는 객실등급을 뜻한다.

crosstab 은 데이터 분석과 통계에서 주로 사용되는 함수라고 한다. 2개의 범주형 변수를 비교할 수 있어서 pclass 범주형 변수와 survived 범주형 변수를 넣어서 사용해 보겠다.

survived01Allpclass123All
123 200 323
158 119 277
528 181 709
809 500 1309

1등실의 생존 가능성이 매우 높다.
그런데 여성의 생존률도 높다.
그럼, 1등실에는 여성이 많이 타고 있었나?

2. 객실등급별 각 성별의 나이분포 확인

(FacetGrid)

grid = sns.FacetGrid(titanic, row='pclass', col='sex', height=4, aspect=2)
grid.map(plt.hist, 'age', alpha=0.8, bins=20)
grid.add_legend()

FacetGrid 가 하는 일은 이것 또한 시각화 도구인데 seaborn 에서 그림을 여러 개의 하위 그래프로 분할하여 복잡한 데이터 패턴을 쉽게 분석하고 시각화 할 수 있도록 도와주는 도구라고 한다.

3등실에는 남성이 많았다 - 특히 20대 남성
2등실은 남여 모두 갓난아기들이 1등실에 많다.


3. 나이별 승객 현황

import plotly_express as px

fig = px.histogram(titanic, x='age')
fig.show()

아이들과 2~30대가 꽤 많았다.


4. 등실별 생존률

grid = sns.FacetGrid(titanic, row='pclass', col='survived', height=4, aspect=2)
grid.map(plt.hist, 'age', alpha=0.8, bins=20)
grid.add_legend()

3등실 쪽은 2~30대의 많은 사람들의 사망률이 높다.

5. 나이별 등급 피쳐 생성

titanic['age_cat'] = pd.cut(titanic['age'], bins=[0,7, 15,30,60,100] ,
       include_lowest=True,
       labels=['baby', 'teenage', 'young', 'adult', 'old'])

titanic.head()

[생성된 feature]

나이, 성별, 등급별 생존자 수를 한 번에 파악할 수 있을까?

plt.figure(figsize=(12,4))

plt.subplot(131)
sns.barplot(x='pclass', y='survived', data=titanic)
plt.subplot(132)
sns.barplot(x='age_cat', y='survived', data=titanic)
plt.subplot(133)
sns.barplot(x='sex', y='survived', data=titanic)
plt.subplots_adjust(top=1, bottom=0.1, left=0.1, right=1, hspace=0.5, wspace=0.5)

plt.show()

결론
1. 1등실에 탄 사람들의 생존율이 높았다.
2. 나이대는 15세~30세 , 60~100세 사이의 사람들이 살아남지 못했다.
3. 여성의 생존율이 높았다.

  • 1등실, 여성, 0~15세와 30~60세 사람의 생존율이 높았던 것으로 볼 수 있다.

'ML.DL' 카테고리의 다른 글

데이터분리  (0) 2025.01.13
zip과 언패킹  (1) 2025.01.13
머신러닝을 이용한 생존자예측 - titanic  (1) 2025.01.13
Min-Max-Scaler  (1) 2025.01.13
Basic of Regression -OLS  (1) 2025.01.13