Seaborn.pairplot 的使用注意事项

sns.pairplot 是 Seaborn 中最常用、最强大的探索性数据分析(EDA)函数之一。 它在一个调用里就能同时展示:

  • 任意两两变量间的 散点图(观察关系、聚类、异常值)
  • 对角线上每个变量的 单变量分布(直方图 / KDE / 计数)
  • 类别变量 分组的 颜色映射(hue)

1. 基本语法

seaborn.pairplot(data,                 # 必需,DataFramevars=None,            # 指定列(默认全部数值列)x_vars=None, y_vars=None,  # 仅画部分组合(高级用法)hue=None,             # 按该列分组上色hue_order=None,       # hue 显示顺序palette=None,         # 调色板kind='scatter',       # 非对角线子图类型:'scatter' | 'reg' | 'kde' | 'hist'diag_kind='auto',     # 对角线:'auto' | 'hist' | 'kde' | Nonemarkers=None,         # 不同 hue 的散点形状 ['o','s','^']height=2.5,           # 单幅子图的高度(英寸inch)aspect=1,             # 宽高比(正方形)corner=False,         # 只画下三角dropna=True,          # 是否丢弃缺失值plot_kws=None,        # 传给非对角线的函数关键字(散点/回归函数)diag_kws=None,        # 传给对角线的函数关键字grid_kws=None         # 传给 PairGrid 的关键字
)

2. 参数详解 & 技巧

参数说明 & 示例
vars只画关心的列:
vars=['trip_distance', 'fare_amount', 'tip']
hue按类别上色:
hue='pickup_cluster'
kind关系图类型:
kind='reg' → 加回归线
kind='kde' → 二维核密度
diag_kind对角线:
diag_kind='hist'(直方图)
diag_kind='kde'(密度曲线)
corner=True只画下三角,节省空间
height / aspect控制整张图大小:
height=3, aspect=1.2
plot_kws传给散点图:
plot_kws={'alpha':0.4, 's':20}
diag_kws传给直方图:
diag_kws={'bins':30, 'color':'skyblue'}
markers不同 hue 的形状:
markers=['o','s','D']

3. 最常见用法示例

准备数据:

test_cols = ['medallion', 'hack_license', 'trip_time_in_mins', 'trip_distance', 'total_amount', 'pickup_dayofweek']
df = time_bins_data[test_cols].sample(frac=0.0001)  # 从数据集中随机抽取少量的样本(减少计算量)
df.columns
Index(['medallion', 'hack_license', 'trip_time_in_mins', 'trip_distance','total_amount', 'pickup_dayofweek'],dtype='object')

① 快速浏览所有数值特征

sns.pairplot(df)
plt.show()

在这里插入图片描述

② 只看指定列 + 按类别着色

sns.pairplot(df,vars=['trip_distance', 'total_amount', 'pickup_dayofweek'],hue='pickup_dayofweek',palette='Set2',height=3
)
plt.show()

在这里插入图片描述

此时就出现一个问题 (hue, hue) = ('pickup_dayofweek', 'pickup_dayofweek') 子图是空的。此时应该是 varshue 变量与核密度函数 kde 之间的冲突问题,可解决该问题的方法有以下三种:

需要注意的一个问题是: 当 diag_kind='auto'(默认值) 时,seaborn 会根据 是否指定了 hue 来自动决定对角线子图类型:

  • 如果 hue=None(未指定) → 对角线画 直方图 hist
  • 如果 hue=某个列名(指定了) → 对角线画 核密度估计 kde
  1. 不要指定 vars 的内容
sns.pairplot(df[['trip_distance', 'total_amount', 'pickup_dayofweek']],# vars=['trip_distance', 'total_amount', 'pickup_dayofweek'],hue='pickup_dayofweek',palette='Set2',# diag_kind='hist',height=3
)
plt.show()

在这里插入图片描述

  1. vars 中不要包含 hue 列,参见 ③

  2. 指定对角线子图的 diag_kind='hist' (前两个方法都不会统计显示 hue 列)

sns.pairplot(df,vars=['trip_distance', 'total_amount', 'pickup_dayofweek'],  hue='pickup_dayofweek',palette='Set2',diag_kind='hist',height=3
)
plt.show()

在这里插入图片描述

关于颜色映射介绍可以学习这篇文章:在 Matplotlib 中选择色彩映射 — Matplotlib 3.10.0 文档 - Matplotlib 绘图库

③ 下三角 + 回归线

sns.pairplot(df,vars=test_cols[:4],hue='pickup_dayofweek',     # 按类别分组palette='Set1',            # 颜色调色板kind='reg',          # 非对角线加回归diag_kind='hist',    # 对角线直方图corner=True,         # 只画左下
)
plt.show()

在这里插入图片描述

④ 离散类别变量的对角线

sns.pairplot(df,vars=test_cols,hue='pickup_dayofweek',     # 按类别分组palette='Set1',            # 颜色调色板plot_kws={'alpha': 0.4},     # 点透明度(提升重叠区域可读性)diag_kind='hist',   # 对角线子图用直方图展示单变量分布(kde, hist)
)
plt.show()

在这里插入图片描述

4. 返回对象 & 进一步自定义

pairplot 本质上是 PairGrid 的封装:

g = sns.pairplot(df,vars=test_cols[2:],hue='pickup_dayofweek',     # 按类别分组palette='Set1',            # 颜色调色板plot_kws={'alpha': 0.4},     # 点透明度(提升重叠区域可读性)diag_kind='hist',   # 对角线子图用直方图展示单变量分布(kde, hist)
)
g.fig.suptitle("My Pairplot", y=1.02)     # 总标题
g.set(xlim=(0, 100), ylim=(0, 100))       # 统一坐标轴范围(需要合理设置,不然有些数据可能会无法显示)
g.map_diag(sns.histplot, kde=True)         # 对角线子图用直方图展示单变量分布(kde, hist)
plt.show()
# g.savefig("pairplot.png", dpi=300, bbox_inches='tight')  # 保存

5. 常见坑 & FAQ

问题原因 & 解决
对角线空白离散变量 + KDE → 用 diag_kind='hist'
hue 列不在 vars 里把 hue 列也放进 vars 才能在对角线看到它
图太大调小 heightcorner=True
颜色太多限制 hue_order 或使用 palette

sns.pairplot = 一次函数调用,完成所有两两关系 + 分布 + 分组可视化,是 EDA 的瑞士军刀。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90972.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90972.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90972.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何选择合适的AI论文写作工具?七个AI英文论文写作网站

在写作英文论文时,许多人往往会遇到写作思路卡壳、语言不流畅、重复率过高等问题。幸运的是,AI论文写作工具的出现,极大地提升了写作效率和质量。这些工具不仅可以帮你快速生成内容、扩展论点,还可以优化语言,帮助你顺…

【保姆级喂饭教程】idea中安装Conventional Commit插件

目录前言一、安装二、测试前言 之前了解到了Conventional Commit规范,idea中好像没什么钩子工具,测试一下Conventional Commit插件吧 一、安装 点击file-settings 点击plugins插件,搜索Conventional Commit,点击install安装&…

# 电脑每次重启都自动启动惠普安装程序,怎么取消?

电脑每次重启都自动启动惠普安装程序,怎么取消? 一、通过任务管理器禁用: 1)右键点击任务栏上的空白区域,选择 “任务管理器”。 2)在任务管理器窗口中,点击顶部菜单栏上的 “启动” 选项卡。 3…

QT遇到过的样式记录

此帖主要记录平常工程里遇到的qt样式 窗口无边框 原始文档 void QWidget::setWindowFlag(Qt::WindowType flag, bool on true) Sets the window flag flag on this widget if on is true; otherwise clears the flag. This function was introduced in Qt 5.9. See also se…

软件设计师中级概念题

软件过程模型 1. 瀑布模型: 五个阶段:需求分析、设计、编码、测试、运行与维护。 为软件的开发和维护提供了一种有效的管理模式,它是以文档作为驱动、合适于软件需求很明确的软件项目模型。瀑布模型假设,一个待开发的系统需求是完…

Elasticsearch安装、入门、基础API操作、全文检索、精准查询、地理查询、复合查询、排序、分页、高亮、数据聚合、自动补全、数据同步、ES集群

学习资料: 通过网盘分享的文件:Elasticsearch 链接: https://pan.baidu.com/s/18BxA0BH0G–jwy95uFmFZQ 提取码: yyds 初识ES正向索引倒排索引ES与MySQL 概念对比安装ES操作索引库mapping属性创建索引库{"mappings": {"properties":…

教程:如何查看浏览器扩展程序的源码

在学习前端、自动化或扩展开发时,我们常常会想研究某个浏览器插件的实现逻辑。即使扩展没有公开源码,只要我们本地安装了它,就可以查看它的完整源代码进行学习。✅ 方法一:从浏览器插件目录提取源码 第一步:打开扩展程…

虚拟储能与分布式光伏协同优化:新型电力系统的灵活性解决方案

安科瑞顾强摘要: 在全球能源结构向低碳化、智能化加速转型的背景下,分布式光伏的大规模接入为电力系统带来机遇的同时,也因其波动性与间歇性带来了运行挑战。本文聚焦于虚拟储能系统(Virtual Energy Storage System, VESS&#xf…

java valueOf方法

一,什么是valueOf方法?valueOf是java包装类(比如Long,Integer等)中提供的一个静态方法二,valueOf的主要作用是什么主要作用是将其他类型的数据转换为当前包装类的对象三,代码实例:咱们以Long.valueOf为例,1,他可以接受一个long类型的数值,返回对应的Long对象(把基本类型long包…

工业平板电脑 vs 消费级平板:从防护等级到使用寿命全方面对比

平板电脑已经广泛应用于各个行业。但你知道吗?市面上常见的“平板”其实可以分为两大类:工业平板电脑和消费级平板电脑。虽然它们看起来都是“平板”,但用途、性能和适用场景却大不相同。今天,我们就来聊聊这两者的区别&#xff0…

MySQL技术笔记-索引+慢 SQL+锁 全链路优化实战

目录 前言 MySQL索引 一、概述 二、索引分类 (一)按功能特性分类 (二)按存储方式分类 (三)按数据结构分类 (四)按索引字段数量分类 三、索引的优缺点 (一&…

S7-1200 与 S7-300 PNS7-400 PN UDP 通信 TIA 相同项目

7-1200 与 S7-300 PN/S7-400 PN UDP 通信 TIA 相同项目S7-1200 与 S7-300 PN 口之间的以太网通信可以通过 UDP 协议来实现,使用的通信指令是在双方 CPU 调用通信-开放式用户通信TSEND_C,TRCV_C(1200支持,300不支持)或T…

java进阶(二)+学习笔记

面向对象设计原则1. 面向对象概念面向对象 是一种编程思想,面向过程是关注实现的步骤,每个步骤定义一个函数,调用函数执行即可。面向对象关注的是谁(对象)来执行, 把具有相同属性和行为的一类事物(对象)进行抽象成类&#…

[附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统

摘要 随着互联网的普及,学生在学习和生活中面临着海量信息,如何高效获取有价值的内容成为亟待解决的问题。本文基于 Spring Boot 框架,结合内容推荐算法,设计并实现了一个学生咨询系统。系统采用 Spring Boot MyBatis MySQL Vu…

DeepSeek 微调实践:DeepSeek-R1 大模型基于 MS-Swift 框架部署 / 推理 / 微调实践大全

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 GPT多模态大模型与AI Agent智能体书籍本章配套视频课程【陈敬雷】 文…

python基础知识pip配置pip.conf文件

pip.conf一、 INI格式二、 级别三、 文件位置四、 加载顺序五、 常用一、 INI格式 配置文件可以更改pip命令行选项的默认值,这个文件是使用INI格式编写的。 INI格式 主要包含三个内容:1.节section 2.键值对 3.注释 [section1] key1 value1 \\注释 key2…

深入理解 Java JVM

文章目录📕1. JVM简介📕2. JVM运行流程📕3. JVM运行时数据区📕4. JVM类加载✏️4.1 类加载过程✏️4.2 双亲委派模型✏️4.3 破坏双亲委派模型📕5. JVM垃圾回收机制(GC机制)✏️5.1 判断死亡对象…

Linux内核高效之道:Slab分配器与task_struct缓存管理

前言 在Linux内核中,进程创建与销毁是最频繁的操作之一。想象一下:当系统每秒需要处理成百上千次fork()和exit()调用时,如何保证task_struct(进程描述符)的分配与释放既快速又不产生内存碎片?这就是Slab分配…

双esp8266-01之间UDP透传传输,自定义协议

使用AT模式的透传,串口打印的数据包含pd1,4,数据打印的数据不是直接将数据打印出来,包含了pd1,4,特殊字符,针对想要直接开机直接透传,打印数据且按照自主协议帧头的功能进行开发。1.server程序:/*************SERVER**…

BGP 路由优选属性(7)【MED】官方考试综合实验题【bgp】【acl】【ip-prefix】【route-policy】【icmp 环路】精讲

目录 一、MED 属性介绍 二、实验 2.1 实验目的 2.2 拓扑图 2.2 实验说明 2.3 配置脚本 2.4 验证配置 2.5 问题分析 2.7 题目需求解析 2.8 场景 1:只允许在 AS12 上操作 2.9 场景 2:只允许在 AS34 上操作 正文 一、MED 属性介绍 MED 全称 mu…