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

【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.xdnf.cn/news/5105.html

相关文章:

  • 计算机网络 4-2-2 网络层(IPv4)
  • 【Langchain】根据LCEL规范实现Runable interface
  • Vite Proxy配置详解:从入门到实战应用
  • 互联网大厂Java求职面试:AI集成场景下的技术挑战与架构设计
  • C++ 关联式容器:map,multimap,set,multiset
  • https,http1,http2,http3的一些知识
  • Spring Cloud: Nacos
  • 扫雷革命:矩阵拓扑与安全扩散的数学之美
  • SpringCloud之Gateway基础认识-服务网关
  • 【C语言练习】032. 编写带参数的函数
  • 【小记】excel vlookup一对多匹配
  • Android 13 使能user版本进recovery
  • 激活函数(sigmoid、Tanh、ReLu、softmax、softmin、LogSoftma)公式,作用,使用场景和python代码(包含示例)详解
  • 游戏引擎学习第268天:合并调试链表与分组
  • STM32中断
  • 数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall
  • 逐步理解Qt信号与槽机制
  • 【部署满血Deepseek-R1/V3】大型语言模型部署实战:多机多卡DeepSeek-R1配置指南
  • Web3 实战项目项目部署到 GitHub 和上线预览的完整指南
  • django的权限角色管理(RBAC)
  • PyTorch API 4 - 分布式通信、分布式张量
  • 【递归、搜索和回溯】二叉树中的深搜
  • Docker中运行的Chrome崩溃问题解决
  • leetcode-hot-100(哈希)
  • 产品需求分析:需求收集方法(锻造产品内核)
  • 【OpenCV】imread函数的简单分析
  • PyTorch API 8 - 工具集、onnx、option、复数、DDP、量化、分布式 RPC、NeMo
  • 【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路
  • STM32-ADC模数转换器(7)
  • 华为云Git使用与GitCode操作指南