多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Data-Science-For-Beginners 数据科学生命周期:用 Pandas 完成“Analyzing”阶段的探索性数据分析实战指南

Data-Science-For-Beginners 数据科学生命周期:用 Pandas 完成“Analyzing”阶段的探索性数据分析实战指南 Data-Science-For-Beginners 数据科学生命周期用 Pandas 完成“Analyzing”阶段的探索性数据分析实战指南【免费下载链接】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 课《The Data Science Lifecycle: Analyzing》含其爱沙尼亚语译本 translations/et/4-Data-Science-Lifecycle/15-analyzing/README.md编写。课程将“分析Analyzing”置于数据科学生命周期中“确认数据能回答业务问题”的关键位置并以 Kaggle 邮件词频数据集与 Pandas 库为载体系统讲解探索性数据分析Exploratory Data AnalysisEDA的四种核心技术数据剖析与描述性统计、抽样与查询、可视化探索、缺失与不一致值检查。读完本文你将能够独立复现课程笔记本中的每一段代码并用同样的方法对任意 CSV 数据集完成一轮可交付的 EDA。一、“Analyzing”在数据科学生命周期中的位置课程开篇给出了本课在整个生命周期中的职责定义生命周期中的“分析”阶段用于确认数据能够回答被提出的问题或者能够解决特定问题这一步同时也要确认模型是否正确地针对了这些问题。本课聚焦于探索性数据分析EDA即定义数据内部特征features与关系relationships的一组技术并可直接用于为建模准备数据。回顾 第 14 课《Introduction to the Data Science Lifecycle》生命周期被划分为五个阶段Capturing采集、Processing处理、Analysis分析、Communication沟通、Maintenance维护。在采集阶段数据科学家在获取数据时通常会产生三个关键疑问而 EDA 正是对这三个疑问的回答机制我手上的数据量是否足以解决这个问题这些数据的质量是否满足该问题的要求如果通过数据发现了额外信息是否需要修改或重新定义目标正如课程所述“探索性数据分析是熟悉数据的过程它可以用来回答上述问题并识别出处理该数据集时会遇到的挑战。” 换言之EDA 不是建模前的“附加动作”而是验证“数据能否支撑最终结果”的必经环节。二、课程示例数据集邮件词频emails.csv课程明确指定了示例数据源一个来自 Kaggle 的邮件垃圾分类数据集用于展示如何用 Python 与 Pandas 应用 EDA。该数据集统计了一些常见英文单词在邮件中出现的次数邮件来源已匿名化仓库中对应的实际文件是 data/emails.csv共 406 行数据不含表头。文件表头如下第 1 列为邮件标识其余 15 列为词频特征Email No.,the,to,ect,and,for,of,a,you,in,on,is,this,i,be,that,will Email 1,0,0,1,0,0,0,2,0,0,0,1,0,2,0,0,0 Email 2,8,13,24,6,6,2,102,1,18,21,13,0,61,4,2,0从词频特征如the、to、ect等单词计数可以推断该数据集天然适合做文本分类场景的 EDA 练习既可以做统计剖析也可以做“词与词之间的相对关系”这类查询。课程配套的动手笔记本是 4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb其中包含 4 个代码单元格逐一对应下文的每一节技术要点且带有真实运行输出适合直接跟做。三、数据剖析、描述性统计与describe()课程提出的问题是“如何评估我们是否有足够的数据来解决这个问题”答案是数据剖析Data Profiling通过描述性统计Descriptive Statistics技术对数据集做概括性的信息汇总。课程对此有一句精炼的区分数据剖析帮助我们理解“我们手上有什么”而描述性统计帮助我们理解“我们手上有多少”。Pandas 的describe()函数是课程点名的核心工具前几课已多次使用它会对数值列一次性输出计数count、最大值max、最小值min、均值mean、标准差std以及分位数25%/50%/75%。在课程笔记本中对邮件数据集执行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 0.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这段输出本身就是 EDA 结论的一部分例如the列均值为 7.02 而标准差高达 10.95最大值 99说明词频呈明显的右偏长尾分布——少数邮件含有极高的单词重复量。这正是课程所说的“用描述性统计评估自己有多少数据、是否还需要更多”的具体做法如果某列的分布形态异常如标准差远大于均值往往意味着数据中存在需要进一步探查的极端样本。对应的笔记本代码notebook.ipynb 第 2 格# Using Describe on the email dataset print(email_df.describe())加载数据的第 1 格代码如下注意路径是相对于笔记本所在目录的import pandas as pd import glob # Loading the dataset path ../../data/emails.csv email_df pd.read_csv(path)四、抽样与查询sample()和query()课程指出在大数据集中逐条检查所有内容非常耗时这类工作通常交给计算机完成但抽样Sampling是理解数据的实用工具——它让你看清数据集里“装了什么”以及它“代表什么”。基于样本你可以运用概率论与统计学对数据做出一般性结论。课程还给出了关于样本量的提醒没有固定的规则规定应该抽样多少数据但要注意——抽样的数据越多你所能做出的概括就越精确。Pandas 提供sample()函数可以传入参数指定要获取多少条随机样本。课程笔记本中的实例与真实输出节选# Sampling 10 emails print(email_df.sample(10))Email No. the to ect and for of a you in on is this i 150 Email 151 0 1 2 0 3 0 15 0 0 5 0 0 7 380 Email 5147 0 3 2 0 0 0 7 0 1 1 0 0 3 19 Email 20 3 4 11 0 4 2 32 1 1 3 9 5 25 300 Email 301 2 1 1 0 1 1 15 2 2 3 2 0 8 167 Email 168 2 2 2 1 5 1 24 2 5 6 4 0 30 320 Email 321 10 12 4 6 8 6 187 5 26 28 23 2 171抽样结果会保留原始索引150、380、19……这一点在后续做数据清洗或样本核对时很有用。与“随机”的抽样相对查询Querying让你主动、可控地聚焦于有疑问的具体数据部分。课程强调两者是互补关系抽样用于获得总体印象查询用于回答你心中已有的具体假设。Pandas 的query()函数支持按条件筛选行课程实例是“返回to出现次数多于the的行”# Returns rows where there are more occurrences of to than the print(email_df.query(the to))真实运行输出的首尾几行节选Email No. the to ect and for of a you in on is this i 1 Email 2 8 13 24 6 6 2 102 1 18 21 13 0 61 3 Email 4 0 5 22 0 5 1 51 2 1 5 9 2 16 5 Email 6 4 5 1 4 2 3 45 1 16 12 8 1 52 390 Email 5157 4 13 1 0 3 1 48 2 8 26 9 1 45query()的条件表达式直接书写为字符串the toPandas 会解析其中的列名与比较运算符。从源码结构看query()与sample()都是DataFrame的标准方法前者接受 NumPy 表达式语法的字符串条件后者接受n样本数量等参数——课程正文与笔记本代码共同覆盖了这两个函数的最小可用形态。五、用可视化进行探索课程在这一节给出了两个关键观点不必等到数据彻底清洗和分析完毕才开始做可视化。事实上探索过程中拥有视觉呈现有助于在数据中识别模式patterns、关系relationships和问题problems。可视化还是与不直接管理数据的人沟通的手段可以成为分享与澄清“采集阶段未获回答的额外问题”的机会。课程在此指向了本仓库的可视化专题 3-Data-Visualization该目录包含 5 节内容数量可视化、分布可视化、比例可视化、关系可视化、有意义的可视化并配有R/子目录的 R 语言版本材料可作为 EDA 图表技巧的延伸阅读。结合本课的邮件数据集典型做法是对某一词频列如a做直方图或密度图直观验证前面describe()得出的“右偏长尾”结论。六、探索不一致性与缺失值isna()/isnull()课程总结道本课讲到的所有技术都有助于发现缺失或不一致的值而 Pandas 还提供了专门的检查函数。isna()或等价写法isnull()用于检测缺失值。课程特别强调了一个容易被忽略的点检查缺失值时重要的一步是探究这些值“为什么会变成这样”——追溯成因才能帮助你决定采取何种修复动作。课程将修复手段的讨论指向前置的数据准备阶段笔记本 2-Working-With-Data/08-data-preparation/notebook.ipynb形成“发现缺失 → 追溯成因 → 选择填补/删除策略”的完整闭环。在本课的邮件数据集中各词频列均为计数型整数理论上不应出现缺失因此对email_df执行isna()本身就是一个有价值的验证动作——它确认了数据质量为后续建模扫清了疑虑。七、课程作业纽约出租车冬季与夏季小费 EDA课程的 assignment.md 是第 14 课作业先对数据集做过粗看的延续要求把本课 EDA 技术落到一个真实业务问题上。客户问题纽约市黄色出租车乘客在冬季还是夏季给司机的小费更多你的团队处于数据科学生命周期的 Analyzing 阶段负责对该数据集做探索性数据分析。作业提供笔记本与一份包含2019 年 1 月和 7 月共 200 笔出租车交易的数据来自纽约市 Taxi Limousine Commission 公开数据。仓库中的实际数据文件是 data/taxi.csv共 199 行数据记录表头如下VendorID,tpep_pickup_datetime,tpep_dropoff_datetime,passenger_count,trip_distance,RatecodeID,store_and_fwd_flag,PULocationID,DOLocationID,payment_type,fare_amount,extra,mta_tax,tip_amount,tolls_amount,improvement_surcharge,total_amount,congestion_surcharge 2.0,2019-07-15 16:27:53,2019-07-15 16:44:21,3.0,2.02,1.0,N,186,233,1.0,12.0,1.0,0.5,4.08,0.0,0.3,20.38,2.5配套练习笔记本 4-Data-Science-Lifecycle/15-analyzing/assignment.ipynb 已预置了加载代码并在末尾留有空白单元格供你自行追加 EDAimport pandas as pd path ../../data/taxi.csv # Load the csv file into a dataframe df pd.read_csv(path) # Print the dataframe print(df)作业要求运用本课技术回答三个问题数据中还有哪些其他因素可能影响小费金额提示观察fare_amount、trip_distance、passenger_count、tolls_amount等列与tip_amount的关系哪些列最可能与客户问题无关、可以不用就目前已提供的数据而言是否出现任何季节性小费行为的证据对照本课方法这三个问题分别对应用query()或分组统计检验tip_amount与其他变量的关联、用数据剖析裁剪无关列如store_and_fwd_flag、improvement_surcharge、用describe()分别剖析 1 月与 7 月的tip_amount分布做对比。作业同时给出了评分表Exemplary / Adequate / Needs Improvement 三档用于自评 EDA 的完整性。八、小结与学习路径职责定位Analyzing 阶段回答“数据能否支撑业务问题”EDA 是它的主要手段四个核心动作describe()做剖析与描述性统计 →sample()随机抽样建立总体印象 →query()定向查询验证具体假设 → 可视化 isna()/isnull()发现模式与数据质量问题可复现材料课程笔记本 4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb含真实输出、示例数据 data/emails.csv、作业数据 data/taxi.csv 与作业说明 4-Data-Science-Lifecycle/15-analyzing/assignment.md。掌握这一课后建议按仓库目录顺序推进先完成出租车小费作业再进入第 16 课Communication把 EDA 结论转成沟通材料如需补齐图表技巧可回到 3-Data-Visualization 章节。爱沙尼亚语完整译本见 translations/et/4-Data-Science-Lifecycle/15-analyzing/README.md技术内容与英文原版一一对应可作双语对照阅读。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表