【Pandas】pandas DataFrame corr

news2025/5/11 14:15:56

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 pd

df = 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 np

df_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 pearsonr

def 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.coloradmin.cn/o/2373184.html

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

相关文章

【并发编程】基于 Redis 手写分布式锁

目录 一、基于 Redis 演示超卖现象 1.1 Redis 超卖现象 1.2 超卖现象解决方案 二、Redis 的乐观锁机制 2.1 原生客户端演示 2.2 业务代码实现 三、单机部署 Redis 实现分布式锁 3.1 分布式锁的演变和升级 3.2 setnx 实现分布式锁 3.2.1 递归调用实现分布式锁 3.2.2 循…

Jsp技术入门指南【十二】自定义标签

Jsp技术入门指南【十二】自定义标签 前言一、什么是标签二、标签的类型有哪些?1. 空标签2. 带有属性的标签3. 带主体的标签 三、自定义标签的部件3.1 自定义标签的四步骤3.2 标签处理程序3.3 自定义标签的开发及使用步骤第一步:创建标签助手类第二步&…

Java—— 泛型详解

泛型概述 泛型是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式&#xff1a;<数据类型> 注意&#xff1a;泛型只能支持引用数据类型。 泛型的好处 没有泛型的时候&#xff0c;可以往集合中添加任意类型的数据&#x…

GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系

大模型时代浪潮汹涌,作为其中的领军者,OpenAI 其推出的系列模型以强大的能力深刻影响着整个行业,并常常成为业界其他公司对标和比较的基准。因此,深入了解 OpenAI 的大模型,不仅是为了使用它们,更是为了理解当前大模型的能力边界和发展趋势,这对于我们评估和选择其他各类…

Kubernetes生产实战(十二):无工具容器网络连接数暴增指南

当线上容器突然出现TCP连接数暴涨&#xff0c;而容器内又没有安装任何调试工具时&#xff0c;如何快速定位问题&#xff1f;本文将分享一套经过大型互联网公司验证的排查方案&#xff0c;涵盖从快速应急到根因分析的全流程。 一、快速锁定问题容器 查看pod 连接数方式&#x…

MySQL的Order by与Group by优化详解!

目录 前言核心思想&#xff1a;让索引帮你“排好序”或“分好组”Part 1: ORDER BY 优化详解1.1 什么是 Filesort&#xff1f;为什么它慢&#xff1f;1.2 如何避免 Filesort&#xff1f;—— 利用索引的有序性1.3 EXPLAIN 示例 (ORDER BY) Part 2: GROUP BY 优化详解2.1 什么是…

软件测试——用例篇(3)

目录 一、设计测试用例的具体方法 1.1等价类 1.1.1等价类概念介绍 1.1.2等价类分类 1.2边界值 1.2.1边界值分析法 1.2.2边界值分类 1.3正交法 1.3.1正交表 1.3.2正交法设计测试用例步骤 1.4判定表法 1.4.1判定表 1.4.2判定表方法设计测试用例 1.5 场景法 1.6错误…

在 Win11 下安装 Wireshark 的详细步骤

目录 一、了解 Wireshark1. 作用和功能2. 使用步骤 二、下载安装包三、运行安装包四、使用 Wireshark1. 抓包2. 窗口介绍3. 过滤器&#xff08;显示 / 捕获过滤器&#xff09;4. 保存过滤后的报文1&#xff09;显示过滤器表达式&#xff08;了解&#xff09;2&#xff09;过滤表…

AI编程: 使用Trae1小时做成的音视频工具,提取音频并识别文本

背景 在上个月&#xff0c;有网页咨询我怎么才能获取视频中的音频并识别成文本&#xff0c;我当时给他的回答是去问一下AI&#xff0c;让AI来给你答案。 他觉得我在敷衍他&#xff0c;大骂了我一顿&#xff0c;大家觉得我的回答对吗&#xff1f; 小编心里委屈&#xff0c;我…

RTC实时时钟DS1337S/PT7C4337WEX国产替代FRTC1337S

NYFEA徕飞公司的FRTC1337S串行实时时钟是一种低功耗时钟/日历&#xff0c;被设计成可以无缝替代市场上流行的DS1337S和PT7C4337WEX(SOP8)两种型号, 具有两个可编程的时钟闹钟和一个可编程方波输出。 地址和数据通过2线双向总线串行传输。时钟/日历提供秒、分钟、小时、天、日期…

Vue3.5 企业级管理系统实战(十七):角色管理

本篇主要探讨角色管理功能&#xff0c;其中菜单权限这里先不实现&#xff0c;后续在菜单管理中再进行实现。接口部分依然是使用 Apifox mock 的。 1 角色 api 在 src/api/role.ts 中添加角色相关 api&#xff0c;代码如下&#xff1a; //src/api/role.ts import service fro…

QTableWidget实现多级表头、表头冻结效果

最终效果&#xff1a; 实现思路&#xff1a;如果只用一个表格的话写起来比较麻烦&#xff0c;可以考虑使用两个QTableWidget组合&#xff0c;把复杂的表头一个用QTableWidget显示&#xff0c;其他内容用另一个QTableWidget。 #include "mainwindow.h" #include &qu…

A2A大模型协议及Java示例

A2A大模型协议概述 1. 协议作用 A2A协议旨在解决以下问题&#xff1a; 数据交换&#xff1a;不同应用程序之间的数据格式可能不一致&#xff0c;A2A协议通过定义统一的接口和数据格式解决这一问题。模型调用&#xff1a;提供标准化的接口&#xff0c;使得外部应用可以轻松调…

CMake 入门实践

CMake 入门实践 第一章 概念与基础项目1.1 CMake 基础认知1.2 最小 CMake 项目1.3 构建流程验证 第二章 多文件项目管理2.1 项目结构2.2 源码示例2.3 CMake 配置 第三章 库文件管理实战3.1 项目结构3.2 核心配置3.3 接口设计 第四章 构建类型与编译优化4.1 构建类型配置4.2 构建…

异地多活单元化架构下的微服务体系

治理服务间的跨IDC调用&#xff0c;而数据库层面还是要跨IDC 服务注册中心拆开、 金融要求&#xff0c;距离太远&#xff0c;异地备库&#xff0c;如果延迟没读到数据就可能有资损&#xff0c;IDC3平时不能用&#xff0c;IDC1挂了还是有数据同步问题&#xff0c;IDC3日常维护…

HarmonyOS NEXT——DevEco Studio的使用(还没写完)

一、IDE环境的搭建 Windows环境 运行环境要求 为保证DevEco Studio正常运行&#xff0c;建议电脑配置满足如下要求&#xff1a; 操作系统&#xff1a;Windows10 64位、Windows11 64位 内存&#xff1a;16GB及以上 硬盘&#xff1a;100GB及以上 分辨率&#xff1a;1280*8…

Windows系统Jenkins企业级实战

目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包&#xff08;JDK&#xff09; Jenkins是基于Java的应用程序&#xff0c;因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…

C# 方法(ref局部变量和ref返回)

>本章内容: 方法的结构 方法体内部的代码执行 局部变量 局部常量 控制流 方法调用 返回值 返回语句和void方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 ref局部变量和ref返回 …

滑动窗口,438找出字符串中所有字母的异位词

1.题目 2.解析 这道题我们用滑动窗口来实现&#xff0c;加上哈希表和vector容器的使用来实现这道题目&#xff0c;每次滑动之后我们都对其和答案进行比较&#xff0c;如果全部相等我们返回left&#xff0c;不相等继续滑动即可。 本质就是我们把p中相同数量的字母框起来&#…

「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具

引言&#xff1a;从Proteus到国产平台的范式革新 在高校嵌入式实验教学中&#xff0c;仿真工具的选择直接影响学生的工程能力培养与创新思维发展。长期以来&#xff0c;Proteus作为经典工具占据主导地位&#xff0c;但其设计理念已难以满足现代复杂系统教学与国产化技术需求。…