Python dataframe 相关系数和协方差

相关系数和协方差:

一.协方差
只表示线性相关的方向,取值正无穷到负无穷。
也就是说,协方差为正值,说明一个变量变大另一个变量也随之变大(正相关);取负值说明一个变量变大另一个变量变小(负相关),取0说明两个变量没有相关关系。

注意:协方差的绝对值不反映线性相关的程度(其绝对值与变量的取值范围有关系)。

二.相关系数
不仅表示线性相关的方向,还表示线性相关的程度,取值[-1,1]。

也就是说,相关系数为正值,说明一个变量变大另一个变量也变大;取负值说明一个变量变大另一个变量变小,取0说明两个变量没有相关关系。
同时,相关系数的绝对值越接近1,线性关系越显著。
通常情况下,当相关系数的绝对值大于2/sqrt(N),N为样本点的数量时,我们认为线性关系是存在的。

#协方差确定两个变量的关系,即正相关,负相关/无关
#相关系数确定两个变量的关系&相关程度

协方差计算

dataframe.cov(): 计算所有变量之间的协方差

import pandas as pd
import numpy as np
from pandas import DataFrame

data = pd.DataFrame({
        "年龄":[8,9,10,11,12],
        "身高":[130,135,140,141,150],
        '得分':[90,80,70,60,50]
    })
print(data.cov())
#输出
      年龄     身高     得分
年龄   2.5   11.5  -25.0
身高  11.5   55.7 -115.0
得分 -25.0 -115.0  250.0
#可以看出 身高和年龄呈正相关,得分和年龄呈负相关...

series.cov(series): 计算指定变量之间的协方差

print(data['年龄'].cov(data['得分']))
#输出
-25.0  #表明二者为负相关

相关系数计算

dataframe.corr():计算所有变量之间的相关系数

data = pd.DataFrame({
        "年龄":[8,9,10,11,12],
        "身高":[130,135,140,141,150],
        '得分':[90,80,70,60,50]
    })
print(data.corr())
#输出
          年龄        身高        得分
年龄  1.000000  0.974541 -1.000000
身高  0.974541  1.000000 -0.974541
得分 -1.000000 -0.974541  1.000000

#得分和年龄几乎呈完全负相关,年龄和身高呈正相关,并且相关度很高

series.corr(series): 计算指定变量之间的协方差

print(data['年龄'].corr(data['得分']))
#输出
-1.0

#得分和年龄呈完全负相关

猜你喜欢

转载自blog.csdn.net/weixin_44595372/article/details/88078496