泰坦尼克号幸存者数据分析

泰坦尼克号幸存者数据分析

1、泰坦尼克号数据集

泰坦尼克号的沉没是世界上最严重的海难事故之一,造成了大量的人员伤亡。这是一艘号称当时世界上最大的邮轮,船上的人年龄各异,背景不同,有贵族豪门,也有平民旅人,邮轮撞击冰山后,船上的人马上采取措施安排救生艇转移人员,从本次海难中存活下来的,也就是幸存者

泰坦尼克号数据集为1912年泰坦尼克号沉船事件中相关人员的个人信息以及存活状况。包含了2224名乘客和船员的姓名、性别、年龄、船票等级、船票价格、船舱号、登船港口、生存情况等信息。这些历史数据已经被分为训练集和测试集,我们可以根据训练集训练出合适的模型并预测测试集中的存活状况

数据集来源:https://www.kaggle.com/c/titanic

数据集下载:传送门

数据集各文件介绍:

  • gender_submission.csv:乘客编号与是否幸存记录
  • train.csv:训练集
  • test.csv:测试集

数据集(训练集和测试集)的属性信息(11特征+1标签)如下:

特征/标签 说明
PassengerId 乘客编号
Survived 是否幸存,1是0否
Pclass 船舱等级,1(一等)、2(二等)、3(三等)
Name 乘客姓名
Sex 乘客性别
Age 乘客年龄
SibSp 与乘客同行的兄弟姐妹及配偶人数
Parch 与乘客同行的父母及子女人数
Ticket 船票编号
Fare 船票价格
Cabin 乘客座位号
Embarked 乘客登船码头,C(Cherbourg)、Q(Queenstown)、S(Southampton)

2、数据集加载与概览

1)加载数据集

python 复制代码
import pandas as pd
import numpy as np

path = r"C:\Users\cc\Desktop\titanic_dataset\train.csv"
# 加载数据集
data = pd.read_csv(path, encoding='utf-8')
# 数据集前5行
print(data.head().to_string())
'''
   PassengerId  Survived  Pclass                                                 Name     Sex   Age  SibSp  Parch            Ticket     Fare Cabin Embarked
0            1         0       3                              Braund, Mr. Owen Harris    male  22.0      1      0         A/5 21171   7.2500   NaN        S
1            2         1       1  Cumings, Mrs. John Bradley (Florence Briggs Thayer)  female  38.0      1      0          PC 17599  71.2833   C85        C
2            3         1       3                               Heikkinen, Miss. Laina  female  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S
3            4         1       1         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1      0            113803  53.1000  C123        S
4            5         0       3                             Allen, Mr. William Henry    male  35.0      0      0            373450   8.0500   NaN        S
'''

2)数据集大小

python 复制代码
# 数据集的大小
print(data.shape)    # (891, 12)

泰坦尼克号数据集(训练集)有891个样本,12个特征和标签

3)特征和标签

python 复制代码
# 数据集的特征和标签
data.info()

结果如图所示:

泰坦尼克号数据集的特征和标签及对应数据类型如上图所示

4)数据缺失情况

python 复制代码
# 数据集的缺失情况
print(data.isnull().sum())

结果如图所示:

从结果可见,泰坦尼克号数据集中的乘客年龄和乘客座位号有大量缺失

3、泰坦尼克号幸存者数据分析

问题提出: 哪些人可能成为幸存者?

在回答这个问题之前,我们先来看一下泰坦尼克号全员整体的获救比例

1)获救比例

python 复制代码
# 获救人数占比
survive_ratio = data['Survived'].value_counts(normalize=True).reset_index()
print(survive_ratio)
# 幸存者占比:38.4%;遇难者占比:61.6%

结果如图所示:


结论1:泰坦尼克号幸存者仅占全员人数的38.4%

2)性别特征对获救率的影响

a、 男性乘客与女性乘客占比

python 复制代码
# 男性乘客与女性乘客占比
mf_count = data['Sex'].value_counts().reset_index()
print(mf_count)
# 男性乘客:577人,女性乘客:314人

结果如图所示:


b、 男性乘客与女性乘客的获救率

python 复制代码
# 男性乘客与女性乘客的获救率
mf_ratio = data['Survived'].groupby(data['Sex']).value_counts().reset_index()
# 合并
mf_data = pd.merge(mf_ratio, mf_count, how='left', on='Sex')
mf_data['rescue_ratio'] = mf_data['count_x'] / mf_data['count_y']
print(mf_data)
# 男性乘客获救比例:18.9%,女性乘客获救比例:74.2%

结果如图所示:


结论2:女性乘客总人数比男性少,但是获救人数却比男性乘客要多。性别特征对获救概率影响较大

3)船舱等级特征对获救率的影响

a、 各船舱等级乘客占比

python 复制代码
# 各船舱等级乘客占比
pc_count = data['Pclass'].value_counts().reset_index()
print(pc_count)
# 一等:216人,二等:184人,三等:491人

结果如图所示:


b、 各船舱等级乘客的获救率

python 复制代码
# 各船舱等级乘客的获救率
pc_ratio = data['Survived'].groupby(data['Pclass']).value_counts().reset_index()
# 合并
pc_data = pd.merge(pc_ratio, pc_count, how='left', on='Pclass')
pc_data['rescue_ratio'] = pc_data['count_x'] / pc_data['count_y']
print(pc_data)
# 一等获救比例:62.9%,二等获救比例:47.3%,三等获救比例:24.2%

结果如图所示:


结论3:一等船舱获救比例最高,三等船舱获救比例最低。船舱等级对于乘客的获救率存在较大的影响

4)各船舱等级中的性别特征对获救率的影响

a、 不同船舱等级的男女乘客人数

python 复制代码
# 不同船舱等级的男女乘客人数
ps_count = data['Sex'].groupby(data['Pclass']).value_counts().reset_index()
print(ps_count)
# 一等:男122人,女94人,二等:男108人,女76人,三等:男347人,女144人

结果如图所示:


b、 不同等级船舱的男性乘客与女性乘客的获救率

python 复制代码
# 不同等级船舱的男性乘客与女性乘客的获救率
ps_ratio = data['Survived'].groupby([data['Pclass'], data['Sex']]).value_counts().reset_index()
# 合并
ps_data = pd.merge(ps_ratio, ps_count, how='left', on=['Pclass', 'Sex'])
ps_data['rescue_ratio'] = ps_data['count_x'] / ps_data['count_y']
print(ps_data)
# 一等获救比例:男39.9%,女96.8%,二等获救比例:男 15.7%,女92.1%,三等获救比例:男13.5%,女50.0%

结果如图所示:


结论4:各等级船舱中男性乘客多于女性乘客,但是女性乘客的获救比例都高于男性乘客。不同等级船舱的女性乘客的获救率高于男性,这可能是女士优先的原因

4、哪些人可能成为幸存者?

根据上述分析结果,我们可以得到以下两个关于乘客获救率的结论:

  • 在泰坦尼克号上,女性的获救率高于男性
  • 高等级船舱的乘客获救率高于低等级船舱

另外,我们也可以从年龄等其他角度进行分析,有兴趣的小伙伴可以自行尝试

参考文章:https://zhuanlan.zhihu.com/p/129247887

相关推荐
SelectDB技术团队8 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
statistican_ABin2 小时前
R语言数据分析案例45-全国汽车销售数据分析(可视化与回归分析)
数据挖掘·数据分析
IT古董3 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
网络真危险!!3 小时前
【数据分析】认清、明确
数据挖掘·数据分析
菜鸟的人工智能之路3 小时前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗
菜鸟学Python3 小时前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
机器人虎哥4 小时前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
EterNity_TiMe_4 小时前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
罗小罗同学6 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤6 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai