【Pandas】pandas DataFrame corr

Pandas2.2 DataFrame

Computations descriptive stats

方法描述
DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值
DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 True
DataFrame.any(*[, axis, bool_only, skipna])用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True
DataFrame.clip([lower, upper, axis, inplace])用于截断(限制)DataFrame 中的数值
DataFrame.corr([method, min_periods, …])用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix)

pandas.DataFrame.corr()

pandas.DataFrame.corr() 方法用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix),常用于探索变量之间的线性关系强度。默认使用皮尔逊相关系数(Pearson),也支持 Kendall 和 Spearman 等非参数方法。


一、方法签名
DataFrame.corr(method='pearson', min_periods=1, numeric_only=False)
参数说明:
参数类型描述
method{‘pearson’, ‘kendall’, ‘spearman’} 或 callable,默认 'pearson'相关系数的计算方法:
  • 'pearson': 线性相关系数(适用于连续变量)
  • 'kendall': Kendall Tau 秩相关系数
  • 'spearman': Spearman 秩相关系数
  • 也可以传入自定义函数(两个 Series 输入,返回 float) |
    | min_periods | int, 默认 1 | 每对列之间至少需要多少个有效观测值才能计算相关系数。若不足则返回 NaN。 |
    | numeric_only | bool, 默认 False | 是否只考虑数值类型列(如 int、float)。若为 True,忽略布尔、字符串等非数值列。 |

二、返回值
  • 返回一个 DataFrame,表示每对列之间的相关系数,范围在 [-1, 1] 之间:
    • 1 表示完全正相关
    • 0 表示无线性关系
    • -1 表示完全负相关

三、相关系数方法说明
方法描述
'pearson'衡量两变量之间的线性相关性(适合连续数据)
'kendall'基于秩次的相关性检验(适合小样本或有序数据)
'spearman'基于秩次的非参数相关性(适合非正态分布数据)

四、使用示例及结果
示例1:默认方法(Pearson)
import pandas as pddf = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [2, 4, 6, 8, 10],'C': [5, 4, 3, 2, 1]
})
计算 Pearson 相关系数:
result = df.corr()
print(result)

输出:

          A         B         C
A  1.000000  1.000000 -1.000000
B  1.000000  1.000000 -1.000000
C -1.000000 -1.000000  1.000000

解释:

  • 列 A 与 B 完全正相关(+1)
  • 列 A 与 C 完全负相关(-1)

示例2:使用 Spearman 方法
result = df.corr(method='spearman')
print(result)

输出:

     A    B    C
A  1.0  1.0 -1.0
B  1.0  1.0 -1.0
C -1.0 -1.0  1.0

解释:

  • 由于数据是单调递增/递减,Spearman 与 Pearson 结果一致。

示例3:包含 NaN 值时设置 min_periods
import numpy as npdf_with_nan = pd.DataFrame({'X': [1, 2, np.nan, 4, 5],'Y': [np.nan, 2, 3, 4, 5],'Z': [5, 4, 3, 2, 1]
})# 设置 min_periods=3
result = df_with_nan.corr(min_periods=3)
print(result)

输出:

          X         Y         Z
X  1.000000  1.000000 -1.000000
Y  1.000000  1.000000 -1.000000
Z -1.000000 -1.000000  1.000000

解释:

  • 虽然有缺失值,但每对列间仍有足够的有效观测值(≥3),因此仍能计算出相关系数。

示例4:使用自定义相关函数(如互信息)
from scipy.stats import pearsonrdef custom_corr(x, y):return pearsonr(x, y)[0]result = df.corr(method=custom_corr)
print(result)

输出:

          A         B         C
A  1.000000  1.000000 -1.000000
B  1.000000  1.000000 -1.000000
C -1.000000 -1.000000  1.000000

解释:

  • 使用 scipy.stats.pearsonr 自定义相关函数,效果与默认相同。

示例5:仅保留数值列(numeric_only=True
df_mixed = pd.DataFrame({'A': [1, 2, 3],'B': ['low', 'medium', 'high'],'C': [4.0, 5.0, 6.0]
})result = df_mixed.corr(numeric_only=True)
print(result)

输出:

     A    C
A  1.0  1.0
C  1.0  1.0

解释:

  • 列 B 是字符串类型,被自动忽略。
  • 只对数值列 A 和 C 进行相关分析。

五、适用场景
场景描述
特征选择分析特征之间的共线性,避免多重共线性问题
数据探索快速了解变量之间的线性关系强弱
可视化辅助配合热力图(heatmap)展示变量相关性
模型诊断检查输入变量是否具有预测能力或冗余性

六、注意事项
  • 只适用于数值型列(int、float),非数值列默认参与运算时会报错(除非设置 numeric_only=True
  • NaN 值会被自动跳过,不影响计算
  • method 支持传入任意两个 Series 的函数进行自定义相关性计算
  • 对异常值敏感(尤其 Pearson),建议先做标准化或去极值处理

七、总结
特性描述
功能计算 DataFrame 各列之间的相关系数矩阵
默认方法Pearson 线性相关系数
支持方法Pearson、Kendall、Spearman、自定义函数
NaN 处理自动跳过,可通过 min_periods 控制最小样本数
是否修改原数据否,返回新 DataFrame
适用类型数值型列(int、float)

corr() 是数据分析中非常关键的方法之一,广泛应用于变量关系探索、特征工程、模型优化等多个环节。

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

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

相关文章

青藏高原七大河流源区径流深、蒸散发数据集(TPRED)

时间分辨率 月空间分辨率 1km - 10km共享方式 开放获取数据大小 83.27 MB数据时间范围 1998-07-01 — 2017-12-31元数据更新时间 2024-07-22 数据集摘要 通过构建耦合积雪、冻土、冰川等冰冻圈水文物理过程的WEB-DHM模型(Water and Energy Budget-based Distribute…

window环境下,如何通过USB接口控制打印机

虽然说大多数情况下,我们可以非常便利的通过打印机驱动来控制打印机,但还是有一些特殊情况,导致无法通过打印机驱动来完成我们预想的任务,比如,打印机只是一个系统设备中的一部分,需要协调其它设备一起工作…

CDGP数据治理主观题评分标准与得分策略

1.数据模型题目评分标准 1)准确理解题目中所描述的业务逻辑和需求得[1分] 2)正确使用模型设计方法,使用信息工程、信息建模集成定义、巴克符号、陈氏符号等其中一种得[1分] 3)正确设计实体和属性,题目中涉及的实体数量为25-30个,10个以内得[2分],10-20个得[3分],25个…

工业设计破局密码:3D 可视化技术点燃产业升级引擎

3D可视化是一种将数据、信息或抽象概念以三维图形、模型和动画的形式呈现出来的技术。3D可视化技术通过构建三维数字孪生体,将设计思维转化为可交互的虚拟原型,不仅打破了传统二维设计的空间局限,更在效率、精度与用户体验层面开创了全新维度…

Qt中在子线程中刷新UI的方法

Qt中在子线程中刷新UI的方法 在Qt中UI界面并不是线程安全的,意味着在子线程中不能随意操作UI界面组件(比如按钮、标签)等,如果强行操作这些组件有可能会导致程序崩溃。那么在Qt中如何在子线程中刷新UI控件呢? 两种方…

为了摸鱼和吃瓜,我开发了一个网站

平时上班真的比较累,摸鱼和吃瓜还要跳转多个平台的话,就累上加累了。 所以做了一个聚合了全网主流平台热搜的网站。 目前市面上确实有很多这种网站了,所以目前最主要有两点和他们不同: 给热搜列表增加了配图,刷的时候…

操作系统学习笔记第2章 (竟成)

第 2 章 进程管理 【考纲内容】 1.进程与线程: (1) 进程 / 线程的基本概念; (2) 进程 / 线程的状态与转换; (3) 线程的实现:内核支持的线程;线程库支持的线程; (4) 进程与线程的组织与控制; (5)…

77.评论日记

房间要经常搞卫生,不然会很多灰,很多头发,很多垃圾。 当然,即使一直搞卫生,在一些看不到的角落也是会慢慢囤积垃圾。 想要把那些角落也打扫干净,没别的办法,只有把那个角落上所有的东西都移开&a…

语音合成之十二 TTS声学编解码器的演进

TTS声学编解码器的演进 1 引言:声码器/声学编解码器在现代TTS中的关键作用2 奠定基石:从早期声码器到神经合成的曙光3. HiFi-GAN: 革新高效高保真波形生成4. 新的疆域:面向富语义TTS的先进声学编解码器5. XCodec2.0: 统一声学与语义信息6.BiC…

大学之大:悉尼科技大学2025.5.10

悉尼科技大学:从技术先驱到全球创新枢纽的百年征程 一、历史沿革:从技工培训到世界百强名校的蜕变 1. 工业革命的技术火种(1843-1945) 悉尼科技大学的历史可追溯至1843年成立的悉尼机械学院(Sydney Mechanics’ Scho…

安装阿里云的yum源并且下载软件(CentOS7版本)

目录 1. 进入root模式: 2. 进入yum.repos.d文件下 3.备份 4. 安装阿里云的yum源 5. 安装dnf 6. 安装epel-release 7. 清除缓存,并新建缓存 8. 安装智能拼音软件包 8.1安装 8.2 进入应用程序 -- 系统工具 -- 设置 8.3重启后就可以打中文啦~ (需要重新启动才能)…

Discriminative and domain invariant subspace alignment for visual tasks

用于视觉任务的判别性和域不变子空间对齐 作者:Samaneh Rezaei,Jafar Tahmoresnezhad 文章于2018年12月4日收到,2019年5月24日被接受,2019年6月3日在线发表于Iran Journal of Computer Science期刊,DOI: 10.1007/s42…

用jsp简单实现C语言标准化测试系统

C语言标准化测试系统 在Web编程技术的学习过程中,我们小组为了深入理解相关技术原理,提升实践能力,开发了一个基于动态Web工程框架的C语言标准化考试系统。现在,就来和大家分享一下我们的项目经历。 一、实验目的剖析 这个项目…

QMK键盘固件自定义指南 - 打造你的专属键盘体验

QMK键盘固件自定义指南 - 打造你的专属键盘体验 🚀 前言 在机械键盘的世界里,QMK固件让你的键盘不再只是简单的输入设备,而是可以按照你的意愿定制的强大工具。本文将深入浅出地介绍如何自定义QMK键盘的行为,从基础概念到高级应…

5.9培训

文件上传 先找文件上传的地方,打开代理链接BP,它需要一个xls文件 我们创建一个sqzr.xls bp拦截了之后,我们修改请求,把后缀改成php,发送请求 找到我们的静态资源所在的位置 访问http://192.168.1.100:81/static/upload…

【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit

1.问题描述: 预览PDF文件,文档上所描述的loadDocument接口,可以返回文件的状态,并无法实现PDF的预览,是否有能预览PDF相关接口? 解决方案: 1、执行loadDocument进行加载PDF文件后&#xff0c…

AutoDL实现端口映射与远程连接AutoDL与Pycharm上传文件到远程服务器(李沐老师的环境)

文章目录 以上配置的作用前提AutoDL实现端口映射远程连接AutoDLPycharm上传文件到远程服务器以上配置的作用 使用AutoDL的实例:因本地没有足够强的算力,所以需要使用AutoDL AutoDL端口映射:当在实例上安装深度学习的环境,但因为实例的linux系统问题,无法图形化显示d2l中的文件…

【Linux系列】跨平台安装与配置 Vim 文本编辑器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

CountDownLatch 并发编程中的同步利器

CountDownLatch 并发编程中的同步利器 文章目录 CountDownLatch 并发编程中的同步利器一、CountDownLatch 基础概念1.1 什么是 CountDownLatch?1.2 CountDownLatch 的核心方法1.3 基本使用示例 二、CountDownLatch 实战应用2.1 应用场景一:并行任务协调2…

Linux 内核链表宏的详细解释

&#x1f527; Linux 内核链表结构概览 Linux 内核中的链表结构定义在头文件 <linux/list.h> 中。核心结构是&#xff1a; struct list_head {struct list_head *next, *prev; }; 它表示一个双向循环链表的节点。链表的所有操作都围绕这个结构体展开。 &#x1f9e9; …