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 列表,包含了相关性比较强的列的名称。