当前位置: 首页 > news >正文

用Python和Seaborn可视化Titanic数据集:5个图表讲透生还率背后的故事

用Python和Seaborn可视化Titanic数据集:5个图表讲透生还率背后的故事

泰坦尼克号的故事已经过去了一个多世纪,但这场悲剧留下的数据依然在向我们诉说着那些不为人知的细节。作为数据分析师,我们手中的工具可以让这些沉默的数字开口说话。本文将带你用Python的Seaborn库,通过5个精心设计的可视化图表,揭示隐藏在Titanic数据集中的生存密码。不同于传统的机器学习建模流程,我们将专注于如何用图表讲故事——就像一位侦探通过蛛丝马迹还原案发现场那样,从数据可视化中发现那些影响生还率的关键因素。

1. 准备工作与环境配置

在开始我们的数据探索之旅前,需要确保工作环境准备就绪。推荐使用Jupyter Notebook进行交互式数据分析,这是数据科学家们最钟爱的工具之一。以下是需要安装的核心Python库:

# 基础数据处理三件套 import pandas as pd import numpy as np # 可视化双雄 import matplotlib.pyplot as plt import seaborn as sns # 设置可视化风格 sns.set_theme(style="whitegrid", palette="pastel")

提示:使用sns.set_theme()可以一键设置Seaborn的全局样式,避免每次绘图都重复配置样式参数。

数据集可以从Kaggle官网获取,也可以直接通过Seaborn内置函数加载:

# 加载数据集 titanic = sns.load_dataset('titanic') # 快速浏览数据结构 print(titanic.info())

数据集包含以下关键特征:

  • survived: 是否生还(0=否,1=是)
  • pclass: 船舱等级(1/2/3等舱)
  • sex: 性别
  • age: 年龄
  • fare: 票价
  • embarked: 登船港口
  • alone: 是否独自乘船

2. 生存率基础分析:性别与船舱的生死博弈

2.1 性别与生存率:妇女优先原则的数据印证

让我们首先验证那个广为人知的"妇女儿童优先"原则是否真实反映在数据中。使用Seaborn的barplot可以直观展示不同性别的生存率差异:

plt.figure(figsize=(8,5)) gender_survival = sns.barplot( x='sex', y='survived', data=titanic, estimator=lambda x: sum(x)/len(x)*100 ) gender_survival.set( title='生存率按性别分布', xlabel='性别', ylabel='生存率(%)' ) plt.show()

这个简单的柱状图揭示了一个残酷的事实:女性生存率高达74%,而男性仅有18%。这种巨大差异完美印证了当时的救援原则。

2.2 船舱等级:金钱买来的生机

三等舱的乘客是否真的面临更高的死亡风险?让我们用分组柱状图来揭示这一关系:

plt.figure(figsize=(10,6)) class_survival = sns.barplot( x='pclass', y='survived', hue='sex', data=titanic, estimator=np.mean ) class_survival.set( title='不同舱位与性别的生存率对比', xlabel='船舱等级', ylabel='生存比例' ) plt.legend(title='性别') plt.show()

图表显示了一个双重分层现象:

  1. 无论性别,一等舱乘客的生存率都显著高于其他舱位
  2. 在每个舱位内部,女性生存率都远高于男性

三等舱男性的生存率仅有13%,而一等舱女性则高达96%,这可能是数据中最令人震撼的差距。

3. 年龄因素:被遗忘的儿童优先原则

3.1 年龄分布与生存率

年龄对生存机会的影响往往被忽视。使用核密度估计图可以同时展示年龄分布和生存情况:

plt.figure(figsize=(12,6)) age_dist = sns.kdeplot( data=titanic, x='age', hue='survived', fill=True, alpha=0.5, palette=['#ff7f0e','#1f77b4'] ) age_dist.set( title='生还者与遇难者年龄分布对比', xlabel='年龄', ylabel='密度' ) plt.legend(['遇难','生还']) plt.show()

图表揭示了几点关键发现:

  • 儿童(<10岁)的生还概率明显高于其他年龄段
  • 20-30岁的青年男性遇难比例特别高
  • 老年人的生存率整体偏低

3.2 年龄与舱位的交互影响

为了更深入理解年龄因素,我们可以使用分面网格图:

g = sns.FacetGrid( titanic, row='pclass', col='survived', height=4, aspect=1.5 ) g.map(sns.histplot, 'age', bins=20) g.set_axis_labels('年龄', '人数') plt.show()

这个分面图清晰地展示了:

  • 一等舱儿童几乎全部生还
  • 三等舱遇难者中20-40岁人群占比最高
  • 老年人在各舱位的生存率都较低

4. 家庭因素:结伴而行的优势

4.1 家庭规模与生存率

Titanic数据集中SibSp(兄弟姐妹/配偶数量)和Parch(父母/子女数量)可以组合成家庭规模指标:

# 创建家庭规模特征 titanic['family_size'] = titanic['sibsp'] + titanic['parch'] + 1 plt.figure(figsize=(12,6)) family_impact = sns.pointplot( x='family_size', y='survived', hue='pclass', data=titanic, palette='Set2', ci=None ) family_impact.set( title='家庭规模对生存率的影响(按舱位)', xlabel='家庭规模', ylabel='生存率' ) plt.legend(title='舱位等级') plt.show()

分析结果显示:

  • 中等规模家庭(2-4人)生存率最高
  • 独自旅行者生存率最低
  • 大家庭(>4人)生存优势下降

4.2 登船港口:起点决定终点?

不同登船港口(Embarked)的乘客是否面临不同的生存概率?使用箱线图可以揭示这一关系:

plt.figure(figsize=(10,6)) embark_effect = sns.boxplot( x='embarked', y='fare', hue='survived', data=titanic, showfliers=False ) embark_effect.set( title='不同登船港口的票价分布与生存关系', xlabel='登船港口', ylabel='票价' ) plt.legend(title='是否生还') plt.show()

有趣的是:

  • Cherbourg港登船的乘客票价中位数最高,生存率也最高
  • Southampton港登船的乘客数量最多但生存率最低
  • Queenstown港登船的乘客多为低价票

5. 综合因素:生存机会的多维分析

5.1 热力图:特征相关性分析

要理解各因素之间的相互关系,相关矩阵热力图是最佳选择:

# 计算相关系数矩阵 corr = titanic[['survived','pclass','age','fare','family_size']].corr() plt.figure(figsize=(10,8)) sns.heatmap( corr, annot=True, cmap='coolwarm', center=0, square=True ) plt.title('特征相关性热力图') plt.show()

热力图清晰地显示:

  • 票价与舱位等级高度负相关(-0.55)
  • 票价与生存率正相关(0.26)
  • 舱位等级与生存率负相关(-0.34)

5.2 小提琴图:多维度综合分析

最后,让我们用Seaborn最强大的可视化之一——小提琴图,来展示年龄、舱位和性别的综合影响:

plt.figure(figsize=(14,8)) sns.violinplot( x='pclass', y='age', hue='survived', split=True, data=titanic, palette='muted' ) plt.title('舱位等级与年龄分布的生存情况') plt.xlabel('舱位等级') plt.ylabel('年龄') plt.legend(title='是否生还') plt.show()

这个复合图表揭示了几个关键洞察:

  • 一等舱生还者的年龄分布最为均匀
  • 三等舱遇难者集中在20-40岁区间
  • 儿童(<10岁)在各舱位的生存优势明显

在完成这5个核心可视化后,我们可以清晰地看到泰坦尼克号悲剧背后的生存逻辑:舱位等级和性别是最强的预测因素,而年龄和家庭规模也扮演着重要角色。这些图表不仅验证了历史记载中的"妇女儿童优先"原则,还揭示了社会经济地位对生存机会的巨大影响。

http://www.jsqmd.com/news/854642/

相关文章:

  • 2026年企业做AI本地部署还是用云端API:服务商选型与成本决策指南 - 华旭传媒
  • 2026年上海燕窝回收机构排行:杭州虫草回收/杭州虫草礼品回收/上海整箱老酒回收/正规商家实测盘点 - 优质品牌商家
  • 【Perplexity建筑知识搜索实战指南】:20年资深架构师亲授3大隐藏技巧,90%工程师至今不知的精准检索密钥
  • 毕业设计:基于springboot宠物领养系统的设计与实现(源码)
  • OCLP-Mod完整指南:为老旧Mac设备解锁最新macOS系统支持
  • 2026年5月上海十大办公家具厂家推荐:十大排名产品评测夜班缓解腰酸痛点 - 品牌推荐
  • 2026年3C开窗器厂家排行:螺杆式开窗器、单链开窗器、双链开窗器、平移式开窗器、开窗器电动平开窗厂家、手动控制开窗器选择指南 - 优质品牌商家
  • 终极指南:如何用天津大学LaTeX论文模板彻底告别格式烦恼
  • 华为ENSP模拟器:手把手教你搞定OSPF+BGP混合组网实验(含完整配置与排错命令)
  • 终极指南:如何三步永久激活Windows和Office的完整解决方案
  • 深入浅出:基于CH32V307V-EVT-R1的RISC-V MCU开发实战
  • 别再让日志重启就丢!保姆级配置systemd journalctl持久化存储(附常见坑点排查)
  • Perplexity定义查询功能全解析(定义层·语义层·上下文层三重穿透)
  • 2026年5月主流电竞鼠标品牌十大排行榜推荐:十大品牌专业评测夜间电竞防手汗 - 品牌推荐
  • GTA5终极防护指南:如何用YimMenu打造安全的游戏体验
  • 如何快速使用TestDisk PhotoRec:数据恢复的完整终极指南
  • 2026年水族灯品牌推荐怎么判断:马印适用场景与选型对比清单 - 观域传媒
  • 2026年AI标书工具能替代人工写标书吗:中小企业投标效率提升方案对比 - 广州矩阵架构科技公司
  • Perplexity习语查询功能全解析(母语级表达生成原理首次公开)
  • 2026年5月专业的木质防火门公司口碑推荐厂家推荐榜,钢质防火门、木质防火门、防火窗厂家选择指南 - 海棠依旧大
  • 2025-2026年全球国际十大物流公司排行榜推荐:十家专业评测解析海运空运场景避时效延误痛点 - 品牌推荐
  • Geant4仿真效率提升:从FreeCAD网格优化到仿真精度的实战权衡
  • 2026年Q2西南地区悬臂吊起重机厂家排行及选型参考:双轨行车/悬挂行车/桥式双梁起重机/欧式起重机/门式行车/选择指南 - 优质品牌商家
  • 2025-2026年郑州律师电话推荐:专业法律服务与联系指南 - 品牌推荐
  • 2025-2026年香榭莱茵电话查询:使用前请核实服务资质与合同条款 - 品牌推荐
  • 2025-2026年桐柏县广和矿业有限公司电话查询:萤石粉采购需核实资质与标准 - 品牌推荐
  • 东北名包回收机构推荐榜:沈阳宇舶回收/沈阳宝玑回收/沈阳宝珀回收/沈阳普拉达回收/五大靠谱选择实测对比 - 优质品牌商家
  • 2026年成都防雷检测公司排行及品牌选择推荐 - 优质品牌商家
  • 2025-2026年上海十大办公家具厂家排名推荐:五大品牌评测开放式办公场景防噪音干扰 - 品牌推荐
  • 别再死记硬背了!用Arduino+TB6600驱动器,5分钟搞懂步进电机接线与驱动模式(附代码)