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

pandas计算相关系数

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

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

导入pandas和数据

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

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

import pandas as pd# 用sklearn制作一些数据
from sklearn.datasets import make_regressionX, 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计算相关系数,我们可以了解两个变量之间的线性关系强度和方向。相关系数的应用广泛,可以帮助我们进行预测和决策。然而,需要注意的是,相关系数只能衡量线性关系,不能确定因果关系。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql系列 - 第1天:mysql基础知识

这是mysql系列第1篇。 本文主要内容 背景介绍 数据库基础知识介绍 mysql的安装 mysql常用的一些命令介绍 SQL分类 背景介绍 我们每天都在访问各种网站、APP&#xff0c;如微信、QQ、抖音、今日头条、腾讯新闻等&#xff0c;这些东西上面都存在大量的信息&#xff0c;这…

Scratch 游戏 之 随机大地图生成教程

在很多生存 / 沙盒类游戏中&#xff0c;地图往往是随机生成的&#xff0c;例如&#xff1a;饥荒、我的世界等。那我们该如何在scratch中实现这一点呢&#xff1f; 在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。 我们可以先将克隆体设置为方形的&#x…

学习笔记|基于Delay实现的LED闪烁|模块化编程|SOS求救灯光|STC32G单片机视频开发教程(冲哥)|第六集(下):实现LED闪烁

文章目录 2 函数的使用1.函数定义&#xff08;需要带类型&#xff09;2.函数声明&#xff08;需要带类型&#xff09;3.函数调用 3 新建文件&#xff0c;使用模块化编程新建xxx.c和xxx.h文件xxx.h格式&#xff1a;调用头文件验证代码调用&#xff1a;完整的文件结构如下&#x…

leetcode 198. 打家劫舍

2023.8.19 打劫问题是经典的动态规划问题。先设一个dp数组&#xff0c;dp[i]的含义为&#xff1a;前 i 个房屋能盗取的最高金额。 每间房屋无非就是偷&#xff0c;或者不偷这两种情况&#xff0c;于是可以写出递推公式&#xff1a; …

救生员可以戴耳机吗,救生员佩戴蓝牙耳机会影响工作吗?

对于救生员这样一种常驻在水边的职位&#xff0c;戴耳机可以说是比较常见的&#xff0c;佩戴的最主要原因就在于方便进行沟通以及接受指令&#xff0c;以此来确保海边以及海滩等场所的安全&#xff0c;而在这种场景下&#xff0c;对于耳机的考验也是蛮大的&#xff0c;毕竟会出…

如何使用自动化测试工具Selenium?

哈喽&#xff0c;大家好&#xff0c;我是小浪。那么有一段时间没有更新了&#xff0c;还是在忙实习和秋招的事情&#xff0c;那么今天也是实习正式结束啦&#xff0c;开始继续更新我们的学习博客&#xff0c;后期主要是开发和测试的学习博客内容巨多&#xff0c;感兴趣的小伙伴…

【VS Code插件开发】Webview面板(三)

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域优质作者、阿里云专家博主&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4e2; 资料领取&#xff1a;前端…

【bug记录】ios动画闪烁,@keyframe动画在100%的时候设置为opacity:0,最后一帧会变成opacity:1

背景 前段时间需要实现一个水波纹扩散效果&#xff0c;大概效果就两点&#xff1a;波纹逐渐扩散&#xff0c;半径逐渐增大&#xff1b;透明度逐渐降低&#xff08;如下图&#xff09;。本以为这就是一个简单的动画&#xff0c;很轻松就实现了。但是发布之后测试同学反馈&#…

探索Perfetto:开源性能追踪工具的未来之光

探索Perfetto&#xff1a;开源性能追踪工具的未来之光 1. 引言 A. 介绍Perfetto的背景和作用 随着移动应用、桌面软件和嵌入式系统的不断发展&#xff0c;软件性能优化变得愈发重要。在这个背景下&#xff0c;Perfetto作为一款开源性能追踪工具&#xff0c;日益引起了开发者…

Linux驱动开发(Day4)

思维导图&#xff1a; 字符设备驱动分步注册&#xff1a;

系统卡死问题分析

CPU模式 CPU Frequency Scaling (CPUFREQ) Introduction CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗…

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug&#xff1f; 2.调试是什么&#xff1f;有多重要&#xff1f; 2.1我们是如何写代码的&#xff1f; 2.2又是如何排查出现的问题的呢&#xff1f; ​编辑 2.3 调试是什么&#xff1f; 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…