广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何用Python对数据进行相关性分析
  • 271
分享到

如何用Python对数据进行相关性分析

2023-06-16 10:06:51 271人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这期内容当中小编将会给大家带来有关如何用python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少

这期内容当中小编将会给大家带来有关如何用python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少,因为我们需要考虑维度之间的关系。而这些维度关系的分析就需要用一些方法来进行衡量,相关性分析就是其中一种。本文就用Python来解释一下数据的相关性分析。

在进行相关性分析之前需要介绍几个概念,一是维度,二是协方差,三是相关系数。首先来看维度,以图1为例,这是一个员工信息统计表,这里有n个员工,分别是员工1、员工2、......、员工n,每个员工有5个属性,分别是身高、体重、年龄、工龄和学历。每个员工的信息都是一个观测,也叫一个样品,本文就统称观测,每个员工的一个属性叫一个指标,也叫变量、维度或者属性,本文统称维度。所以这个图中就有n个观测和5个维度。

如何用Python对数据进行相关性分析

图1. 员工信息表

而协方差的定义就是E{ [ X - E(X) ] [ Y - E(Y) ] },记作Cov(X, Y),也就是两个维度与各自期望之差的乘积的期望,期望在离散型数据中通常是均值,比如图1中身高代表X,体重代表Y,E(X)就是身高的均值,E(Y)就是体重的均值,在利用二者分别和E(X)与E(Y)的差求协方差。而相关系数就是Cov(X, Y)/[σ(X)σ(Y)],记作ρXY,其中σ(X)和σ(Y)分别表示X和Y的标准差,所以相关系数就是两个变量的协方差除以其标准差之积。类似的,假如某个观测有p个维度,计算每个维度同所有维度之间的协方差,则会形成一个pxp的矩阵,矩阵的每个数是其相应维度之间的协方差,这个矩阵就称为协方差矩阵,协方差矩阵按照上面的方法再进一步计算就可得到相关关系矩阵。

下面就以python代码来解释一下相关性分析。

首先是数据集,本文用的数据来自绘图库seaborn自带的数据,是非常著名的鸢尾花的数据,获取方式非常简单,执行下面代码即可。这里有一个问题要提示一下,部分人在load_dataset时会出错,无法读取数据,是因为iris这个数据集不存在,这可能是因为seaborn版本的问题,如果遇到这种情况,可以去seaborn的GitHub数据网站自行下载数据,网址是https://github.com/mwaskom/seaborn-data,把下载的数据解压到seaborn-data文件夹即可,这个文件夹一般在seaborn安装目录下或者是当前工作目录下。

import seaborn as sns  data = sns.load_dataset('iris')  df = data.iloc[:, :4] #取前四列数据

这次用到的数据集共有150行、5列,我们只用到前4列数据。数据集样例如图2所示。

如何用Python对数据进行相关性分析

图2. 数据集样例

接下来我们来进行相关性分析。

首先来做一个比较简单的分析,即分析这个数据集中第1列和第3列的相关性,也就是sepal_length和petal_length这两列之间的关系。这里我们可以用numpy、scipy和pandas三种方法。首先是numpy。

import numpy as np  X = df['sepal_length']  Y = df['petal_length']  result1 = np.corrcoef(X, Y)

得到的result1结果就是一个二维矩阵,如图3所示。

如何用Python对数据进行相关性分析

图3. result1计算结果

其中矩阵主对角线上的数值都为1(主对角线就是从左上角到右下角的那条斜线),这是因为主对角线的数值都是每个观测与自己的相关性,所以都是1,毕竟X=1X,Y=1Y,每个观测都等于1乘以自身。而图3中其他不为1的数字就是相关关系数值,一共有两个,这两个值相等,因为这两个值分别表示ρXY和ρYX,其值相等。同理我们可以求df中4个维度的相关关系,代码如下,这里rowvar代表以列为维度。

result2 = np.corrcoef(df, rowvar=False)

其结果如图4所示。

如何用Python对数据进行相关性分析

图4. result2计算结果

图4是一个4x4的矩阵,共16个数据,代表每个维度同其他维度的相关关系(也包括每个维度与其自身),主对角线为1,其他数字关于主对角线对称,是一个对称矩阵。

接下来我们用scipy进行分析。代码如下。

import scipy.stats as ss  result3 = ss.pearsonr(X, Y)

这个结果是(0.8717537758865831, 1.0386674194498099e-47),其返回的是两个数,第一个数是X和Y的相关关系数值,其值和前面numpy的计算结果相同,第二个是两者不相关的概率,也就是我们统计学中常说的p值,但这个值是指不相关的概率,也就是值越小,代表越相关,我们这里的数值非常小,代表二者的线性相关程度比较大。当然如果相关关系数值为1,则p值为0。scipy中没有计算相关矩阵的方法。

最后是pandas方法。

因为前面的df本身就是pandas的DataFrame格式,所以我们可以直接拿来用。代码如下。

result4 = X.corr(Y)  result5 = df.corr()

result4结果是0.8717537758865833,result5结果如图5所示。这两个结果和前面所得的结果相同。

如何用Python对数据进行相关性分析

图5. result5计算结果

接下来是作图。对于分析相关关系,一般有两种常见的图形,一种是散点图,一种是热力图。散点图中可以清晰看到各个坐标点的分布及趋势,对于数据分析者而言,其可以更直观地了解各个维度数据之间的关系,但这种方法也有缺点,即不适合大数据量,因为数据量太大,生成图片速度会很慢,同时图片太多不利于观察;而热力图则更多从数值或颜色方面,来准确描述各个维度的关系,其传递的信息较少,但比较适合大数据量。我们首先介绍一下散点图。

生成散点图可以用seaborn或者pandas。seaborn的代码如下。

sns.pairplot(df)  sns.pairplot(df , hue ='sepal_width');

第一行代码结果如图6所示,是一张大图,其中包含16个子图,每个子图都是每个维度和其他某个维度的相关关系图,这其中主对角线上的图,则是每个维度的数据分布直方图。而第二行代码是画出同样的图形,但却以sepal_width这个维度的数据为标准,来对各个数据点进行着色,其结果如图7所示。从图中可以看出,sepal_width这列数据共23个不同的数值,每个数值一种颜色,所以生成的图是彩色的。

如何用Python对数据进行相关性分析

图6. seaborn绘制的普通相关关系图

如何用Python对数据进行相关性分析

图7. seaborn绘制的以某列数据为基准的相关关系图

而另外一种绘图方法是用pandas,其代码如下。

import pandas as pd  pd.plotting.scatter_matrix(df, figsize=(12,12),range_padding=0.5);

结果如图8所示,可以看到用pandas绘制的图和seaborn的大体结果一样,但图片的可定制程度和精细度还是略差一些,所以一般情况下建议用seaborn。

如何用Python对数据进行相关性分析

图8. pandas生成的相关关系图

最后就是热力图。其代码如下。

import matplotlib.pyplot as plt  figure, ax = plt.subplots(figsize=(12, 12))  sns.heatmap(df.corr(), square=True, annot=True, axax=ax)

刚开始写这段代码时还出现了一个小问题,如图9所示。图9当中第一行和最后一行的子图只显示了一部分,而其他子图都是完整显示,这是matplotlib的一个bug,因为seaborn是基于matplotlib的库,所以只要升级matplotlib就行了,刚开始笔者的matplotlib版本是3.1.1,现在已升级到3.2.2,这个bug已经被修复。正常图如图10所示。第二行代码中square=True表示每个子图是否以正方形显示,这里设置为True,annot=True则表示是否在图中显示每个子图的数值,这里同样设置为True。

如何用Python对数据进行相关性分析

图9. 老版本matplotlib生成的热力图

如何用Python对数据进行相关性分析

图10. 新版本matplotlib生成的热力图

从数据计算到可视化,介绍了用python求多维数据间的相关关系的多种方法,我们可以根据自己的需求来选择对应的方法。

上述就是小编为大家分享的如何用Python对数据进行相关性分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网Python频道。

--结束END--

本文标题: 如何用Python对数据进行相关性分析

本文链接: https://www.lsjlt.com/news/283136.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何用Python对数据进行相关性分析
    这期内容当中小编将会给大家带来有关如何用Python对数据进行相关性分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少...
    99+
    2023-06-16
  • 怎样用Python进行相关性分析
    今天就跟大家聊聊有关怎样用Python进行相关性分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.相关和因果是一回事吗相关性不等于因果。用x1和x2作为两个变量进行解释,相关意味...
    99+
    2023-06-16
  • 如何用Python进行回归分析与相关分析
    目录一、前言1.1 回归分析1.2 相关分析二、代码的编写2.1 前期准备2.2 编写代码2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性...
    99+
    2023-03-22
    python python回归分析 python相关分析
  • 详解Python进行数据相关性分析的三种方式
    目录相关性实现NumPy 相关性计算SciPy 相关性计算Pandas 相关性计算线性相关实现线性回归:SciPy 实现等级相关排名:SciPy 实现等级相关性:NumPy 和 Sc...
    99+
    2022-11-10
  • 使用SPSS进行相关性分析的相关步骤
    ...
    99+
    2016-11-12
    使用SPSS进行相关性分析的相关步骤
  • 如何使用Python对NetCDF数据做空间相关分析
    引言:我一直想理解空间相关分析的计算思维,于是今天又拿起Python脚本和数据来做练习。首先需要说明的是,这次实验的数据和Python脚本均来自于[好久不见]大佬,在跟大佬说明之后,...
    99+
    2022-11-12
  • Python进行数据相关性分析的三种方式是什么
    本文小编为大家详细介绍“Python进行数据相关性分析的三种方式是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python进行数据相关性分析的三种方式是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。相...
    99+
    2023-06-30
  • Python数据分析Numpy中常用相关性函数
    目录摘要:一、股票相关性分析二、多项式三、求极值的知识摘要: NumPy中包含大量的函数,这些函数的设计初衷是能更方便地使用,掌握解这些函数,可以提升自己的工作效率。这些函数包括数组...
    99+
    2022-11-11
  • 怎么使用Python对NetCDF数据做空间相关分析
    这篇文章主要介绍了怎么使用Python对NetCDF数据做空间相关分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python有哪些常用库python常用的库:1.requ...
    99+
    2023-06-14
  • python肯德尔系数相关性数据分析示例
    目录前言一、定义二、使用条件三、计算公式及代码示例1.Tau-a2.Tau-b前言 相关性分析算是很多算法以及建模的基础知识之一了,十分经典。关于许多特征关联关系以及相关趋势都可以...
    99+
    2023-02-15
    python肯德尔系数相关性 python 数据分析
  • 如何使用ContentValues对数据库进行相关操作
    本篇内容介绍了“如何使用ContentValues对数据库进行相关操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-18
  • python皮尔逊相关性数据分析分析及实例代码
    目录前言数值类型皮尔逊系数使用场景皮尔逊相关系数(Pearson correlation)1.定义2.线性关系判定3.正态检验1.KS检验4.计算代码前言 相关性分析算是很多算法以...
    99+
    2023-02-15
    python皮尔逊相关性 python 数据分析
  • python进行相关性分析并绘制散点图详解
    目录 需要用到的库数据读取总结近期,有小伙伴问我关于怎么使用python进行散点图的绘制,这个东西很简单,但是怎么讲相关性的值标注在图形上略显麻烦,因此,在这里记录一下,将...
    99+
    2022-11-12
  • Python数据分析Numpy中常用相关性函数是什么
    今天小编给大家分享一下Python数据分析Numpy中常用相关性函数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。摘要...
    99+
    2023-06-30
  • 如何进行SQLite数据库管理相关命令的使用分析
    这篇文章将为大家详细讲解有关如何进行SQLite数据库管理相关命令的使用分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  1.创建数据库  启动命令行,...
    99+
    2022-10-19
  • 如何用python进行数据分析
    Python是一个非常强大的数据分析工具,它提供了丰富的库和函数来处理、分析、可视化数据,并在各个领域得到了广泛应用。本文将介绍如何使用Python进行数据分析。以下按照流程简述如下: 数据预处理 数据预处理通常是数据分析的第一步,这个过程...
    99+
    2023-09-08
    信息可视化
  • 对Python进行数据分析_关于Package的安装问题
    一、为什么要使用Python进行数据分析? python拥有一个巨大的活跃的科学计算社区,拥有不断改良的库,能够轻松的集成C,C++,Fortran代码(Cython项目),可以同时用于研究和原型的构建以及...
    99+
    2022-06-04
    数据 Python Package
  • 使用Python进行数据分析——线性回归分析
    大家好,线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数,可以将线性回归分为一元线性回归和多元线性回归分析。 一元线性回归:就是只包含一个自变量,且该自变量与因变量之间的关系是线性关系。例如通过广...
    99+
    2023-10-04
    python 数据分析 Powered by 金山文档
  • 使用Python对零售商品进行数据分析
    目录一、主要内容:二、使用工具三、数据来源四、字段含义五、数据清洗1、查看总体数据特征2、修改列名3、检验缺失数据4、查看并转换数据类型5、查看异常值并删除六、数据分析1、总体销量数...
    99+
    2022-11-11
  • 【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析
    目录 1 描述性统计(Descriptive Statistics) 2 数据分组和聚合 3 数据透视表 4 相关性分析 1 描述性统计(Descriptive Statistics)         描述性统计是一种用于汇总和理解数据集...
    99+
    2023-09-10
    信息可视化 python pandas
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作