2026年Python数据分析必学:如何用 corr 计算数据相关性?从原理到实战的完整教程

Python数据分析必学:如何用 corr 计算数据相关性?从原理到实战的完整教程在 Python 数据分析 的日常应用中 相关性用来衡量两组数值数据之间的线性关系强度与方向 通过分析相关性 我们可以快速判断一组变量的变化是否与另一组变量同步或相互背离 需要注意的是 相关性并不等同于因果关系 即使两组变量之间存在强相关 也不能直接推断一个变量会导致另一个变量发生变化 这一点是进行任何深入推断前必须牢记的基本原则 常见的相关系数类型包括 Pearson 相关性

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



Python 数据分析的日常应用中,相关性用来衡量两组数值数据之间的线性关系强度与方向。通过分析相关性,我们可以快速判断一组变量的变化是否与另一组变量同步或相互背离。

需要注意的是,相关性并不等同于因果关系。即使两组变量之间存在强相关,也不能直接推断一个变量会导致另一个变量发生变化。这一点是进行任何深入推断前必须牢记的基本原则

常见的相关系数类型包括Pearson相关性Spearman相关性Kendall相关性。其中,Pearson关注数值型数据的线性关系,SpearmanKendall则基于数据的秩次,适用于非线性但单调关系的情形。

在数据预处理阶段,选择合适的相关系数对后续分析至关重要。对非正态分布或存在极端值的情形,Spearman/Kendall往往比Pearson更稳健;而在需求明确测量线性关系时,Pearson通常是首选。

Pearson相关系数基于两组数据的协方差与标准差,公式为 r = cov(X,Y) / (std(X) * std(Y)),取值范围在 [-1,1],数值越接近 ±1,线性关系越强。

Spearman和Kendall则是基于数据的秩次来度量相关性。它们对极端值更鲁棒,适用于非线性但单调的关系。秩相关的解释与Pearson不同,反映的是排序关系的一致性。

一个常见误区是把相关性等价于因果性。请记住:相关性不等于因果性,且相关系数对缺失值、异常值极为敏感。

在计算相关性时,样本量、变量筛选、数据清洗等因素会显著影响结果。对异常值进行处理、确保数据是数值型或已适当转换,是获得可信相关性的关键步骤。

在实际的数据分析任务中,最常用的工具是 Pandas 的 DataFrame.corr 方法。默认的方法是 Pearson,还支持 spearmankendall 等选项,应根据数据特征选择合适的实现。

利用 corr 可以快速得到一个相关性矩阵,矩阵中的每对变量之间的相关系数直接显示两两关系的强弱和方向,便于后续的筛选与可视化。

import pandas as pd# 假设读取到一个包含数值列的 DataFrame df = pd.DataFrame({‘A’: [1.0, 2.1, 3.2, 4.3, 5.5],‘B’: [2.0, 4.0, 5.0, 7.0, 9.0],‘C’: [5.0, 3.2, 1.8, 4.4, 2.2] })# 提取数值列并计算 Pearson 相关矩阵(默认) corr_matrix = df.corr(method=‘pearson’) print(corr_matrix) 

在实际场景中,可以通过参数 method 指定 spearmankendall 来得到不同的相关性矩阵,从而对数据的关系有多角度的理解。

在真实数据集上,缺失值处理是影响 corr 结果的关键步骤。通常的做法包括删除包含缺失值的行(dropna)或对缺失值进行插补(fillna),以确保相关性计算的准确性。

另外,数据类型过滤也很重要。应先通过 select_dtypes(include=‘number’) 选择数值列,避免对文本列进行相关性计算导致错误或误解。

# 处理缺失值和筛选出数值列的示例 import pandas as pddf = pd.read_csv(‘dataset.csv’)

仅保留数值列

num_df = df.select_dtypes(include=‘number’)# 删除包含缺失值的行,得到干净数据集 clean_df = num_df.dropna()corr_matrix = clean_df.corr(method=‘pearson’) print(corr_matrix)

除了直接查看矩阵,使用热力图等可视化工具可以更直观地展现各变量之间的相关性强弱。常用的库有 seabornmatplotlib

可视化有助于发现强相关特征组合,为特征选择或降维提供直观依据。

import seaborn as sns import matplotlib.pyplot as plt import pandas as pd# 假设 corr_matrix 已经通过 df.select_dtypes(…).corr() 得到

这里直接用一个示例矩阵

corr_matrix = pd.DataFrame({‘A’: [1.0, 0.85, -0.2],‘B’: [0.85, 1.0, -0.3],‘C’: [-0.2, -0.3, 1.0] }, index=[‘A’,‘B’,‘C’])plt.figure(figsize=(6,4)) sns.heatmap(corr_matrix, annot=True, cmap=‘coolwarm’, vmin=-1, vmax=1) plt.title(‘变量相关性热力图’) plt.show()

在真正的分析任务中,第一步通常是加载数据、筛选数值列、处理缺失值,并对异常值进行初步检测。通过这些步骤,可以确保后续的相关性分析是基于可靠数据的。

接着,选择要分析的变量集合,避免无关或文本型特征干扰相关性计算结果,确保 分析目标与变量筛选一致。

完成数据清洗后,使用 df.corr(method=‘pearson’) 得到相关矩阵;若数据量较大,可以先对感兴趣的子集进行分析,避免计算资源浪费。

解读时关注对角线以外的元素:正相关接近 1 表示同方向变动,负相关接近 -1 表示反方向变动,接近 0 则表示弱相关。对显著强相关的特征组合,可以进行进一步的因果分析或特征工程。

import pandas as pd import numpy as npnp.random.seed(0)

示例数据:三列特征与目标之间的简单关系

df = pd.DataFrame()# 让 target 与 feature_1 有较强线性关系 df[‘target’] = 0.8 * df[‘feature_1’] + np.random.normal(0, 0.2, 100)# 选择数值列并计算相关性 corr_matrix = df[[‘feature_1’,‘feature_2’,‘target’]].corr(method=‘pearson’) print(corr_matrix)

得到相关矩阵后,可以利用强相关特征进行降维、特征选择或建模前的预处理。对于高度相关的特征对,考虑保留一个代表以避免多重共线性带来的问题。

在这一步,若需要直观洞察,可以使用热力图可视化相关结构,帮助团队快速对齐分析目标与数据集结构。

# 进一步可视化示例(与前面的相关矩阵结合) import seaborn as sns import matplotlib.pyplot as pltsns.heatmap(corr_matrix, annot=True, cmap=‘viridis’) plt.title(‘相关性热力图(Pearson)’) plt.show() 

小讯
上一篇 2026-04-12 17:11
下一篇 2026-04-12 17:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/252664.html