Pandas 数据关联性

查找关联性

Pandas 模块的一个重要方面是 corr() 方法。

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

下面的例子都使用的一个叫做 "data.csv" 的 CSV 文件。

下载 CSV 文件,或者在浏览器中查看 CSV 文件

实例

展示每列之间的关系:

  1. import pandas as pd
  2. df = pd.read_csv('data.csv')
  3. print(df.corr())
结果
  1. Duration Pulse Maxpulse Calories
  2. Duration 1.000000 -0.155408 0.009403 0.922721
  3. Pulse -0.155408 1.000000 0.786535 0.025120
  4. Maxpulse 0.009403 0.786535 1.000000 0.203814
  5. 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 相关性,这是一种非常糟糕的相关性,意味着我们不能仅仅通过观察运动的持续时间来预测心率的变化,反之亦然。