当前位置: 首页 > news >正文

Python 绘图进阶之核密度估计图:掌握数据分布的秘密

Python 绘图进阶之核密度估计图:掌握数据分布的秘密

引言

在数据分析中,了解数据的分布情况是至关重要的一步。除了常用的直方图和箱线图,核密度估计图(Kernel Density Estimation, KDE)提供了一种更为平滑、直观的方式来展示数据的分布。KDE 是一种非参数方法,用于估计数据的概率密度函数,帮助我们更细腻地理解数据的分布特征。本文将带你深入探索如何使用 Python 绘制核密度估计图,提升数据分析的精度和洞察力。

一、核密度估计图的基本概念

核密度估计是一种通过将核函数应用于每个数据点来估计总体分布的方法。核函数通常选择高斯核,它的作用类似于一个光滑的窗函数,使得生成的密度曲线更加平滑。

主要参数包括

  • 带宽(Bandwidth):控制核函数的宽度,即平滑程度。带宽越大,曲线越平滑;带宽越小,曲线越陡峭。
  • 核函数(Kernel Function):决定如何平滑数据点。常见的核函数包括高斯核、三角核、均匀核等。

KDE 的优势在于它比直方图更能细腻地展示数据的分布,尤其适合分析连续数据。

二、使用 Python 绘制核密度估计图

Python 提供了多个绘图库来绘制 KDE 图,其中 Seaborn 是最常用的库之一。它内置了 kdeplot() 函数,可以方便地绘制 KDE 图,并且支持丰富的参数自定义。

1. 使用 Seaborn 绘制简单的 KDE 图

Seaborn 的 kdeplot() 函数可以快速绘制出数据的 KDE 图,下面是一个简单的示例。

示例代码

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np# 生成一组示例数据
data = np.random.normal(0, 1, 1000)# 使用 Seaborn 绘制 KDE 图
sns.kdeplot(data)
plt.title('KDE Plot Example')
plt.xlabel('Value')
plt.ylabel('Density')
plt.show()

在这里插入图片描述

在这个示例中,我们生成了一组服从标准正态分布的随机数据,并使用 kdeplot() 函数绘制了其概率密度曲线。图中显示的数据分布曲线平滑地描绘了数据的密度变化,比传统的直方图更为直观。

2. 自定义带宽和核函数

通过调整带宽和选择不同的核函数,可以控制 KDE 图的平滑程度和形状。

示例代码

# 调整带宽
sns.kdeplot(data, bw_adjust=0.5)
plt.title('KDE Plot with Adjusted Bandwidth')
plt.show()

在这里插入图片描述

在这个示例中,我们通过 bw_adjust 参数调整了带宽,将其设置为 0.5,从而使得密度曲线更加陡峭。这种调整对于数据分布特征明显但样本量较小的数据集特别有用。

三、KDE 图的高级用法

1. 分组对比

KDE 图可以用于比较不同组的数据分布,通过分组绘制多条密度曲线来展示不同组的差异。

示例代码

import pandas as pd
# 加载数据集
tips = sns.load_dataset("tips")
# 将数据转换为DataFrame
data = pd.DataFrame(tips)
sns.kdeplot(data,x='total_bill', hue='smoker',fill=True)plt.title('KDE of Total Bill by Smoking Status')
plt.show()

在这里插入图片描述

在这个示例中,我们利用 tips 数据集,绘制了吸烟与否对账单金额分布的影响。通过 KDE 图的分组展示,可以直观地看到吸烟者和非吸烟者在账单金额上的分布差异。

2. 叠加 KDE 图与直方图

将 KDE 图与直方图结合,可以同时展示数据的分布细节和整体趋势。

示例代码

# 叠加 KDE 图与直方图
sns.histplot(data, kde=True)
plt.title('Histogram with KDE')
plt.show()

在这里插入图片描述

在这个示例中,我们使用 histplot() 函数同时绘制了直方图和 KDE 图。这样既保留了直方图的直观性,又增强了对数据分布的理解。

四、实战案例:分析消费数据的分布

假设我们有一组消费者的购买金额数据,想要分析其分布情况,并且根据消费者是否为会员进行分组对比。通过 KDE 图,我们可以直观地观察到会员和非会员的消费行为差异。

案例代码

# 生成示例数据
membership = np.random.choice(['member', 'non-member'], size=1000)
purchase = np.concatenate([np.random.normal(50, 10, 500), np.random.normal(60, 15, 500)])df = pd.DataFrame({'membership': membership, 'purchase': purchase})# 绘制 KDE 图
sns.kdeplot(x='purchase', hue='membership', data=df, fill=True)
plt.title('KDE of Purchase Amount by Membership Status')
plt.xlabel('Purchase Amount')
plt.ylabel('Density')
plt.show()

在这里插入图片描述

在这个案例中,我们通过 KDE 图分析了会员和非会员的消费金额分布情况。图中显示了两个不同组的分布曲线,从而揭示了会员更倾向于高额消费的趋势。

五、总结

核密度估计图是一种强大的工具,它为我们提供了比直方图更细腻的数据分布展示方式。在 Python 中,使用 Seaborn 绘制 KDE 图非常直观和便捷,并且可以通过自定义参数来满足不同的分析需求。

掌握 KDE 图的使用,将使你在数据分析中更好地洞察数据分布的细节,提升分析的准确性和深度。


如果你有感兴趣的数据集或分析场景,欢迎在评论区分享。我将帮助你探索如何使用 KDE 图来深入分析数据,揭示数据背后的分布特征。


示例代码和数据获取方式:
方式1:免费获取:转发此文章至朋友圈(所有人可见,获6个赞)或3个群,并附“推荐关注学习”,1小时后将截图发送后台留言:2024813_核密度图,本人会在24小时内回复您获取资料,莫着急哈。
方式2:关注本博客AIDD Learning,文末**“点赞”“收藏”**,后台留言:2024813_核密度图,本人会在24小时内回复您获取资料,莫着急哈。

相关文章:

Python 绘图进阶之核密度估计图:掌握数据分布的秘密

Python 绘图进阶之核密度估计图:掌握数据分布的秘密 引言 在数据分析中,了解数据的分布情况是至关重要的一步。除了常用的直方图和箱线图,核密度估计图(Kernel Density Estimation, KDE)提供了一种更为平滑、直观的方…...

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式,并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式(singleton) 单例模式是创建一个对象保证只有这个类的唯一实例,单例模式分为饿汉式和懒汉式,饿汉式是…...

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…...

Element-UI自学实践

概述 Element-UI 是由饿了么前端团队推出的一款基于 Vue.js 2.0 的桌面端 UI 组件库。它为开发者提供了一套完整、易用、美观的组件解决方案&#xff0c;极大地提升了前端开发的效率和质量。本文为自学实践记录&#xff0c;详细内容见 &#x1f4da; ElementUI官网 1. 基础组…...

ChatGPT如何工作:创作一首诗的过程

疑问 怎样理解 Chat GPT 的工作原理&#xff1f;比如我让他作一首诗&#xff0c;他是如何创作的呢&#xff1f;每一行诗&#xff0c;每一个字都是怎么来的&#xff1f;随机拼凑的还是从哪里借鉴的&#xff1f; 回答 当你让 ChatGPT 创作一首诗时&#xff0c;它并不是简单地随…...

Linux_Shell变量及运算符-05

一、Shell基础 1.1 什么是shell Shell脚本语言是实现Linux/UNIX系统管理及自W动化运维所必备的重要工具&#xff0c; Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算…...

OpenCV图像滤波(13)均值迁移滤波函数pyrMeanShiftFiltering()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数执行均值迁移图像分割的初始步骤。 该函数实现了均值迁移分割的过滤阶段&#xff0c;即输出是经过滤波的“海报化”图像&#xff0c;其中颜色…...

用爬虫技术探索石墨文档:数据自动化处理与个性化应用的创新实践

用爬虫技术探索石墨文档&#xff1a;数据自动化处理与个性化应用的创新实践 在当今这个信息爆炸的时代&#xff0c;文档管理与协作成为了企业运营和个人工作中不可或缺的一部分。石墨文档&#xff0c;作为一款轻量级的云端Office套件&#xff0c;凭借其强大的在线协作、实时同…...

【JavaEE初阶】线程池

目录 &#x1f4d5; 引言 &#x1f333; 概念 &#x1f340;ThreadPoolExecutor 类 &#x1f6a9; int corePoolSize与int maximumPoolSize&#xff1a; &#x1f6a9; long keepAliveTime与TimeUnit nuit&#xff1a; &#x1f6a9; BlockingQueue workQueue&#xff1a…...

zdpgo_cobra_req 新增解析请求体内容

zdpgo_cobra_req 使用Go语言开发的&#xff0c;类似于curl的HTTP客户端请求工具&#xff0c;用于便捷的测试各种HTTP地址 特性 1、帮助文档都是中文的2、支持常见的HTTP请求&#xff0c;比如GET、POST、PUT、DELETE等 下载 git clone https://github.com/zhangdapeng520/z…...

Java聚合快递对接云洋系统快递小程序源码

&#x1f31f;【一键聚合&#xff0c;高效便捷】快递对接云洋系统小程序全攻略&#x1f680; 引言&#xff1a;告别繁琐&#xff0c;拥抱智能快递新时代&#x1f50d; 在这个快节奏的时代&#xff0c;每一分每一秒都弥足珍贵。你是否还在为手动输入多个快递单号、频繁切换不同…...

陕西西安培华学院计算机软件工程毕业设计课题选题参考目录​

陕西西安培华学院计算机软件工程毕业设计课题选题 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开发社区乘风者计划专家博主&#xff0c;CSDN平台&#xff0c;✌️Java领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者、专注于大学生项目实战开发…...

如何用sql在1分钟从1T数据中精准定位查询?Hive离线数仓 Spark分析

最近在一个群里&#xff0c;从群友哪里了解到这样一个业务需求&#xff1a;如何在 hdfs 1 T源数据库中&#xff0c;1分钟内从其中抓取自己想要的数据&#xff1f; 我的理解是 &#xff1a; 在hdfs数据库中为拥有 尽1T数据的表创建索引,并对其进行性能优化&#xff0c;以实现…...

acpi 主板布局需要 efi

今天在折腾 ESXI 的时候&#xff0c;启动虚拟机跳出了 acpi 主板布局需要 efi 然后我就将 ESXI 的启动方式改为了 EFI 但是虚拟机有莫名的启动不了&#xff0c;网上也没有找到办法&#xff0c;最后&#xff0c;我将虚拟机类型有原本的 ubuntu 换成了 debian 最后启动成功&…...

月之暗面对谈 Zilliz:长文本和 RAG 如何选择?

01 长文本与RAG通用对比 准确率&#xff1a;通常情况下长文本优于RAG 长文本&#xff1a;可更加综合的去分析所有相关的内容&#xff0c;提取相关数字&#xff0c;生成图表&#xff0c;效果尚可。RAG&#xff1a;更适合找到一段或者是几段可能相关的段落。如果希望大模型能够…...

高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?

如果有遗漏,评论区告诉我进行补充 面试官: 请列举出在JDK中几个常用的设计模式? 我回答: 在Java Development Kit (JDK) 中&#xff0c;许多设计模式被广泛使用&#xff0c;以帮助实现软件的结构、行为和复用。下面是一些在JDK中常见的设计模式及其简要说明&#xff1a; 工…...

mysql workbench8.0如何导出mysql5.7格式的sql定义

碰到的问题 mac上安装mysql workbech6.0后不能运行&#xff0c;但安装workbench8.0后&#xff0c;导出的数据库sql文件默认是msyql 8.0的语法和格式。比如生成索引的语句后面会有visible关键字&#xff0c;当把mysql8.0的sql文件导入到mysql5.7时就会报错。 如何解决 点击my…...

数据结构(学习)2024.8.6(顺序表)

今天开始学习数据结构的相关知识&#xff0c;大概分为了解数据结构、算法&#xff1b;学习线性表&#xff1a;顺序表、链表、栈、队列的相关知识和树&#xff1a;二叉树、遍历、创建&#xff0c;查询方法、排序方式等。 目录 一、数据结构 数据 逻辑结构 1.线性结构 2.树…...

MyBatis全解

目录 一&#xff0c; MyBatis 概述 1.1-介绍 MyBatis 的历史和发展 1.2-MyBatis 的特点和优势 1.3-MyBatis 与 JDBC 的对比 1.4-MyBatis 与其他 ORM 框架的对比 二&#xff0c; 快速入门 2.1-环境搭建 2.2-第一个 MyBatis 应用程序 2.3-配置文件详解 (mybatis-config.…...

【Redis进阶】Redis集群

目录 Redis集群的诞生 单节点Redis的局限性 1.存储容量限制 2.性能瓶颈 3.单点故障 4.扩展性能差 分布式系统发展的需要 1.海量数据处理 2.高性能要求 3.弹性扩展能力 Redis集群&#xff08;cluster&#xff09; 如图所示案例 Redis集群设计 什么是数据分片&…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...