pandas相关分析
相关分析(Correlation Analysis)用于研究现象之间是否存在某种依存关系,并探讨具有依存关系的现象的相关方向以及相关程度,是研究随机变量之间相关关系的一种统计方法。
线性相关关系主要采用皮尔逊(Pearson)相关系数 r 来度量连续变量之间线性相关强度;r>0,线性正相关;r<0,线性负相关;r=0,表示两个变量之间不存在线性关系,但并不代表两个变量之间不存在任何关系。其相关系数见表 1。
相关分析函数包括 DataFrame.corr() 和 Series.corr(other)。
函数说明如下:
函数返回值如下:
【例 1】分别计算 Employee_income.xls 文件中的年龄(age)与月薪(salary)的相关系数,年龄(age)与月薪(salary)、补贴(subsidy)的相关系数,以及所有数据的相关系数矩阵。
其示例代码 test1 如下。
运行输出结果如下。
线性相关关系主要采用皮尔逊(Pearson)相关系数 r 来度量连续变量之间线性相关强度;r>0,线性正相关;r<0,线性负相关;r=0,表示两个变量之间不存在线性关系,但并不代表两个变量之间不存在任何关系。其相关系数见表 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() 函数只会对数据框中的数据列进行计算。