Data-Science-For-Beginners 第10课实战:用直方图与密度曲线可视化数据分布(Matplotlib + Seaborn 详解)

发布时间:2026/9/6 23:11:21

Data-Science-For-Beginners 第10课实战:用直方图与密度曲线可视化数据分布(Matplotlib + Seaborn 详解)
Data-Science-For-Beginners 第10课实战用直方图与密度曲线可视化数据分布Matplotlib Seaborn 详解【免费下载链接】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-visualization-distributions 一课展开以密歇根州鸟类数据集birds.csv为例系统讲解如何用 Matplotlib 直方图刻画数值型分布、用分组叠加直方图刻画分类变量分布、再用 Seaborn 的 KDE 密度曲线做平滑可视化。读完本文你将能独立完成从bins调参、数据过滤去偏到kdeplot分组密度绘图的完整分布分析流程并理解每个关键参数的作用。1. 课程背景birds 数据集本课承接第 9 课用散点图发现 Minnesota 鸟类数据中的异常值、对比不同目鸟类的最大体长。分布distribution回答的是数据沿某个坐标轴如何组织的问题例如400 多种鸟的最大翼展或最大体重的整体分布是什么样的课程使用仓库根目录下的 birds.csv共 443 条鸟类记录、13 个字段名称、学名、类别Category、目Order、科Family、属Genus、保护状态ConservationStatus以及体长/体重/翼展的上下限MinLength、MaxLength、MinBodyMass、MaxBodyMass、MinWingspan、MaxWingspan。在课程文件夹下的 notebook.ipynb 中导入 Pandas 与 Matplotlib 并加载数据代码从课程文件夹运行故数据路径为../../data/birds.csvimport pandas as pd import matplotlib.pyplot as plt birds pd.read_csv(../../data/birds.csv) birds.head()前 5 行如下与原课程文档一致NameScientificNameCategoryOrderFamilyGenusConservationStatusMinLengthMaxLengthMinBodyMassMaxBodyMassMinWingspanMaxWingspan0Black-bellied whistling-duckDendrocygna autumnalisDucks/Geese/WaterfowlAnseriformesAnatidaeDendrocygnaLC4756652102076941Fulvous whistling-duckDendrocygna bicolorDucks/Geese/WaterfowlAnseriformesAnatidaeDendrocygnaLC4553712105085932Snow gooseAnser caerulescensDucks/Geese/WaterfowlAnseriformesAnatidaeAnserLC6479205040501351653Rosss gooseAnser rossiiDucks/Geese/WaterfowlAnseriformesAnatidaeAnserLC57.364106615671131164Greater white-fronted gooseAnser albifronsDucks/Geese/WaterfowlAnseriformesAnatidaeAnserLC6481193033101301652. 快速窥探分布散点图的局限课程先给出一个快速概览手段——散点图birds.plot(kindscatter, xMaxLength, yOrder, figsize(12,8)) plt.title(Max Length per Order) plt.ylabel(Order) plt.xlabel(Max Length) plt.show()它能给出各目鸟类最大体长的整体布局但并不是展示真实分布的最优方式——点的密集程度依赖肉眼估算。展示真实分布的任务通常由直方图Histogram完成。3. 直方图bins 参数、过滤与 2D 直方图直方图类似条形图但通过柱子的起伏rise and fall呈现分布形态它要求数值型数据。构建方式是把数据数组划分成若干更小的箱bins展示各区间内取值数量。3.1 基础直方图与 bins 调参展示整个数据集的MaxBodyMass分布birds[MaxBodyMass].plot(kindhist, bins10, figsize(12,12)) plt.show()可以看到数据集中 400 多种鸟的 MaxBodyMass 大多落在 2000 以下的区间左侧偏态明显由大型雁形目物种把整体范围拉高所致。把bins提高到 30可以获得更细粒度的分布birds[MaxBodyMass].plot(kindhist, bins30, figsize(12,12)) plt.show()bins是直方图最核心的参数过小会掩盖分布细节如 10 箱时只能看到大部分集中在低端过大会引入噪声。课程建议尝试其他过滤器与数据点若要查看完整分布可去掉[MaxBodyMass]的列过滤。3.2 用过滤消除偏态上面的图偏态skewed明显是因为少数超重型物种撑大了横轴范围。只筛选体重在 1g 到 60g 之间的小鸟、并使用 40 个 bins可以得到一个不那么偏态的图filteredBirds birds[(birds[MaxBodyMass] 1) (birds[MaxBodyMass] 60)] filteredBirds[MaxBodyMass].plot(kindhist, bins40, figsize(12,12)) plt.show()这里filteredBirds是一个用布尔掩码过滤出的子 DataFrame后续文本数据与 KDE 部分都复用它。3.3 2D 直方图观察两个分布的关系Matplotlib 还提供内置的 2D 直方图来比较两个变量的联合分布并用更亮的颜色标示汇聚点convergencex filteredBirds[MaxBodyMass] y filteredBirds[MaxLength] fig, ax plt.subplots(tight_layoutTrue) hist ax.hist2d(x, y)从图中可以看出体重与体长之间存在沿预期方向的相关性并且有一个特别强的汇聚点——这正是用颜色密度代替散点堆叠的价值所在。4. 文本分类数据的分布保护状态 × 最小翼展直方图默认面向数值数据那么按文本维度看分布怎么办birds 数据集中每个物种带有 IUCN 红色名录IUCN Red List Categories风格的保护状态缩写缩写含义CRCritically Endangered极危ENEndangered濒危EXExtinct灭绝LCLeast Concern无危NTNear Threatened近危VUVulnerable易危课程把过滤后的filteredBirds按 6 种保护状态分别取出MinWingspan用 6 条不同颜色、半透明alpha0.5、相同分箱bins20的直方图叠加形成带标签的分类分布对比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[条件, 列]对分类字段做子集提取用kwargs字典统一传递alpha透明度使叠加时彼此可见与bins最后用plt.legend()显示标签。课程结论最小翼展与保护状态之间似乎没有明显的相关性并鼓励读者用同样方法测试数据集的其他字段、尝试不同过滤器看能否找到真正的相关性。5. 密度图KDE用 Seaborn 画平滑分布5.1 从直方图到密度曲线前面看到的直方图都是阶梯状的不会形成平滑弧线。要展示更平滑的密度图可以引入 Seabornimport seaborn as sns sns.kdeplot(filteredBirds[MinWingspan]) plt.show()曲线形态与前面最小翼展直方图对应只是更平滑。课程引用了 Seaborn 官方文档对 KDE 的定位相对于直方图KDE 能产生更不杂乱、更易于解读的图尤其是绘制多个分布时但当底层分布有界或不平滑时KDE 也可能引入失真——与直方图一样表现质量也依赖于好的平滑参数选择。换句话说离群值仍然会让你的图表现糟糕。5.2 bw_adjust控制平滑程度把第 3 节那张锯齿状的MaxBodyMass直方图用 KDE 重画sns.kdeplot(filteredBirds[MaxBodyMass]) plt.show()如果想要平滑但不过度平滑的曲线调整bw_adjust参数带宽调整因子取值越小带宽越窄、曲线越贴近原始波动sns.kdeplot(filteredBirds[MaxBodyMass], bw_adjust0.2) plt.show()课程要求读者阅读该类型图的全部可用参数并动手实验。5.3 分组密度按鸟类目展示体重密度只需几行代码就能展示按鸟类目Order分组的最大体重密度填充色块 各自归一化适合对比多个子群体的形状sns.kdeplot( datafilteredBirds, xMaxBodyMass, hueOrder, fillTrue, common_normFalse, palettecrest, alpha.5, linewidth0, )关键参数含义hue指定分组字段fillTrue填充曲线下区域common_normFalse表示各组独立归一化比较形状而非总量palette/alpha/linewidth分别控制配色板、透明度与轮廓线宽。5.4 双变量多密度叠加还可以在同一张图里映射多个变量的密度。例如把体长MinLength × MaxLength与保护状态叠加sns.kdeplot(datafilteredBirds, xMinLength, yMaxLength, hueConservationStatus)课程由此引出进一步思考按体长聚类的 Vulnerable易危鸟群聚集是否有生物学意义这正是一个从图表走向研究问题的入口。6. 仓库实现佐证solution notebook 中的真实运行证据以上全部代码在仓库内都有可直接运行的完整实现solution/notebook.ipynb 依次保存了基础直方图 → 调整 bins → 过滤后新直方图 → MaxBodyMass×MaxLength 的 2D 直方图 → 保护状态叠加直方图 → MinWingspan KDE → MaxBodyMass KDE → bw_adjust 实验 → MinLength×MaxLength 双变量 KDEhueConservationStatus全部单元格的执行输出可与本文各节逐一对应复现。从该 notebook 的运行记录还能得到两条实操层面的事实均来自其保存的 stderr/警告输出可推断为当时的运行环境特性在较早的 Matplotlib/Seaborn 组合下执行kdeplot会触发FutureWarning: Support for multi-dimensional indexing (e.g. obj[:, None]) is deprecated...属于版本过渡期告警不影响出图双变量 KDEMinLength×MaxLength运行时会提示UserWarning: Dataset has 0 variance; skipping density estimate.——说明某个小样本分组在某个方向上方差为 0 而被跳过。可以推断分组 KDE 对样本量极少的类别并不稳健这也是课程建议研究 VU 聚集是否有意义背后的方法论提醒。另请注意课程 README 中 2D 直方图小节还演示了from matplotlib import colors/PercentFormatter的可选导入见 solution notebook 对应单元格用于自定义 2D 直方图的颜色标尺。7. 关键参数速查参数所属函数作用与取值说明binsplot(kindhist)/plt.hist分箱数量本课用了 10、30、40、20越大粒度越细但越易引入噪声figsizeplot画布尺寸英寸本课统一使用 (12,12) 或默认alphaplt.hist柱条透明度0~1叠加多个直方图时 0.5 可保证层次可见label/plt.legend()plt.hist图例文字与显示用于区分分类分组colorplt.hist每条直方图的颜色本课按 6 种保护状态一一指定bw_adjustsns.kdeplot带宽调整因子正数越小越欠平滑越大越过平滑huesns.kdeplot按指定列分组绘制多条密度曲线fill/common_normsns.kdeplot是否填充是否共享归一化基准False 便于比较形状palette/linewidthsns.kdeplot分组配色板曲线轮廓线宽0 即无轮廓8. 作业、挑战与 R 语言版本课后作业assignment.md 要求换一个数据集例如来自 Kaggle 的数据源自建 notebook 讲一个故事且必须使用直方图评分标准Rubric为优秀 有完整注释含数据来源且至少使用 5 个直方图发现数据事实及格 注释不完整或有 bug待改进 无注释且含 bug。课堂挑战在网络上搜索直方图的良好使用案例思考它们如何用直方图展示分布、应用于哪些领域。课后自修阅读 Seabornkdeplot文档理解一个或多个维度上的连续概率密度曲线这一概念。R 语言版本仓库同时提供等价的 R/ggplot2 实现见 R 版课程其中用geom_histogram(bins10)与coord_flip()完成同样的分布可视化流程便于与 Python 版本对照学习。9. 小结本课在 Data-Science-For-Beginners 的3-Data-Visualization模块中承担从量quantity走向分布distribution的转折散点图能给分布一个粗略轮廓但刻画真实分布应使用直方图bins、布尔掩码过滤是控制直方图粒度与偏态的两个基本杠杆hist2d用颜色密度揭示双变量联合分布的汇聚点分类文本字段通过.loc逐类提取 半透明叠加直方图即可在一张图中对比多组分布Seabornkdeplot以平滑曲线替代阶梯bw_adjust控制平滑强度hue/fill/common_norm组合支持分组密度对比直至双变量多密度叠加——为第 11 课比例可视化与后续生命周期分析打好分布直觉基础。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

WSL2 + Ubuntu 20.04 + Docker 在 Windows 10 上的完整配置与避坑指南

WSL2 + Ubuntu 20.04 + Docker 在 Windows 10 上的完整配置与避坑指南

2026/9/6 23:11:21

简介:Windows10下通过WSL2安装Ubuntu20.04并配置Docker环境,是开发者搭建跨平台开发与容器化部署的常见需求。这份PDF资源面向已具备基本Windows操作基础、希望快速上手WSL2与Docker的中初级开发者,完整梳理了从版本检查、启用Windows功能、安…

通达信价格变异率主图指标:从原理到源码实战

通达信价格变异率主图指标:从原理到源码实战

2026/9/6 23:11:21

简介:通达信价格变异率主图指标源码解析文档,面向股票技术分析者与通达信公式编写初学者,重点讲解如何用通达信指标语言计算价格变异率并绘制主图。压缩包内为1个doc文件,整体仅241KB,但内容紧凑,涵盖完整公…

TES被WE零封:从版本理解到战术执行的系统性溃败复盘

TES被WE零封:从版本理解到战术执行的系统性溃败复盘

2026/9/6 23:11:21

2025年7月20日晚,LPL夏季赛登峰组的一场常规赛打出了比季后赛还高的讨论度:排名登峰组第一的TES被WE干净利落地以2比0零封。比赛的高热度不只来自爆冷本身,还来自“榜首对垫底”“老东家对上单”“赢一场就重回第一”等多层叙事叠加。赛后数小…

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析

2026/9/7 0:01:24

2026 年已经过了一大半,如果你现在正准备入手 AI 视觉或物联网开发板,我建议你先别急着下单。市面上从几十块的 ESP32 到几千块的英伟达 Jetson,价格差了近百倍,宣传话术却几乎一样,都告诉你“能跑 AI、能做视觉、能搞…

基于Vue的企业门户网站管理系统的设计与实现

基于Vue的企业门户网站管理系统的设计与实现

2026/9/7 0:01:24

目 录 摘 要 Abstract 目 录 1 引言 1.1 选题背景 1.2 研究现状 1.3 目的和意义 1.4 论文结构安排 1.5本章小结 2 开发环境与技术 2.1 MySQL数据库 2.2 Java语言技术 2.3 Spring Boot框架 2.4 Vue.js 2.5 本章小节 3 系统分析 …

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

ChCore操作系统实验全解析:从启动到虚拟内存与异常处理

ChCore操作系统实验全解析:从启动到虚拟内存与异常处理

2026/9/6 23:51:23

简介:面向操作系统课程设计与实践备考的完整实验方案,围绕上海交通大学Chcore操作系统教学环境,覆盖内存管理、系统调用与缺页异常两大核心模块。文档对分页机制、页表管理、内存分配与回收、内存保护、换页流程以及系统调用、缺页处理、页替…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/6 23:21:51

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…