一尘不染

使用 .corr 获取两列之间的相关性

all

我有以下熊猫数据框Top15在此处输入图像描述

我创建了一个列来估计每人可引用文档的数量:

Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']
Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']

我想知道人均可引用文献数量与人均能源供应量之间的相关性。所以我使用.corr()方法(皮尔逊相关):

data = Top15[['Citable docs per Capita','Energy Supply per Capita']]
correlation = data.corr(method='pearson')

我想返回一个数字,但结果是: 在此处输入图像描述


阅读 52

收藏
2022-09-06

共1个答案

一尘不染

没有实际数据很难回答这个问题,但我想你正在寻找这样的东西:

Top15['Citable docs per Capita'].corr(Top15['Energy Supply per Capita'])

这会计算两列之间的相关性 'Citable docs per Capita''Energy Supply per Capita'.

举个例子:

import pandas as pd

df = pd.DataFrame({'A': range(4), 'B': [2*i for i in range(4)]})

   A  B
0  0  0
1  1  2
2  2  4
3  3  6

然后

df['A'].corr(df['B'])

1按预期给出。

现在,如果你改变一个值,例如

df.loc[2, 'B'] = 4.5

   A    B
0  0  0.0
1  1  2.0
2  2  4.5
3  3  6.0

命令

df['A'].corr(df['B'])

返回

0.99586

正如预期的那样,它仍然接近 1。

如果您.corr直接应用于您的数据框,它将返回您的列之间的所有成对相关性;这就是为什么您然后1s在矩阵的对角线观察(每列与其自身完全相关)。

df.corr()

因此将返回

          A         B
A  1.000000  0.995862
B  0.995862  1.000000

在您显示的图形中,仅表示相关矩阵的左上角(我假设)。

2022-09-06