我有以下熊猫数据框Top15:
Top15
我创建了一个列来估计每人可引用文档的数量:
Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita'] Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']
我想知道人均可引用文献数量与人均能源供应量之间的相关性。所以我使用.corr()方法(皮尔逊相关):
.corr()
data = Top15[['Citable docs per Capita','Energy Supply per Capita']] correlation = data.corr(method='pearson')
我想返回一个数字,但结果是:
没有实际数据很难回答这个问题,但我想你正在寻找这样的东西:
Top15['Citable docs per Capita'].corr(Top15['Energy Supply per Capita'])
这会计算两列之间的相关性 'Citable docs per Capita'和'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按预期给出。
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
命令
返回
0.99586
正如预期的那样,它仍然接近 1。
如果您.corr直接应用于您的数据框,它将返回您的列之间的所有成对相关性;这就是为什么您然后1s在矩阵的对角线观察(每列与其自身完全相关)。
.corr
1s
df.corr()
因此将返回
A B A 1.000000 0.995862 B 0.995862 1.000000
在您显示的图形中,仅表示相关矩阵的左上角(我假设)。