FEATURED · 精选文章

Data-Science-For-Beginners 课后实战:用 5 个直方图讲透一个数据集的分布故事

发布时间 / 2026/9/14 14:26:37
来源 / 创域科博编辑部
栏目 / 资讯中心
Data-Science-For-Beginners 课后实战:用 5 个直方图讲透一个数据集的分布故事 Data-Science-For-Beginners 课后实战用 5 个直方图讲透一个数据集的分布故事【免费下载链接】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 课程「可视化分布Visualizing Distributions」一课的课后作业实战指南。课程配套作业要求你抛开课程自带的明尼苏达州鸟类数据集data/birds.csv自选一个新的数据集用 Jupyter Notebook 讲述一段数据故事并保证至少使用 5 个直方图来支撑你的发现。读完本文你将掌握直方图与密度图的完整使用方法bins 调节、数据过滤、2D 直方图、基于文本分类的叠加直方图、Seaborn KDE 平滑曲线并理解一份达到「优秀」等级的作业应该具备哪些要素。作业任务说明用直方图讲故事作业原文translations/fr/3-Data-Visualization/10-visualization-distributions/assignment.md给出的任务非常聚焦到目前为止你已经用明尼苏达州鸟类数据集探索了鸟类的数量与种群密度信息。现在请把这些技术应用到另一个数据集上例如可以从 Kaggle 等数据平台获取。构建一个 Notebook 来讲述这个数据集的故事并且在讨论数据时务必使用直方图。换言之作业的技术核心只有两件事换一个真实数据集以及用直方图作为主要可视化手段完成探索性数据分析。它不是简单的「画图练习」而是要求你通过至少 5 个不同角度的直方图逐步发现并讲清楚数据中的真实规律。评分标准从「合格」到「优秀」的差距作业原文同时给出了明确的评分表Rubric这是检验你是否达标的最直接依据优秀Exemplaire合格Adéquat待改进À améliorer提交的 Notebook 包含关于该数据集的注释包括数据来源并使用至少 5 个直方图来发现数据事实提交的 Notebook 注释不完整或存在 bug提交的 Notebook 没有注释且包含 bug对照这张表可以提炼出三条硬性要求注释annotations必须完整每个直方图单元格都要配 Markdown 说明——这个图在看什么、发现了什么规律、为什么这样设置参数。数据来源也要在开头注明。直方图数量不少于 5 个这是「优秀」档的数量下限且每个图都应为某个数据事实服务而不是凑数。代码必须可运行、无 bug合格档可以容忍「注释不完整或 bug」但优秀档两者都不允许。要一次性满足这三条你需要先熟练掌握直方图的各种用法——这正是上一课课程3-Data-Visualization/10-visualization-distributions/README.md的核心内容。课前技术回顾一用 Matplotlib 直方图观察数值分布课程配套 Notebook 位于 3-Data-Visualization/10-visualization-distributions/notebook.ipynb法语译本对应 translations/fr/3-Data-Visualization/10-visualization-distributions/notebook.ipynb示例数据为仓库根目录下的 data/birds.csv共 443 行含 Name、ScientificName、Category、Order、Family、Genus、ConservationStatus 及 6 个数值列MinLength、MaxLength、MinBodyMass、MaxBodyMass、MinWingspan、MaxWingspan。先在 Notebook 中导入 Pandas 与 Matplotlib 并加载数据import pandas as pd import matplotlib.pyplot as plt birds pd.read_csv(data/birds.csv) birds.head()直方图是观察单变量数值分布的首选工具它把数值区间切成若干「箱子」bins统计每个箱子内的样本数量从而直观显示数据在数值轴上的起伏。以最大体重为例birds[MaxBodyMass].plot(kindhist, bins10, figsize(12, 12)) plt.show()从这张图可以立刻读出数据集里 400 多只鸟的 MaxBodyMass 绝大多数落在 2000 以下分布明显右偏。bins 参数直接决定观察粒度——课程 README 中演示了把 bins 从 10 提高到 30 的效果birds[MaxBodyMass].plot(kindhist, bins30, figsize(12, 12)) plt.show()bins 增大后分布细节被进一步放大。实战中应该按数据范围与样本量反复尝试 bins 取值10、20、30、40…并在注释里说明哪个粒度最能揭示规律。当分布被少数极端值「拖偏」时可以先过滤再绘图。课程演示了只保留 MaxBodyMass 在 1 到 60 之间的记录再画 40 个箱子的直方图filteredBirds birds[(birds[MaxBodyMass] 1) (birds[MaxBodyMass] 60)] filteredBirds[MaxBodyMass].plot(kindhist, bins40, figsize(12, 12)) plt.show()过滤后的直方图左偏程度明显降低分布形态更清晰。✅ 课程还提醒你可以尝试其他过滤条件甚至去掉[MaxBodyMass]这个列过滤用filteredBirds.plot(...)观察带标签的多列分布。如果你想一次性对比两个数值变量的联合分布Matplotlib 提供了内置的 2D 直方图hist2d用颜色亮度表现收敛程度x filteredBirds[MaxBodyMass] y filteredBirds[MaxLength] fig, ax plt.subplots(tight_layoutTrue) hist ax.hist2d(x, y)结果显示出 MaxBodyMass 与 MaxLength 沿一条预期轴线上的相关趋势并有一个明显的强收敛点——这就是「用一个直方图发现一个数据事实」的典型范例。课前技术回顾二直方图如何处理文本类数据直方图默认面向数值数据但鸟类数据集的 ConservationStatus保护状态列是文本。课程3-Data-Visualization/10-visualization-distributions/README.md明确说明这些缩写来自 IUCN 红色名录分类体系CR极危Critically EndangeredEN濒危EndangeredEX灭绝ExtinctLC无危Least ConcernNT近危Near ThreatenedVU易危Vulnerable处理文本数据的标准做法是按类别切片取值再在同一张图上叠加多个半透明直方图。课程用 filteredBirds 的 MinWingspan 按保护状态分组绘图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()关键技巧解读loc[条件, 列名]负责按类别切片形成 6 个一维数组alpha0.5让叠加的直方图半透明避免后绘制的柱子完全遮住前面的每类指定独立color与label最后用plt.legend()生成图例。课程结论MinWingspan 与保护状态之间并没有明显的相关关系。你可以照此方法去测试数据集中的其他元素如 MaxBodyMass、MaxLength 与各分类字段的组合寻找真正有意义的关联——这本身就是作业里「发现数据事实」的过程。课前技术回顾三用 Seaborn 密度图补充平滑视角直方图是「阶梯状」的若要观察更平滑的概率密度轮廓可以引入 Seaborn 的kdeplot核密度估计。课程 README 中的示范代码import seaborn as sns sns.kdeplot(filteredBirds[MinWingspan]) plt.show()KDE 曲线比直方图更平滑、更适合同时叠加多条分布但正如课程引述的 Seaborn 官方说明如果底层分布有界或不光滑KDE 可能引入失真异常值同样会破坏图表质量。用bw_adjust参数可以控制平滑程度——数值越小曲线越贴合原始数据sns.kdeplot(filteredBirds[MaxBodyMass], bw_adjust.2) plt.show()KDE 还能处理更高维度的对比比如按 Order目分组绘制 MaxBodyMass 的密度曲线或直接在二维平面上叠加两个变量的密度与分类信息sns.kdeplot( datafilteredBirds, xMaxBodyMass, hueOrder, fillTrue, common_normFalse, palettecrest, alpha.5, linewidth0, ) sns.kdeplot(datafilteredBirds, xMinLength, yMaxLength, hueConservationStatus)对于作业而言KDE 不是必需品评分只要求直方图但它能让你的 Notebook 在「优秀」基础上更有说服力尤其适合用来验证直方图得出的结论是否稳健。从零完成作业一份可复制的操作路线图结合上面的技术要点给出达到「优秀」档的具体执行步骤选数据集并注明来源从 Kaggle 等公开平台挑选一个有 24 个数值列 12 个类别列的数据集样本量建议在数百到数千行。Notebook 第一个 Markdown 单元格写清数据集名称、来源 URL、字段含义与数据规模——这直接对应评分表中的「包括其来源」。加载与初步探查用pd.read_csv(...)加载紧接着df.head()、df.info()、df.describe()熟悉数据形态作为第一个「故事段落」。规划至少 5 个直方图每个回答一个问题。可以参考以下模板直方图 1单个关键数值列的全局分布bins10 与 bins30 对比说明粒度影响直方图 2过滤后剔除极端值的同一列分布注释过滤条件与原因直方图 3另一个数值列的分布或同一列按某类别字段分组后的叠加直方图直方图 42D 直方图hist2d探索两个数值列的相关性直方图 5针对你的核心假设设计的分布对比图如按组别叠加、按时间分箱等。每个图配一段 Markdown 注释先说「我画了什么、参数为什么这样设」再说「我从中发现了什么事实」最后说「下一步想验证什么」。让整份 Notebook 形成「数据故事」而非代码碎片。自检评分表逐条对照——注释是否完整是否恰好覆盖至少 5 个直方图所有单元格是否从干净内核按序运行无报错仓库内可参考的资源课程原文法语版translations/fr/3-Data-Visualization/10-visualization-distributions/README.md英文原版见 3-Data-Visualization/10-visualization-distributions/README.md课程配套练习 Notebook3-Data-Visualization/10-visualization-distributions/notebook.ipynb官方参考答案3-Data-Visualization/10-visualization-distributions/solution/notebook.ipynb其中完整展示了 bins 实验、数据过滤、hist2d、按 ConservationStatus 叠加直方图、KDE 平滑与二维 KDE 等全套流程是验证你作业思路是否正确的绝佳对标示例数据集data/birds.csv课程自带鸟类数据data/目录下还有diabetes.tsv、mushrooms.csv、taxi.csv等多个备选数据集全局作业文件translations/fr/3-Data-Visualization/10-visualization-distributions/assignment.md。最后提醒完成作业时建议把答案 Notebook 与课程练习分开存放先独立画图、再对照 solution/notebook.ipynb 检查思路只要你的 5 个直方图各自讲清了一个可验证的数据事实这份作业就已经稳稳落在「优秀」档。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻