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

用Python和Pandas搞定泰坦尼克号数据集:从数据清洗到特征工程的完整实战

用Python和Pandas征服泰坦尼克号数据集从数据清洗到特征工程的实战指南当第一次打开泰坦尼克号数据集时那些密密麻麻的乘客信息就像一艘沉船上的碎片——杂乱无章却又充满故事。作为数据科学领域最经典的入门数据集它包含了891名乘客的12个特征变量从年龄、性别到船票价格和舱位等级。本文将带你用Python和Pandas工具像考古学家一样清理、修复这些数据碎片最终构建一个有预测价值的特征集。1. 数据探索第一眼看到的不只是冰山一角在开始任何数据分析项目前我们需要先了解数据的全貌。泰坦尼克号数据集通常包含以下关键列Survived: 生存状态0遇难1生还Pclass: 舱位等级1头等舱2二等舱3三等舱Sex: 性别Age: 年龄SibSp: 船上兄弟姐妹/配偶数量Parch: 船上父母/子女数量Fare: 船票价格Embarked: 登船港口CCherbourg, QQueenstown, SSouthampton让我们先用Pandas加载数据并快速浏览import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 加载数据 titanic pd.read_csv(titanic.csv) # 查看数据概览 print(f数据集形状: {titanic.shape}) print(titanic.info()) print(titanic.head())关键发现数据集有891行12列Age年龄列有177个缺失值Cabin舱位列缺失严重只有204个非空值Embarked登船港口有2个缺失值2. 数据清洗处理缺失值的艺术缺失值是数据分析中最常见的挑战之一。泰坦尼克号数据集中的缺失值主要集中在三个列Age、Cabin和Embarked。我们需要根据每列的特点采用不同的处理策略。2.1 年龄缺失值的智能填充单纯用平均值填充年龄会丢失很多信息。更聪明的做法是根据乘客的性别、舱位和头衔来分组填充# 从姓名中提取头衔 titanic[Title] titanic[Name].str.extract( ([A-Za-z])\., expandFalse) # 常见头衔映射 title_mapping {Mr: 0, Miss: 1, Mrs: 2, Master: 3, Dr: 3, Rev: 3, Col: 3, Major: 3, Mlle: 3, Countess: 3, Ms: 3, Lady: 3, Jonkheer: 3, Don: 3, Dona: 3, Mme: 3, Capt: 3, Sir: 3} titanic[Title] titanic[Title].map(title_mapping) # 按性别、舱位和头衔分组填充年龄中位数 titanic[Age] titanic.groupby([Sex, Pclass, Title])[Age].apply( lambda x: x.fillna(x.median()))2.2 处理其他缺失值对于Embarked登船港口的2个缺失值我们可以用最常见的港口填充# 用最常见的登船港口填充缺失值 most_common_embarked titanic[Embarked].mode()[0] titanic[Embarked] titanic[Embarked].fillna(most_common_embarked)至于Cabin舱位列缺失值太多约77%直接删除这一列可能更合理titanic titanic.drop(Cabin, axis1)3. 特征工程从原始数据中挖掘黄金原始数据就像未经加工的矿石特征工程就是提炼有价值信息的过程。以下是几个关键的特征工程步骤3.1 创建家庭规模特征将SibSp兄弟姐妹/配偶数量和Parch父母/子女数量组合成一个新特征FamilySizetitanic[FamilySize] titanic[SibSp] titanic[Parch] 1 # 创建是否独自旅行的特征 titanic[IsAlone] 0 titanic.loc[titanic[FamilySize] 1, IsAlone] 13.2 票价分组和标准化票价Fare的分布非常不均衡我们可以将其分组# 将票价分成4个组 titanic[FareBand] pd.qcut(titanic[Fare], 4, labels[0, 1, 2, 3]) titanic titanic.drop(Fare, axis1)3.3 年龄分组同样我们可以将年龄分成几个有意义的组别# 将年龄分成5个组 titanic[AgeBand] pd.cut(titanic[Age], 5, labels[0, 1, 2, 3, 4]) titanic titanic.drop(Age, axis1)3.4 类别变量编码机器学习算法通常需要数值输入所以我们需要将类别变量转换为数值# 性别编码 titanic[Sex] titanic[Sex].map({female: 0, male: 1}) # 登船港口编码 titanic[Embarked] titanic[Embarked].map({S: 0, C: 1, Q: 2}) # 头衔已经是数值无需进一步处理4. 数据可视化用图形讲述泰坦尼克号的故事可视化不仅能帮助我们理解数据还能发现潜在的模式和关系。让我们用Seaborn创建几个关键图表4.1 生存率与舱位等级的关系plt.figure(figsize(8, 5)) sns.barplot(xPclass, ySurvived, datatitanic) plt.title(Survival Rate by Passenger Class) plt.show()4.2 年龄分布与生存状态plt.figure(figsize(10, 6)) sns.histplot(datatitanic, xAgeBand, hueSurvived, multiplestack) plt.title(Age Distribution by Survival Status) plt.show()4.3 性别与生存率的交叉分析plt.figure(figsize(8, 5)) sns.countplot(xSex, hueSurvived, datatitanic) plt.title(Survival Count by Gender) plt.show()5. 构建机器学习模型从数据到预测经过以上步骤我们的数据已经准备好用于建模。让我们用随机森林算法来预测乘客的生存状态from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 准备特征和目标变量 X titanic.drop([PassengerId, Name, Ticket, Survived], axis1) y titanic[Survived] # 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # 初始化随机森林分类器 rf RandomForestClassifier(n_estimators100, random_state42) # 训练模型 rf.fit(X_train, y_train) # 预测测试集 predictions rf.predict(X_test) # 评估模型 print(f模型准确率: {accuracy_score(y_test, predictions):.2f})特征重要性分析# 获取特征重要性 feature_importance pd.DataFrame({ Feature: X.columns, Importance: rf.feature_importances_ }).sort_values(Importance, ascendingFalse) print(feature_importance)在实际项目中我们还可以进一步优化模型比如使用网格搜索调整超参数尝试不同的特征组合使用交叉验证评估模型稳定性6. 经验分享与实用技巧在处理泰坦尼克号数据集的过程中有几个关键点值得注意数据探索阶段不要急于填充缺失值先理解数据分布和缺失模式再决定如何处理。有时候缺失本身也是一种信息。特征工程比算法选择更重要好的特征可以显著提升模型性能即使使用简单算法。花在特征工程上的时间通常会有丰厚回报。可视化是理解数据的有力工具在建模前通过多种图表探索数据关系这往往能发现意想不到的模式。不要忽视类别变量的编码方式除了简单的标签编码还可以尝试独热编码、目标编码等方法根据具体场景选择最合适的。模型解释性很重要使用特征重要性分析、SHAP值等工具理解模型决策过程这在实际业务中往往比单纯的预测准确率更重要。记住每个数据集都有其独特性。泰坦尼克号数据集教会我们的不仅是具体的技术操作更是一种数据思维——如何从原始数据中提取有价值的信息如何通过迭代优化提升模型性能。这些技能在任何数据分析项目中都是通用的。

相关文章:

用Python和Pandas搞定泰坦尼克号数据集:从数据清洗到特征工程的完整实战

用Python和Pandas征服泰坦尼克号数据集:从数据清洗到特征工程的实战指南当第一次打开泰坦尼克号数据集时,那些密密麻麻的乘客信息就像一艘沉船上的碎片——杂乱无章却又充满故事。作为数据科学领域最经典的入门数据集,它包含了891名乘客的12个…...

避坑指南:处理NOAA海温数据时,关于陆地掩膜、时间解析和面积加权的三个常见错误

NOAA海温数据处理实战:避开陆地掩膜、时间解析与面积加权的三大陷阱当分析NOAA OISST海温数据时,许多研究者会不自觉地掉进几个技术陷阱——这些错误看似微小,却足以让整个分析结果偏离真实。我曾亲眼见过一位同行因为忽略纬度权重校正&#…...

避坑指南:用SARIMA做时间序列预测时,这5个参数调优错误千万别犯(Python实战)

SARIMA模型调优实战:避开时间序列预测中的五大陷阱引言在数据分析领域,时间序列预测一直是个既迷人又充满挑战的课题。每当我看到那些起伏的曲线,总能感受到数据背后隐藏的故事和规律。SARIMA模型作为时间序列分析的重要工具,因其…...

从‘交并比’到损失函数:一文搞懂Dice Loss在图像分割里的前世今生与代码实现

从集合相似度到像素级优化:Dice Loss在图像分割中的数学本质与工程实践当你在显微镜下观察一张病理切片时,那些蜿蜒交错的细胞边界决定了诊断结果;当自动驾驶汽车识别前方障碍物时,每个像素的分类关乎生命安全。图像分割作为计算机…...

单向晶闸管调压电路基础知识及Multisim电路仿真

目录 2.1.4 单向晶闸管调压电路 2.1.4.1 单向晶闸管调压电路基础知识 1. 电路结构与核心器件 2. 工作原理(核心逻辑) 3. 调压的本质:移相控制 2.1.4.2 单向晶闸管调压电路基础知识 1. 触发角 α = 0 2. 触发角 α = 90 3. 触发角 α = 180(第三张图) 总结对比 摘…...

2026年AI模型接口中转站真实测评:五大主流大模型API聚合平台深度实测调研指南

进入2026年,大语言模型的工程化落地已经走完从尝鲜到规模化普及的全流程,对于广大AI应用开发者而言,AI大模型接口中转站早就不是过去仅承担接口转发的简单工具,如今它已经承担起链路高可用保障、多模型负载均衡、跨协议自动转换等…...

2026年AI模型接口中转站全网全维度硬核实测 面向开发者与企业的权威选型实用指南

本次测评由中国产业信息研究院联合TechInsight AI评测实验室在2026年3月28日正式对外发布,所有公开统计数据全部来源于72小时不间断连续压测、万级QPS高并发仿真模拟、10万真实业务请求样本以及服务商后台脱敏运营数据,所有测试环节完全贴合真实生产场景…...

【STM32 C 语言入门】什么是强制类型转换?小白也能秒懂!

一、什么是强制类型转换?一句话讲透 强制类型转换,就是“强行把一种数据类型,变成另一种数据类型”。 打个比方: 你手里拿着一个苹果(int类型)但函数只收橙子(枚举类型)强制类型转换…...

3D光学流技术在机器人动作生成中的应用与优化

1. 3D光学流技术解析与机器人动作生成3D光学流技术是计算机视觉领域的重要突破,它通过分析物体在三维空间中的连续运动轨迹,为机器人动作规划提供了前所未有的精确度。传统2D光学流仅能捕捉平面运动信息,而3D光学流则能完整重建物体在XYZ三个…...

从‘看山是山’到‘看山不是山’:手把手教你用Landsat8波段组合玩转地物‘透视’

给地球戴上X光眼镜:Landsat8波段组合的视觉魔法手册第一次接触遥感影像的人,常会惊讶于同一片土地在不同"滤镜"下竟能呈现截然不同的面貌——茂密的森林在某张图上如火炬般鲜红耀眼,在另一张图中却消失不见;平静的湖面时…...

Nsight System和Compute命令行

Nsight System分析 nsys profile --tracecuda,nvtx --gpu-metrics-devicesall -o <out_file_name> python <python_file_name> <python args>示例 nsys profile --tracecuda,nvtx --gpu-metrics-devicesall -o profile_attention_bm128_bn64_w4_s2 python my…...

从集合运算到代码:一文搞懂Jaccard系数,附Python/NumPy/Pandas三种实现方法对比

从集合运算到代码&#xff1a;一文搞懂Jaccard系数&#xff0c;附Python/NumPy/Pandas三种实现方法对比在数据挖掘和机器学习领域&#xff0c;衡量两个集合的相似度是一项基础而重要的任务。Jaccard相似系数作为一种简单直观的度量方法&#xff0c;广泛应用于推荐系统、文本挖掘…...

不用开WPS会员了!这一款电子发票批量打印工具:支持排版 + OCR识别,完全免费!

软件下载 夸克下载&#xff1a;https://pan.quark.cn/s/39d9ed085809 软件介绍 今天给大家带来的是Office的代替品&#xff0c;LibreOffice不用激活、完全免费&#xff0c;非常好用&#xff01; 软件支持Windows、macOS、Linux。它包括包含 Writer&#xff08;文字处理&…...

MNIST识别项目复盘:除了准确率97%,我们更应该关注数据预处理与损失函数的选择

MNIST识别项目深度复盘&#xff1a;超越97%准确率的工程实践思考 在完成一个基础的MNIST手写数字识别项目后&#xff0c;很多开发者会满足于模型达到97%的准确率便止步不前。然而&#xff0c;真正有价值的机器学习实践远不止于调出一个高准确率的模型。本文将带您深入两个常被忽…...

人工智能通识课:深度学习框架 PyTorch

深度学习框架是连接算法理论与工程实践的重要工具。它让开发者不必从零实现张量运算、自动求导、参数更新、GPU 调度和模型保存等底层细节&#xff0c;而可以把主要精力放在数据处理、模型结构设计、训练策略和实验验证上。在众多深度学习框架中&#xff0c;PyTorch 凭借直观的…...

LLM:大语言模型的主要任务

大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是以深度学习为基础、通过大规模文本或多模态数据训练得到的生成式模型。它的核心能力并不是完成某一个固定任务&#xff0c;而是围绕语言理解、文本生成、信息处理、推理协助、代码生成、工具调用和多模…...

AI 术语通俗词典:RAG

RAG 是大语言模型、自然语言处理、知识问答、智能客服、企业知识库和 AI 应用开发中非常重要的一个术语&#xff0c;全称是 Retrieval-Augmented Generation&#xff0c;通常翻译为“检索增强生成”。它用来描述一种让大语言模型先从外部资料中检索相关内容&#xff0c;再基于这…...

ChatGPT生成图表总“丑”?3步精准调优Prompt+4类D3.js/Plotly适配模板,即刻提升专业度

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT数据可视化建议 在利用ChatGPT辅助数据分析与可视化时&#xff0c;关键在于将模型生成的结构化洞察高效映射到视觉表达层。ChatGPT本身不直接渲染图表&#xff0c;但可精准生成符合主流库&#…...

ICLR 2026小米AI 技术深度解读

注&#xff1a;小米最新的 AI 顶会成果实际入选了 ICLR 2026&#xff08;国际学习表征会议&#xff09;&#xff0c;推测您提到的 ICML 为会议名称的混淆&#xff0c;本文将基于小米此次入选的核心研究成果&#xff0c;以及配套的 MiMo-V2.5 系列技术&#xff0c;按您要求的五大…...

【深度解析】从 Mythos 到 DeepSeek 降价:大模型工程化选型、成本控制与 API 实战

摘要 近期 AI 大模型市场持续加速迭代&#xff1a;Anthropic Mythos 进入部署测试信号增强&#xff0c;OpenAI、Gemini 系列持续升级&#xff0c;DeepSeek 则通过永久降价重塑开发成本结构。本文从工程视角解析模型发布信号、Agentic 系统成本模型&#xff0c;并给出 OpenAI 兼…...

Android 框架入门到实战:从系统架构到四大组件,面试官问的全在这了(附流程图)

Android 框架入门到实战:从系统架构到四大组件,面试官问的全在这了(附流程图) 目录 一、Android 系统架构 二、四大组件概览 三、Activity 详解 3.1 生命周期 3.2 四种启动模式 3.3 Activity 之间的数据传递 四、Service 详解 五、BroadcastReceiver 详解 六、ContentProv…...

OpenCV实战:用Python从零实现Canny边缘检测(含完整代码与调参技巧)

OpenCV实战&#xff1a;用Python从零实现Canny边缘检测&#xff08;含完整代码与调参技巧&#xff09;计算机视觉领域中&#xff0c;边缘检测是图像分析的基础步骤之一。1986年由John F. Canny提出的Canny边缘检测算法&#xff0c;至今仍是效果最佳的边缘检测方法之一。本文将带…...

从‘栅栏’看频谱:一个音频信号处理的例子,讲透FFT分辨率与泄漏的权衡

从‘栅栏’看频谱&#xff1a;一个音频信号处理的例子&#xff0c;讲透FFT分辨率与泄漏的权衡想象你正在调试一段钢琴录音&#xff0c;其中有两个非常接近的音符——比如C4&#xff08;261.63Hz&#xff09;和C#4&#xff08;277.18Hz&#xff09;。在频谱分析仪上&#xff0c;…...

破解‘特质波动率之谜’?用Python回测A股创业板数据,看看风险与收益到底啥关系

特质波动率与A股创业板收益关系的Python实证研究 现象背后的思考&#xff1a;为什么特质波动率会引发争议&#xff1f; 2006年Ang等人的研究像一颗投入金融学平静湖面的石子&#xff0c;激起了持续至今的涟漪。他们发现了一个与传统金融理论相悖的现象&#xff1a;高特质波动率…...

多重检验策略:提升NPLM信号无关搜索的鲁棒性与均匀性

1. 项目概述在粒子物理实验数据分析中&#xff0c;我们常常面临一个核心困境&#xff1a;我们不知道新物理信号会以何种形式出现。传统的“模型依赖”搜索&#xff0c;比如针对特定质量的希格斯玻色子或暗物质候选粒子&#xff0c;需要预先定义一个精确的理论模型。然而&#x…...

对称性自适应机器学习力场:高效精准计算碳纳米管声子谱

1. 项目概述&#xff1a;当机器学习“学会”了对称性在计算材料科学领域&#xff0c;我们常常面临一个经典的“精度-效率”困境。一方面&#xff0c;基于第一性原理的密度泛函理论&#xff08;DFT&#xff09;计算&#xff0c;能提供近乎量子力学精度的结果&#xff0c;是探索材…...

【AI问答/前端】前端瞒天过海局(三)

问三&#xff1a;还有一件事&#xff0c;就是浏览器按钮的前进后退&#xff0c;他真实还原了js改前端的过程&#xff0c;就好像真的有过访问纪录&#xff0c;这个是JS纪录下了自己的路由操作历史&#xff0c;改的浏览器地址栏&#xff1f;还是这个路由操作历史真的是写进了浏览…...

【AI问答/前端】现代前端的满天过海局(二)

现在JS能改浏览器的东西了?他不是被限在操作html里面了吗?笼子里面的狗不可能自己把门外的插销打开吧?好你这个“笼子里的狗和门外插销”的比喻简直绝了&#xff01;这说明你对浏览器的安全沙箱机制&#xff08;Sandbox&#xff09;有着极其深刻且正确的防范意识。你的直觉没…...

Android 全栈体系 150 讲 - 49 深度完整版 Android 常用设计模式 + 架构模式 源码剖析、业务落地、面试精讲

...

基于静态动态障碍物DWA、DWA+RRT*、改进A*、RRT* 2D和3D的路径规划算法Matlab代码

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 &#x1f381…...