首页 > pandas 阅读数:24

pandas相关分析

相关分析(Correlation Analysis)用于研究现象之间是否存在某种依存关系,并探讨具有依存关系的现象的相关方向以及相关程度,是研究随机变量之间相关关系的一种统计方法。

线性相关关系主要采用皮尔逊(Pearson)相关系数 r 来度量连续变量之间线性相关强度;r>0,线性正相关;r<0,线性负相关;r=0,表示两个变量之间不存在线性关系,但并不代表两个变量之间不存在任何关系。其相关系数见表 1。

表 1:相关系数
相关系数|r|取值范围 相关程度
0≤|r|<0.3 低度相关
0.3≤|r|<0.8 中度相关
0.8≤|r|≤1 高度相关

相关分析函数包括 DataFrame.corr() 和 Series.corr(other)。
函数说明如下:
  • 如果由数据框调用 corr() 函数,那么将会计算列与列之间的相似度;
  • 如果由序列调用 corr()方法,那么只是该序列与传入的序列之间的相关度。

函数返回值如下:
  • DataFrame 调用:返回 DataFrame;
  • Series 调用:返回一个数值型数据,大小为相关度。

【例 1】分别计算 Employee_income.xls 文件中的年龄(age)与月薪(salary)的相关系数,年龄(age)与月薪(salary)、补贴(subsidy)的相关系数,以及所有数据的相关系数矩阵。

其示例代码 test1 如下。
# -*- coding: utf-8 -*-
import pandas as pd

df = pd.read_excel('d:\data\emp_income\Employee_income.xls',
                   sheet_name='emp_income')

#计算age和salary的相关系数
corrResult1 = df.age.corr(df.salary)
print('age和salary的相关系数',corrResult1)

#计算age和salary、subsidy的相关系数
corrResult2 = df.loc[:,['age', 'salary', 'subsidy']].corr()
print('age和salary、subsidy的相关系数\n',corrResult2)

#返回一个相关系数矩阵
print('返回一个相关系数矩阵\n',df.corr())

运行输出结果如下。
age和salary的相关系数 0.6781676305144909
age和salary、subsidy的相关系数
               age    salary   subsidy
age       1.000000  0.678168  0.062137
salary    0.678168  1.000000  0.067629
subsidy   0.062137  0.067629  1.000000
返回一个相关系数矩阵
              emp_id        age      salary    subsidy
emp_id      1.000000   -0.029849   -0.143666   0.043537
age        -0.029849    1.000000    0.678168   0.062137
salary     -0.143666    0.678168    1.000000   0.067629
subsidy     0.043537    0.062137    0.067629   1.000000

注意:计算相关系数的 corr() 函数只会对数据框中的数据列进行计算。