pandas系列之相关系数

1,031 阅读2分钟

本文用到的表格内容如下:

image-20210725233545132.png

1.相关性指标

从前面的第二十一篇到第二十六篇是对数据整体的情况进行描述,但是我们有时候需要了解数据整体内的变量之间存在什么关系,我们把用来反映这种数据内部变量之间关系的指标叫相关系数,通常用r进行表示

565d6ddbd305158d2e80faf420df4417.svg

其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差

关于相关系数需要注意以下几点:

相关系数r的范围为[-1, 1]

r的绝对值越大,表示相关性越强

r的正负代表相关性的方向,正代表正相关,负代表负相关

注:

要指出的是,相关系数有一个明显的缺点,即它接近于1的程度与数据组数n相关,这容易给人一种假象。因为,当n较小时,相关系数的波动较大,对有些样本相关系数的绝对值易接近于1;当n较大时,相关系数的绝对值容易偏小。特别是当n=2时,相关系数的绝对值总为1。因此在样本容量n较小时,我们仅凭相关系数较大就判定变量x与y之间有密切的线性关系是不妥当的。

2.相关关系与因果关系

相关关系不等于因果关系,相关关系只能说明两件事有关联,因果关系是说一件事导致了另一件事的发生。

3.相关性运算

相关性运算主要使用到的是corr函数

先来看一下原始情形:

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)

result:

   数学成绩  语文成绩  英语成绩
0    89    78    98
1    35    34    34
2    43    56    25
3    35    78    83
4    67    46    65
5    89    89    83
6    96    45    83
7    35    67    45
8    35    78    83

3.1求取两列之间的相关系数

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df['语文成绩'].corr(df['数学成绩']))

result:

0.10384855207267871

3.2 求取整个DataFrame表中各个字段两两之间的相关性

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.corr())

result:

          数学成绩      语文成绩      英语成绩
​
数学成绩  1.000000  0.103849  0.577708
语文成绩  0.103849  1.000000  0.581342
英语成绩  0.577708  0.581342  1.000000