通过案例学习pandas计算相关系数

pandas计算相关系数

在数据分析和统计学中,相关系数是一种用于衡量两个变量之间关系强度的统计指标。它可以帮助我们了解两个变量之间的线性关系强度和方向。

Pandas是一个强大的Python库,提供了许多用于数据分析和处理的功能。在本文中,我们将介绍如何使用Pandas计算相关系数以及其原理。

导入pandas和数据

首先,我们需要导入Pandas库,用来分析我们的数据。
假设我们有一个包含5个变量XY的数据集,我们可以使用sklearn.datasetsmake_regression函数生成我们需要的数据。

以下是获取数据的示例代码:

import pandas as pd

# 用sklearn制作一些数据
from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=5, noise=1, random_state=42)

df = pd.DataFrame(data=X,columns=list("abcde"))
df["y"] = y

在这里插入图片描述

计算相关系数

接下来,我们可以使用Pandascorr函数计算相关系数。corr函数可以计算多个变量之间的相关系数,返回一个相关系数矩阵。

以下是计算相关系数的示例代码:

# 计算相关系数
corr = df.corr()

图2

相关系数矩阵是一个对称矩阵,其中每个元素表示两个变量之间的相关系数。对角线上的元素始终为1,因为每个变量与自身的相关系数为1。

相关系数矩阵美化

相关系数矩阵计算完成后,我们可以知道各个变量之间的强弱关系。但是由于数据太多,让人眼花缭乱的看不清楚。我们可以用pandas的表格美化工具,将相关系数低于-0.2和高于0.2的数据标红。

以下是表格数据标红的示例代码:

def highlight_max(s, props=''):
    return np.where((s >= 0.2)|(s<=-0.2), props, '')

corr2.style.apply(highlight_max, props='color:white;background-color:red', axis=0)

图3

热力图可视化

我们还可以使用seabornheatmap函数可视化相关系数矩阵。heatmap函数可以根据相关系数的大小,将相关系数矩阵绘制为热力图。以下是绘制热力图的示例代码:

import warnings
warnings.filterwarnings("ignore")
from pylab import mpl 
import matplotlib.pyplot as plt
import seaborn as sns
# 防止中文显示为方格
mpl.rcParams['font.sans-serif']=['SimHei']

f , ax = plt.subplots(figsize = (7, 7))
plt.title('Correlation of Numeric Features with Price',y=1,size=16)
sns.heatmap(corr2,square = True, annot=True, vmax=1,cmap='coolwarm')
plt.show()

图4

在上述代码中,我们使用seaborn库的heatmap函数绘制热力图,并使用matplotlib库的plt.show()函数显示图形。通过设置annot参数为True,可以在热力图上显示相关系数的值。通过设置cmap参数为coolwarm,可以将相关系数的值映射为不同的颜色。

通过以上步骤,我们可以使用Pandas轻松计算相关系数并可视化相关系数矩阵。这对于分析两个变量之间的关系非常有用,并可以帮助我们了解数据集的特征。

1. 相关系数的定义

相关系数是一个介于-1和1之间的值,表示两个变量之间的关联程度。相关系数为正表示两个变量呈正相关关系,即当一个变量增加时,另一个变量也增加;相关系数为负表示两个变量呈负相关关系,即当一个变量增加时,另一个变量减少;相关系数接近于0表示两个变量之间没有线性关系。

2. 相关系数的计算方法

常用的相关系数有皮尔逊相关系数和斯皮尔曼相关系数。

2.1 皮尔逊相关系数

皮尔逊相关系数是用来衡量两个连续变量之间线性关系强度的统计量。它的计算公式如下:

r = ∑ ( X i − X ˉ ) ( Y i − Y ˉ ) ∑ ( X i − X ˉ ) 2 ∑ ( Y i − Y ˉ ) 2 r = \frac{{\sum{(X_i - \bar{X})(Y_i - \bar{Y})}}}{{\sqrt{\sum{(X_i - \bar{X})^2}\sum{(Y_i - \bar{Y})^2}}}} r=(XiXˉ)2(YiYˉ)2 (XiXˉ)(YiYˉ)

其中, X i X_i Xi Y i Y_i Yi分别表示两个变量的观测值, X ˉ \bar{X} Xˉ Y ˉ \bar{Y} Yˉ分别表示两个变量的均值。

2.2 斯皮尔曼相关系数

斯皮尔曼相关系数是用来衡量两个变量之间的单调关系强度的统计量。它的计算公式如下:

ρ = 1 − 6 ∑ d i 2 n ( n 2 − 1 ) \rho = 1 - \frac{{6\sum{d_i^2}}}{{n(n^2-1)}} ρ=1n(n21)6di2

其中, d i d_i di表示两个变量的秩次差, n n n表示样本数量。

3. 相关系数的解释

相关系数的取值范围为-1到1,可以根据取值范围来解释两个变量之间的关系强度和方向。当相关系数接近于1时,表示两个变量之间存在强正相关关系;当相关系数接近于-1时,表示两个变量之间存在强负相关关系;当相关系数接近于0时,表示两个变量之间没有线性关系。

需要注意的是,相关系数只能衡量线性关系,不能衡量非线性关系。此外,相关系数只能衡量两个变量之间的关系,不能确定因果关系。

4. 相关系数的应用

相关系数在统计学和数据分析中有广泛的应用。它可以帮助我们了解变量之间的关系,从而进行预测和决策。

在金融领域,相关系数可以用来衡量不同股票之间的关联程度,从而进行投资组合的优化。

在医学研究中,相关系数可以用来衡量药物剂量与疗效之间的关系,从而确定最佳的治疗方案。

在市场营销中,相关系数可以用来衡量广告投入与销售额之间的关系,从而确定最有效的营销策略。

结论

相关系数是衡量两个变量之间关联程度的重要统计量。通过pandas计算相关系数,我们可以了解两个变量之间的线性关系强度和方向。相关系数的应用广泛,可以帮助我们进行预测和决策。然而,需要注意的是,相关系数只能衡量线性关系,不能确定因果关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/80455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python3 0基础学习----数据结构(基础+练习)

python 0基础学习笔记之数据结构 &#x1f4da; 几种常见数据结构列表 &#xff08;List&#xff09;1. 定义2. 实例&#xff1a;3. 列表中常用方法.append(要添加内容) 向列表末尾添加数据.extend(列表) 将可迭代对象逐个添加到列表中.insert(索引&#xff0c;插入内容) 向指定…

excel快速选择数据、选择性粘贴、冻结单元格

一、如何快速选择数据 在excel中&#xff0c;希望选择全部数据&#xff0c;通常使用鼠标选择数据然后往下拉&#xff0c;当数据很多时&#xff0c;也可单击单元格使用ctrl A选中全部数据&#xff0c;此外&#xff0c;具体介绍另一种方法。 操作&#xff1a;ctrl shift 方向…

ubuntu设置共享文件夹成功后却不显示找不到(已解决)

1.首先输下面命令查看是否真的设置成功共享文件夹 vmware-hgfsclient如果确实已经设置过共享文件夹将输出window下共享文件夹名字 2.确认自己已设置共享文件夹后输入下面的命令 //如果之前没有命令包则先执行sudo apt-get install open-vm-tools sudo vmhgfs-fuse .host:/ /mn…

git版本管理加合并笔记

1.创建空文件夹&#xff0c;右键Bash here打开 2.打开链接&#xff0c;点击克隆下载&#xff0c;复制SSH链接 3.输入git SSH链接 回车 遇到问题&#xff1a; 但明明我已经有权限了&#xff0c; 还是蹦出个这 4.换成https在桌面上进行克隆仓库就正常了 5.去vscode里改东西 …

分布式唯一ID实战

目录 一、UUID二、数据库方式1、数据库生成之简单方式2、数据库生成 - 多台机器和设置步长&#xff0c;解决性能问题3、Leaf-segment 方案实现4、双 buffer 优化5、Leaf高可用容灾 三、基于Redis实现分布式ID四、雪花算法1、雪花算法介绍2、 雪花算法生产环境架构&#xff1a;3…

2017年3月全国计算机等级考试真题(C语言二级)

2017年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 每个学校有一名校长&#xff0c;且不同学校的校长可以是同一人&#xff0c;则实体学校和实体校长间的联系是 A. 多对一 B. 多对多 C. 一对一 D. 一对多 正确答案&#xff1a;A 第2题 若有以下定义…

【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】最…

MySQL表的操作

MySQL表的操作 创建表查看表结构的详细信息修改表结构增加表结构属性删除表结构表结构的修改 删除表结构 创建表 语法: create table table_name( field1 datatype [comment xxxxx], field2 datatype [comment xxxxx], field3 datatype [comment xxxxx]) [charsetxxx][collatey…

vscode搭建java开发环境

一、配置extensions环境变量VSCODE_EXTENSIONS 该环境变量路径下的存放安装组件&#xff1a; 二、setting配置文件 {"java.jdt.ls.java.home": "e:\\software\\jdk\\jdk17",// java运行环境"java.configuration.runtimes": [{"name":…

记一次fegin调用的媒体类型问题

1.问题&#xff1a;分页查询&#xff0c;分页参数传递不生效 2.开发环境&#xff1a;fegin接口 开发环境&#xff1a;调用接口 3.修改后&#xff1a;fegin接口不变 调用接口 前端媒体类型&#xff1a; 问题解决&#xff01;&#xff01;&#xff01; 4.原因分析&…

基于libevent的tcp服务器

libevent使用教程_evutil_make_socket_nonblocking_易方达蓝筹的博客-CSDN博客 一、准备 centos7下安装libevent库 yum install libevent yum install -y libevent-devel 二、代码 server.cpp /** You need libevent2 to compile this piece of code Please see: http://li…

架构演进及常用架构

1架构演进及常用架构 1.1单体分层架构 1.2 多应用微服务架构 1.3 分布式集群部署 部署 CDN 节点&#xff1a; 用户访问量的增加意味着用户地域的分散请求&#xff0c;如果所有请求都直接发送中心服务器的话&#xff0c;距离越远&#xff0c;响应速度越差&#xff0c;这时就需…

C语言:深度学习知识储备

目录 数据类型 每种类型的大小是多少呢&#xff1f; 变量 变量的命名&#xff1a; 变量的分类&#xff1a; 变量的作用域和生命周期 作用域&#xff1a; 生命周期&#xff1a; 常量 字符串转义字符注释 字符串&#xff1a; 转义字符 操作符&#xff1a; 算术操作符…

208、仿真-51单片机脉搏心率与心电报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

理解持续测试,才算理解DevOps

软件产品的成功与否&#xff0c;在很大程度上取决于对市场需求的及时把控&#xff0c;采用DevOps可以加快产品交付速度&#xff0c;改善用户体验&#xff0c;从而有助于保持领先于竞争对手的优势。 作为敏捷开发方法论的一种扩展&#xff0c;DevOps强调开发、测试和运维不同团…

机器学习重要内容:特征工程之特征抽取

目录 1、简介 2、⭐为什么需要特征工程 3、特征抽取 3.1、简介 3.2、特征提取主要内容 3.3、字典特征提取 3.4、"one-hot"编码 3.5、文本特征提取 3.5.1、英文文本 3.5.2、结巴分词 3.5.3、中文文本 3.5.4、Tf-idf ⭐所属专栏&#xff1a;人工智能 文中提…

衣服材质等整理(时常更新)

参考文章&图片来源 https://zhuanlan.zhihu.com/p/390341736 00. 天然纤维 01. 化学纤维 02. 聚酯纤维&#xff08;即&#xff0c;涤纶&#xff09; 一种由有机二元酸和二元醇通过化学缩聚制成的合成纤维。具有出色的抗皱性和保形性&#xff0c;所制衣物在穿着过程中不容…

解决xss转义导致转码的问题

一、xss简介 人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩写混淆。因此&#xff0c;有人将跨站脚本攻击缩写为XSS。跨站脚本攻击&#xff…

vue中实现文字检索时候将搜索内容标红

实现结果 html&#xff1a; <div class"searchBox"><span class"bt">标&#8195&#8195题</span><div class"search"><div class"shuru"><!-- <span class"title">生产经营<…

C语言:字符函数和字符串函数

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体C语言&#xff1a;数据的存储 目录 往期文章前言1. 函数介绍1.1 strlen1.…