重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用python进行相关性分析应该主要根据数据的内容进行分析,如果是带标注的数据可以通过模型训练的方式来获取进行分析,找出对目标结果有最大影响的因素。如果没有标注的话,可以用python构建网络知识图谱手动分析,或者自己构建数据表格,人为观察数据分布图找到其中规律。一般来说相关性分析,主要依靠人为的观察,并用数据和模型来辅助计算,从而获得相对准确的结果。
创新互联是一家专注于成都网站建设、网站建设与策划设计,尼泸西网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:尼泸西等地区。尼泸西做网站价格咨询:028-86922220
1. 运算优先级
括号、指数、乘、除、加、减
2
如果你使用了非 ASCII 字符而且碰到了编码错误,记得在最顶端加一行 # -- coding: utf-8 --
3. Python格式化字符
使用更多的格式化字符。例如 %r 就是是非常有用的一个,它的含义是“不管什么都打印出来”。
%s -- string
%% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
%c 转换成字符(ASCII 码值,或者长度为一的字符串)
%r 优先用repr()函数进行字符串转换(Python2.0新增)
%s 优先用str()函数进行字符串转换
%d / %i 转成有符号十进制数
%u 转成无符号十进制数
%o 转成无符号八进制数
%x / %X (Unsigned)转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)
%e / %E 转成科学计数法(e / E控制输出e / E)
%f / %F 转成浮点数(小数部分自然截断)
%g / %G : %e和%f / %E和%F 的简写
%% 输出%
辅助符号 说明
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号(+)
sp 在正数前面显示空格
# 在八进制数前面显示零(0),在十六进制前面显示“0x”或者“0X”(取决于用的是“x”还是“X”)
0 显示的数字前面填充“0”而不是默认的空格
m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
参考文献:
1. python 皮尔森相关系数
2. 统计学之三大相关性系数(pearson、spearman、kendall)
皮尔森系数
重点关注第一个等号后面的公式,最后面的是推导计算,暂时不用管它们。看到没有,两个变量(X, Y)的皮尔森相关性系数(ρX,Y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。
公式的分母是变量的标准差,这就意味着计算皮尔森相关性系数时,变量的标准差不能为0(分母不能为0),也就是说你的两个变量中任何一个的值不能都是相同的。如果没有变化,用皮尔森相关系数是没办法算出这个变量与另一个变量之间是不是有相关性的。
皮尔森相关系数(Pearson correlation coefficient)也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数。皮尔森相关系数是用来反映两个变量线性相关程度的统计量。相关系数用r表示,其中n为样本量,分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的绝对值越大表明相关性越强。
简单的相关系数的分类
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关
r描述的是两个变量间线性相关强弱的程度。r的取值在-1与+1之间,若r0,表明两个变量是正相关,即一个变量的值越大,另一个变量的值也会越大;若r0,表明两个变量是负相关,即一个变量的值越大另一个变量的值反而会越小。r 的绝对值越大表明相关性越强,要注意的是这里并不存在因果关系。
斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解,这种表征形式就没有了求皮尔森相关性系数时那些限制。下面来看一下它的计算公式:
计算过程就是:首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果
带入公式,求得斯皮尔曼相关性系数:ρs= 1-6 (1+1+1+9)/6 35=0.657
而且,即便在变量值没有变化的情况下,也不会出现像皮尔森系数那样分母为0而无法计算的情况。另外,即使出现异常值,由于异常值的秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以对斯皮尔曼相关性系数的影响也非常小!
由于斯皮尔曼相关性系数没有那些数据条件要求,适用的范围就广多了。
肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。
分类变量可以理解成有类别的变量,可以分为
无序的,比如性别(男、女)、血型(A、B、O、AB);
有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。
通常需要求相关性系数的都是有序分类变量。
举个例子。比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用肯德尔相关性系数进行衡量。
pandas.DataFrame.corr()
DataFrame.corr(method='pearson', min_periods=1)[source]
Compute pairwise correlation of columns, excluding NA/null values
Parameters:
method : {‘pearson’, ‘kendall’, ‘spearman’}
pearson : standard correlation coefficient
kendall : Kendall Tau correlation coefficient
spearman : Spearman rank correlation
min_periods : int, optional
Minimum number of observations required per pair of columns to have a valid result. Currently only available for pearson and spearman correlation
Returns:
y : DataFrame
numpy.corrcoef(x,y = None,rowvar = True,bias = class'numpy._globals._NoValue',ddof = class'numpy._globals._NoValue' )
返回Pearson乘积矩相关系数。
cov有关更多详细信息,请参阅文档。相关系数矩阵R和协方差矩阵C之间的关系为
R的值在-1和1之间(含)。
参数:
x:array_like
包含多个变量和观察值的1维或2维数组。x的每一行代表一个变量,每一列都是对所有这些变量的单独观察。另请参阅下面的rowvar。
y:array_like,可选
一组额外的变量和观察。y的形状与x相同。
rowvar:布尔,可选
如果rowvar为True(默认),则每行表示一个变量,并在列中有观察值。否则,该关系将被转置:每列表示一个变量,而行包含观察值。
bias : _NoValue, optional Has no effect, do not use. Deprecated since version 1.10.0.
ddof : _NoValue, optional Has no effect, do not use. Deprecated since version 1.10.0.
返回:
R:ndarray 变量的相关系数矩阵。
线性相关:主要采用皮尔逊相关系数来度量连续变量之间的线性相关强度;
线性相关系数|r| 相关程度
0=|r|0.3 低度相关
0.3=|r|0.8 中度相关
0.8=|r|1 高度相关
1 函数
相关分析函数:
DataFrame.corr()
Series.corr(other)
说明:
如果由数据框调用corr方法,那么将会计算每个列两两之间的相似度
如果由序列调用corr方法,那么只是计算该序列与传入序列之间的相关度
返回值:
dataFrame调用:返回DataFrame
Series调用: 返回一个数值型,大小为相关度
2 案例
import pandas
data=pandas.read_csv('C:\\Users\\Desktop\\test.csv')
print(data.corr())
#由数据框调用corr方法,将会计算每个列两两之间的相似度,返回的是一个矩形
print(data['人口'].corr(data['文盲率']))
#由某一列调用corr方法,只是计算该序列与传入序列(本例中的'文盲率')之间的相关度
print(data['超市购物率','网上购物率','文盲率','人口']).corr()
假如你有两个表格:每个表格中有至少两列或者好多列,如下图例子中用到的表格只有3列,以空格分隔,第一列是名称,第二列是观察值,第三列也是观测值。
你想根据两个文件中共有的某一列的值算相关性:
首先根据两个文件中共同列求交集,然后输出交集部分的指定列的信息。
比如,两个文件中都有第一列的信息,然后输出第一个文件中第三列,和第二个文件中第三列的信息。
输出文件为一个新生成的表格。
该表格具有三列:
第一列为两个文件中共有列的共有数据;
第二列和第三列分别是来自第一个文件中指定列和第二个文件中的指定列。
然后用第二个脚本(R脚本)画相关性图:
画相关性的脚本也支持将数据取对数log或者非log形式:
基本参数 -a -b,两个输入文件,必须加
选择性参数:这些参数都有默认值,看清楚即可。
-ka,-kb 表示a文件的key列,b文件的key列,就是共有列,要以这两列为key去提取。
-va,-vb 表示a文件的value列,b文件的value列,就是你要比较的数据的值所在的列,可以使数字类型,也可以是字符串类型的值。
-sa,-sb 表示a文件的分割符,b文件的分隔符。
-headera,-headerb 加了哪个表示那个文件有header,不加表示没有header。
-f [布尔类型] 表示是否计算数值占总体的比例,默认False不计算。
-u [布尔类型] 表示输出key列的并集(合集),默认不加-u参数。
1)美化图片,配色,线条需要美化一下下。
2)偏离点如何查看,什么意义?
*20200501:支持以“comma”,“,”分割的文件,只需在参数-sa或-sb中设置comma即可
该脚本已经发展成为了根据两个文件中共有的某一列来提取相关信息的脚本。
这两个脚本在个人的项目中非常实用。经常用来做相关性图,因此写成通用工具更加方便。
当然如果你已经有了第一步结果的表格,直接用第二个R脚本画图即可。
python脚本使用的全部为python内置的包,无需安装其他包,测试使用的是python 2.7及python3中都适用。
R脚本需要安装ggplot2. 测试使用的R版本为 3.5.1
需要脚本的点赞并私信我哦。