ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Data Science For Beginners 第10课作业实战:用直方图与密度图讲好一个新数据集的故事

Data Science For Beginners 第10课作业实战:用直方图与密度图讲好一个新数据集的故事 Data Science For Beginners 第10课作业实战用直方图与密度图讲好一个新数据集的故事【免费下载链接】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 课程第 10 课《Visualizing Distributions可视化数据分布》的课后作业Apply your skills展开该作业要求学习者在前几课使用明尼苏达鸟类数据集Minnesota birds掌握直方图与密度图技术之后换一个全新的数据集用 Jupyter Notebook 讲一个完整的数据故事并且至少使用 5 个直方图来支撑你的分析。读完本文你将获得一份可直接照做的作业路线图从选数据集、写数据来源注释到五种直方图/KDE 密度图的落地代码模板再到对照评估量规的自检清单全程紧扣本课讲义与参考解答中的真实代码。一、先读懂作业要求这是一道应用型实践题作业原文位于 translations/en/3-Data-Visualization/10-visualization-distributions/assignment.md核心指令只有两条却规定了完整的交付物形态换数据集此前几课你一直在用明尼苏达鸟类数据集研究鸟的数量与种群密度现在请换一个不同的数据集例如来自 Kaggle 等公开数据平台的真实数据把已学会的分布可视化技术迁移过去。交付一个会讲故事的 Notebook新建一个 notebook围绕该数据集讲一个完整的故事并且务必在分析中使用直方图histograms。与之配套的评估量规Rubric把优秀标准定义得很具体等级要求优秀Exemplary提供包含数据集注释尤其要写明数据来源的 notebook并且至少使用 5 个直方图去发现数据事实合格Adequate提供 notebook但注释不完整或包含错误待改进Needs Improvement提供 notebook但没有任何注释且包含 bug不难看出这份作业的评分维度实际上只有三个注释含来源完整、直方图数量 ≥ 5、代码无错误。本文后面的所有内容都是围绕如何同时满足这三点展开的。二、作业背后的技术工具箱本课讲义的分布可视化方法作业要求应用你已掌握的技巧因此动手之前先把第 10 课讲义 3-Data-Visualization/10-visualization-distributions/README.md 中的核心方法梳理成一张能力清单。你在新数据集上要复用的正是这些方法基础直方图histogram用bins参数控制分箱数量观察数据沿坐标轴的分布形态数据过滤 直方图先按条件筛选子集再绘制直方图消除极端值造成的左偏失真2D 直方图hist2d用颜色亮度同时展示两个分布之间的聚合与相关性分类变量叠加直方图按类别如保护状态切分数据用半透明叠加的多组直方图做对比核密度估计图Seaborn KDE plot用平滑曲线替代阶梯状直方图并可通过bw_adjust、hue、fill等参数做精细化控制。下面逐一给出可在新数据集上直接改写的模板代码。这些代码的原始形态均来自讲义与参考解答solution/notebook.ipynb我们以仓库自带数据 data/birds.csv 作为演练样例帮助你理解每一段代码的意图随后替换成你自己的数据即可。2.1 加载数据含来源注释的起点课程主笔记本 notebook.ipynb 以三行代码开始import pandas as pd import matplotlib.pyplot as plt birds pd.read_csv(../../../data/birds.csv) birds.head()注在仓库根目录下直接运行时可写作pd.read_csv(data/birds.csv)。从讲义所在目录3-Data-Visualization/10-visualization-distributions/相对仓库根目录需要向上三级因此是../../../data/birds.csv。birds.csv的字段包括Name鸟名、ScientificName学名、Category类别、Order目、Family科、Genus属、ConservationStatus保护状态、MinLength/MaxLength最小/最大体长、MinBodyMass/MaxBodyMass最小/最大体重、MinWingspan/MaxWingspan最小/最大翼展。给新手的建议在你自己的 notebook 里第一个 Markdown 单元格就应写下数据来自哪里、字段含义是什么、你想回答什么问题。这正是量规中注释含来源要求的落点。2.2 方法一基础直方图 调节 bins 粒度先对单个数值列绘制直方图观察整体分布。讲义中依次使用bins10与bins30对比粒度birds[MaxBodyMass].plot(kindhist, bins10, figsize(12, 12)) plt.show()birds[MaxBodyMass].plot(kindhist, bins30, figsize(12, 12)) plt.show()从图中可以看到数据集里 400 多种鸟的MaxBodyMass大多落在 2000 以下把bins从 10 提高到 30 后分布细节更加清晰。这就是同一个问题、不同参数讲出不同层次的典型示范——在你的新数据集上请务必实验不同的bins取值如 10、20、30、40并在注释里写下一句话说明你观察到的形态变化。2.3 方法二先过滤、再画直方图当数据整体偏斜时可以先用布尔条件筛出感兴趣的子集让直方图更聚焦filteredBirds birds[(birds[MaxBodyMass] 1) (birds[MaxBodyMass] 60)] filteredBirds[MaxBodyMass].plot(kindhist, bins40, figsize(12, 12)) plt.show()讲义里还留了一个小练习去掉[MaxBodyMass]这一列过滤直接对过滤后的filteredBirds调用.plot(kindhist)就能看到带标签按各数值列并排的分布——这也是多直方图的一种快速产出方式。2.4 方法三2D 直方图探索两个分布的关系Matplotlib 提供hist2d用颜色亮度越亮代表该处数据越聚集同时呈现两个变量的联合分布x filteredBirds[MaxBodyMass] y filteredBirds[MaxLength] fig, ax plt.subplots(tight_layoutTrue) hist ax.hist2d(x, y)讲义指出两者沿一条预期的主轴呈现明显相关且存在一个特别强的汇聚点。这种二维直方图找相关性的思路可以原样迁移到你的新数据集挑两个你认为可能存在关联的数值列先画 hist2d 验证直觉。2.5 方法四按分类变量叠加多组直方图当需要按文本类字段如保护状态对比分布时可以先按类别切片再用半透明alpha叠加绘制。讲义用ConservationStatus对比各状态鸟的最小翼展x1 filteredBirds.loc[filteredBirds.ConservationStatusEX, MinWingspan] x2 filteredBirds.loc[filteredBirds.ConservationStatusCR, MinWingspan] x3 filteredBirds.loc[filteredBirds.ConservationStatusEN, MinWingspan] x4 filteredBirds.loc[filteredBirds.ConservationStatusNT, MinWingspan] x5 filteredBirds.loc[filteredBirds.ConservationStatusVU, MinWingspan] x6 filteredBirds.loc[filteredBirds.ConservationStatusLC, MinWingspan] kwargs dict(alpha0.5, bins20) plt.hist(x1, **kwargs, colorred, labelExtinct) plt.hist(x2, **kwargs, colororange, labelCritically Endangered) plt.hist(x3, **kwargs, coloryellow, labelEndangered) plt.hist(x4, **kwargs, colorgreen, labelNear Threatened) plt.hist(x5, **kwargs, colorblue, labelVulnerable) plt.hist(x6, **kwargs, colorgray, labelLeast Concern) plt.gca().set(titleConservation Status, ylabelMin Wingspan) plt.legend()需要说明的是数据中的保护状态缩写来自 IUCN 红色名录分级CR极危、EN濒危、EX灭绝、LC无危、NT近危、VU易危。讲义得出的结论是最小翼展与保护状态之间看不出明显相关性——这本身就是一种故事有时直方图的结论是没有显著关系如实记录它同样是合格的分析。你可以继续用这套方法测试数据集里的其他字段并尝试不同过滤条件看能否找到相关性。2.6 方法五Seaborn 核密度估计图KDE直方图是阶梯状的不够平滑Seaborn 的kdeplot能画出连续的概率密度曲线让分布形态更直观import seaborn as sns import matplotlib.pyplot as plt sns.kdeplot(filteredBirds[MinWingspan]) plt.show()sns.kdeplot(filteredBirds[MaxBodyMass]) plt.show()如果觉得曲线过于平滑可以用bw_adjust参数调节带宽数值越小曲线越贴近原始起伏sns.kdeplot(filteredBirds[MaxBodyMass], bw_adjust.2) plt.show()Seaborn 官方文档提醒相对于直方图KDE 在多分布对比时更不易杂乱、更易解读但如果底层分布有界或不平滑KDE 也可能引入失真。换句话说离群值依然会让图表失真——写进你的作业注释里会是很加分的批判性思考。更进一步可以用hue按分类字段分组、用fill填充面积几行代码就能画出按鸟目分组的最大体重密度对比sns.kdeplot( datafilteredBirds, xMaxBodyMass, hueOrder, fillTrue, common_normFalse, palettecrest, alpha.5, linewidth0, )也可以同时映射多个变量形成二维密度图并按类别着色sns.kdeplot(datafilteredBirds, xMinLength, yMaxLength, hueConservationStatus)讲义抛出的后续问题是图中Vulnerable易危鸟群在体长上的聚集是否具有实际意义——把这类现象 → 问题 → 讨论的链条写进 notebook正是讲好故事的精髓。三、按至少 5 个直方图的要求排布你的分析把上面的方法映射成直方图数量的达成清单你就不需要担心凑不够 5 个整体分布直方图对核心数值列画一个基础直方图方法一并实验至少两种bins过滤后的直方图对筛选后的子集再画一个方法二对比过滤前后形态差异2D 直方图hist2d探索两个数值列的关系方法三分类叠加直方图按某个分类字段叠加多组直方图方法四一组plt.hist循环内每次调用都算一个KDE 密度图用sns.kdeplot补充至少一张平滑密度图方法五必要时再用hue做分组对比。建议的 notebook 结构可直接照抄为 Markdown 标题标题与数据来源说明谁发布的、何时、字段含义数据概览df.head()、df.describe()、df.info()故事主线你好奇的 23 个问题每个问题对应 12 个直方图/密度图配一段我看到了什么的解读结论小节汇总你从分布中发现的 3 个事实。四、数据集选择建议如何换一个数据集作业明确要求换数据集。选数据的三个原则优先选有故事感的真实数据人口、天气、电商订单、健康指标等自带业务背景的数据比纯随机数更容易讲出结论优先选数值 分类混合的数据因为作业方法同时覆盖数值直方图bins/hist2d和分类叠加hue/按类别切片两类字段齐全的数据能让你完整复用五种方法数据规模适中、无需清洗过度几百到几万行、缺失值较少的数据最合适把精力留给分析和写作。公开数据可以来自 Kaggle、UCI 机器学习仓库等平台作业原文点名了 Kaggle 作为示例来源。在你 notebook 的第一格务必写明来源链接与下载日期——这是量规Exemplary等级的硬性要求。五、对照评估量规做最终自检提交前逐条对照 assignment.md 中的量规自检Notebook 已提供有关于数据集的注释明确包含数据来源至少使用了5 个直方图基础直方图、过滤直方图、2D 直方图、分类叠加直方图、KDE 密度图均计入每个直方图都有对应解读构成完整的故事线代码可运行、无 bug建议自上而下完整执行一遍 notebook清空输出后重新 Run All 验证。满足以上全部条件即达到优秀Exemplary标准若注释不完整或代码有错则落入合格没有注释且含 bug 则是最低档。六、进一步探索直方图的应用场景研究讲义末尾还留了一个挑战Challenge直方图比基础散点图、柱状图、折线图更高级请上网搜索直方图的实际使用案例思考它们被用在哪些领域、通常用来论证什么问题。完成作业后这个问题值得认真做一次检索——它能把你的视野从会画图提升到知道在什么业务问题里该画直方图这也是数据科学家选图能力的核心。参考资源索引作业原文translations/en/3-Data-Visualization/10-visualization-distributions/assignment.md第 10 课讲义含全部直方图与密度图代码3-Data-Visualization/10-visualization-distributions/README.md课程主笔记本3-Data-Visualization/10-visualization-distributions/notebook.ipynb参考解答笔记本3-Data-Visualization/10-visualization-distributions/solution/notebook.ipynb演示数据data/birds.csv依此路线执行你交付的将不仅是一个完成作业的 notebook更是一份具备数据来源、分析问题、可视化证据与结论的完整数据叙事作品。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表