微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有以下pandas数据帧Top15:
    

我创建了一个列,用于估算每人可引用文档的数量

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

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

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'])

That calculates the correlation between your two columns‘人均可用文件’和’人均能源供应’.

举个例子:

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直接应用于您的数据帧,it will return all pairwise correlations between your columns;这就是为什么你在矩阵的对角线上观察1s(每列与自身完全相关)的原因.

df.corr()

因此会回来

          A         B
A  1.000000  0.995862
B  0.995862  1.000000

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

在某些情况下,您可以在解决方案中获得NaN – 请查看this post作为示例.

如果要过滤/低于特定阈值的条目,可以查看this question.
如果要绘制相关系数的热图,可以检查this answer,然后如果遇到重叠轴标签的问题,请检查the following post.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐