Pandas 数据相关性

寻找关系

Pandas 模块的一个很棒的方面是 corr() 方法。

corr() 方法计算数据集中每列之间的关系。

本页中的例子使用了一个名为 'data.csv' 的 CSV 文件。

下载 data.csv,或在浏览器中打开 data.csv

实例

显示列之间的关系:

df.corr()

亲自试一试

结果

          Duration     Pulse  Maxpulse  Calories
Duration  1.000000 -0.155408  0.009403  0.922721
Pulse    -0.155408  1.000000  0.786535  0.025120
Maxpulse  0.009403  0.786535  1.000000  0.203814
Calories  0.922721  0.025120  0.203814  1.000000

注意:corr() 方法会忽略“非数字”列。

结果解释

corr() 方法的结果是一个包含许多数字的表格,这些数字表示两列之间的关系有多好。

该数字的范围从 -1 到 1。

1 意味着存在 1 对 1 的关系(完全相关),对于此数据集,每当第一列中的值上升时,另一列中的值也会上升。

0.9 也是很好的关系,如果你增加一个值,另一个值也可能会增加。

-0.9 与 0.9 一样有着良好的关系,但是如果你增加一个值,另一个值可能会下降。

0.2 意味着关系不好,这意味着一个值的上升并不意味着另一个值也会上升。

什么是好的相关性?这取决于用途,但我认为可以肯定的是,你必须至少达到 0.6(或 -0.6)才能称其为好的相关性。

完美相关:

我们可以看到 "Duration" 和 "Duration" 得到了数字 1.000000,这是有道理的,每列始终与自身有完美的关系。

好的相关性:

"Duration" 和 "Calories" 的相关性为 0.922721,这是非常好的相关性,我们可以预测锻炼的时间越长,燃烧的卡路里就越多,反之亦然:如果你燃烧了很多卡路里,你可能锻炼了很长时间。

不好的相关性:

"Duration" 和 "Maxpulse" 的相关性为 0.009403,这是非常不好的相关性,这意味着我们无法仅通过查看锻炼的持续时间来预测最大脉搏,反之亦然。