——数据科学生命周期中的“分析“阶段)
Data Science For Beginners 实战用 Pandas 完成探索性数据分析EDA——数据科学生命周期中的分析阶段【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners本篇文章围绕 Data Science For Beginners 课程第 15 课展开系统讲解数据科学生命周期Data Science Lifecycle中分析Analyzing阶段的核心方法论——探索性数据分析EDA。你将基于仓库内真实的 emails.csv 邮件词频数据集与配套 notebook.ipynb逐一掌握 Pandas 的describe()、sample()、query()、isna()等关键函数并学会用可视化与缺失值检查为后续建模与数据清洗铺路文章最后还给出纽约出租车小费季节分析的实战作业帮助你立刻上手完整的 EDA 流程。图片说明Data Science Lifecycle: Analyzing 一课的手绘草图笔记概括了本章分析阶段在生命周期中的位置与核心动作。一、分析阶段在生命周期中的定位我们如何确认数据能回答问题在数据科学生命周期中捕获Capturing阶段负责获取数据并定义待解决的问题但随之而来的疑问是我们怎么知道这些数据足以支撑最终结果分析阶段正是用来回答这一问题的——它确认数据能够回答既定问题或解决特定问题同时关注模型是否正确回应了这些问题与难题。一个数据科学家在拿到数据时通常会问自己三个问题我有足够的数据来解决这个问题吗这些数据对该问题而言质量可接受吗如果通过数据发现了额外信息我们是否应该考虑更改或重新定义目标探索性数据分析EDAExploratory Data Analysis就是认识数据的过程它通过一系列技术手段定义数据内部的特性与关系用来回答上述问题同时识别使用该数据集时可能遇到的挑战并可作为数据建模前的准备步骤。本章聚焦的正是 EDA 的几种核心技巧。二、数据剖析Data Profiling与描述性统计describe()如何评估我是否有足够的数据答案是数据剖析Data Profiling——借助**描述性统计Descriptive Statistics**技术对数据集做整体汇总与归纳。二者的分工是数据剖析帮助我们理解**有什么**是可用可得的描述性统计帮助我们理解**有多少**是可用的。在本课程之前的章节中我们已经多次使用 Pandas 提供描述性统计。DataFrame.describe()就是最常用的入口它针对数值型数据返回count非空值的数量用于判断样本量与缺失情况mean / std均值与标准差反映数据的集中趋势与离散程度min / max最小值与最大值快速锚定数值范围25% / 50% / 75%四分位数勾勒数据分布轮廓。以仓库中的 notebook.ipynb 为例它从 data/emails.csv 加载邮件数据集该数据集统计了若干常见单词在邮件中的出现次数邮件来源匿名import pandas as pd # 加载数据集 path ../../data/emails.csv email_df pd.read_csv(path) # 对邮件数据集应用 describe print(email_df.describe())上述代码的真实输出节选如下每一列代表一个常见单词每一行描述该词频统计量the to ect and for of count 406.000000 406.000000 406.000000 406.000000 406.000000 406.000000 mean 7.022167 6.519704 4.948276 3.059113 3.502463 2.662562 std 10.945522 9.801907 9.293820 6.267806 4.901372 5.443939 min 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 25% 1.000000 1.000000 1.000000 0.000000 1.000000 0.000000 50% 3.000000 3.000000 2.000000 1.000000 2.000000 1.000000 75% 9.000000 7.750000 4.000000 3.000000 4.750000 3.000000 max 99.000000 88.000000 79.000000 69.000000 39.000000 57.000000可以看到406 封邮件样本中the的平均出现次数约 7 次、最大值 99 次而a的平均值高达 57、最大值 843输出后半部分列间差异悬殊提示数据分布极不均衡。通过describe()这样的描述性统计你可以快速评估自己手头有多少数据、以及是否还需要更多数据。从 data/emails.csv 的文件结构看该表共 17 列首列为Email No.邮件编号其余 16 列the、to、ect、and、for、of、a、you、in、on、is、this、i、be、that、will均为单词词频计数因此describe()天然适用于除编号列外的全部数值列。三、采样Sampling用sample()快速窥探大数据集在大数据集上探索全部数据通常非常耗时这类重体力活一般交给计算机完成。但**采样Sampling**是理解数据的得力工具它让我们对数据集里有什么、代表什么有更直观的感受。基于样本你可以运用概率与统计知识对整体数据得出一般性结论。关于采样量并无固定规则但需要记住一个关键原则采样的数据越多你对整体数据的推断就越精确。Pandas 提供了DataFrame.sample()函数只需传入希望获得的随机样本数量即可# 从邮件数据集中随机采样 10 封邮件 print(email_df.sample(10))notebook 中的真实输出节选展示了抽样结果Email 151中the出现 0 次、a出现 15 次而Email 321中a出现高达 187 次。这种随机抽样能快速让你感受到词频的稀疏性与极端值分布为后续判断特征是否有用提供直觉依据。四、查询Querying用query()精确聚焦感兴趣的数据与随机采样不同**查询Querying**赋予你完全的控制权你可以针对自己感兴趣的数据子集提出具体问题。Pandas 的DataFrame.query()允许通过类布尔表达式直接筛选行从而获得关于数据的简单而精确的回答。notebook 中的示例是返回所有to出现次数多于the的邮件# 返回所有 to 出现次数多于 the 的邮件行 print(email_df.query(the to))该查询返回了169 行 × 17 列的结果例如Email 2the8、to13、Email 5157the4、to13等。通过这类条件查询你可以快速验证某些单词是否存在共现倾向之类的假设为特征工程与建模选型提供线索。五、用可视化探索不必等到清洗完成你不必等到数据彻底清洗和分析完毕才开始画图。事实上在探索阶段就建立可视化往往能更早地发现数据中的模式patterns、关系relationships和问题problems。可视化还有另一层价值它是一种与不直接参与数据管理的人沟通的手段可以用来分享发现、澄清捕获阶段未覆盖的疑问。关于直方图、箱线图、散点图、饼图等主流探索型图表的用法可深入学习仓库中的 3-Data-Visualization 章节第 0913 课分别覆盖数量、分布、比例、关系与有意义可视化的绘制方法。六、识别不一致与缺失值isna()/isnull()本章介绍的所有技巧描述性统计、采样、查询、可视化都能帮助你发现缺失值或不一致值而 Pandas 还提供了专门的函数来主动检查它们isna()或isnull()逐元素判断是否为缺失值两者功能等价返回布尔掩码配合sum()可统计每列的缺失数量。检查出缺失值只是第一步更重要的是探究这些值最初为什么缺失——是采集环节遗漏、合并导致的错位还是数据本身天然不含该字段理解缺失成因才能决定后续应该删除、填充还是保留。关于缺失值处理的具体动作清洗、填充、聚合、压缩等可参考仓库中 数据准备Data Preparation课程的 notebook 继续深入。七、实战作业纽约出租车小费季节分析为巩固 EDA 技能第 15 课配套了实战作业 Udforskning for svarExploring for answers它是上一课 评估数据集作业 的延续。业务问题为纽约市的黄色出租车乘客在冬季还是夏季给司机的小费更多你的团队正处于数据科学生命周期的分析Analyzing阶段负责对数据集进行探索性数据分析。仓库提供了作业 notebookassignment.ipynb数据集data/taxi.csv包含 2019 年1 月冬季与 7 月夏季的约 200 笔出租车交易记录。从 notebook 的加载输出可以看到taxi.csv共18 列包括VendorID供应商、tpep_pickup_datetime/tpep_dropoff_datetime上下车时间、passenger_count乘客数、trip_distance行程距离、PULocationID/DOLocationID上下车区域、payment_type支付方式、fare_amount车费、tip_amount小费、total_amount总额、congestion_surcharge拥堵附加费等字段。作业要求你运用本章学到的 EDA 技巧建议在 notebook 中自行添加分析单元回答以下三个问题数据中还有哪些因素可能影响小费金额例如行程距离、乘车人数、支付方式、时段、拥堵附加费等哪些列很可能不是回答客户问题所必需的基于现有数据是否存在季节性小费行为的证据作业评价标准Rubric优秀Exemplary达标Adequate需改进Needs Improvement充分运用多项 EDA 技术对三个问题给出有数据支撑的完整分析与结论应用了部分 EDA 技术能回答部分问题但论证不充分未完成分析或仅给出无依据的主观判断作业的典型开展路径可以是先用describe()查看tip_amount等关键列的分布与极端值 → 用sample()抽查原始记录确认数据形态 → 用query()分别筛出 1 月与 7 月的记录对比小费均值 → 用isna()检查缺失 → 最后用箱线图/直方图可视化两季小费分布差异。八、小结分析阶段是数据科学生命周期中承上启下的关键一环它承接捕获阶段的原始数据验证其是否足以支撑既定问题又为处理与建模阶段输送经过理解的数据。本章介绍的 EDA 工具箱——describe()描述性统计、sample()采样、query()查询、可视化探索与isna()缺失值检查——共同构成了数据科学家认识数据、发现问题、验证假设的完整方法论。配合仓库中的 notebook.ipynb 逐单元运行再完成出租车小费分析作业你就能建立一套可复用的 EDA 实战流程。说明本文基于 Data Science For Beginners 仓库 translations/da/4-Data-Science-Lifecycle/15-analyzing/README.md 课程文档整理代码输出均取自仓库内 notebook.ipynb 与 assignment.ipynb 的真实运行结果。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考