详解pandas.DataFrame.corr()(计算数据框相关系数)函数使用方法

  • Post category:Python

pandas.DataFrame.corr()

在 pandas 中,DataFrame.corr() 是用来计算 DataFrame 中各列之间的相关关系的方法。相关系数是常用的统计量,可以用来分析两个变量之间是否存在线性关系,以及线性关系的强度和方向。

DataFrame.corr() 的返回值是一个矩阵,其中每个元素表示对应列之间的相关系数。默认情况下,计算的是列之间的皮尔逊相关系数。相关系数的取值范围是[-1,1],绝对值越接近1说明相关性越强,越接近0说明相关性较弱或者不存在相关性。

使用方法

参数如下:

  • method:计算相关系数的方法,默认为 pearson,也可以取得 kendall 和 spearman。

  • min_periods:可选,表示需要参与计算的的数据点的最小数量。例如,在计算两列之间的相关系数时,如果其中有一列存在大量的缺失值,那么可以设置 min_periods 参数来过滤掉这些缺失值。默认值是1。

实例1

下面的例子演示了利用 corr() 方法计算两个 DataFrame 列之间的相关系数,并绘制热力图,以更加直观地展示它们之间的相关性。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv('data.csv')
corr = df[['col1', 'col2', 'col3', 'col4']].corr()

sns.heatmap(corr, annot=True, cmap='coolwarm', vmax=1.0, vmin=-1.0, linewidths=2)
plt.show()

以上代码中,df 是一个 DataFrame 对象,读取的是一个 CSV 文件中的数据,包含多个列。我们用 corr() 方法计算了 4 列之间的相关系数,并将结果保存在 corr 变量中。然后,利用 seaborn 库的 heatmap() 方法画出了热力图。

画出的热力图中,每个格子的颜色越接近红色,表示两列之间的正相关性越强;越接近蓝色,表示两列之间的负相关性越强;越接近白色,表示两列之间的相关性较弱或者不存在相关性。

实例2

下面的例子演示了如何利用 corr() 方法计算 DataFrame 中所有列的相关系数,并选取相关系数大于 0.5 的列,输出这些列的名称。

import pandas as pd

df = pd.read_csv('data.csv')
corr = df.corr()

cols = corr.columns
selected_cols = []

for c in cols:
    if abs(corr[c][corr[c] > 0.5]) > 0:
        selected_cols.append(c)

print(selected_cols)

以上代码中,df 是一个 DataFrame 对象,读取的是一个 CSV 文件中的数据,包含多个列。我们用 corr() 方法计算了每两列之间的相关系数,并将结果保存在 corr 变量中。然后,遍历所有的列,找出与其他列之间的相关系数大于 0.5 的列,将它们的名称保存在 selected_cols 列表中,最后输出这个列表。

输出的结果是一个 Python 列表,包含了相关性比较强的列的名称。