当前位置: 首页 > news >正文

pandas: 三种算法实现递归分析Excel中各列相关性

目录

前言

目的

思路

代码实现

1. 循环遍历整个SDGs列,两两拿到数据

2. 调用pandas库函数直接进行分析

完整源码

运行效果

总结


前言

博主之前刚刚被学弟邀请参与了2023美赛,这也是第一次正式接触数学建模竞赛,现在已经提交等待结果了,希望能拿一个不错的成绩。

在参与过程中我们涉及到了数据分析,我来记录和分享一下我们使用的分析算法。


目的

联合国(UN)已经制定了17个可持续发展目标(SDGs)。实现这些目标最终将改善世界各地许多人的生活。这些目标并不是相互独立的。因此,通常在某些目标中获得的积极收益会对其他目标产生影响(积极的或消极的,有时两者都有)。这种相互联系使实现所有目标成为一个流动的过程,可以考虑资金限制和其他国家和国际优先事项。此外,技术进步、全球大流行病、气候变化、区域战争和难民流动的影响也对许多目标产生了严重影响。

现在给定了17个可持续发展目标在每个年份中对应的分数,需要分析每个目标之间的相关性,要求使用Pearson, Spearman, Kendall三种分析方法(皮尔森分析/斯皮尔曼系数/肯达尔系数)


思路

1. 循环遍历整个SDGs列,两两拿到数据

2. 调用pandas库函数直接进行分析


代码实现

1. 循环遍历整个SDGs列,两两拿到数据

老样子,依然是先导包,导入pandas库和numpy,如果没有的去控制台pip install pandas,这里就不赘述了。

import pandas as pd
import numpy as np

随后用format方法把所有数据都改为精度为两位小数的浮点数:

# dt = pd.read_excel(r'./World-Scores-2000-2022.xlsx')  # 'r'是转义字符,避免路径中的'\'被转译# 文本格式设置
formatter = "{0:.02f}".format

要拿数据,首先要读取execl,这里要提前装openpyxl才能正常读取:

x = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[h + 2])

然后应用文本格式,全部改为两位小数,并转化为数组:

x = x.applymap(formatter)
x_li = x.values.tolist()

最后放入循环里面执行:

for h in range(17):x = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[h + 2])x = x.applymap(formatter)x_li = x.values.tolist()result_x = []for item in x_li:result_x.append(float(item[0]))

嵌套循环,达到两两匹配的效果,很基础了,握手问题:

for h in range(17):x = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[h + 2])x = x.applymap(formatter)x_li = x.values.tolist()result_x = []for item in x_li:result_x.append(float(item[0]))for i in range(h+1, 17):y = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[i + 2])y = y.applymap(formatter)y_li = y.values.tolist()result_y = []for item in y_li:result_y.append(float(item[0]))

2. 调用pandas库函数直接进行分析

把两列起名为varX和varY,这样就可以在每一次循环执行的时候都进行一次计算:

varX = pd.Series(result_x)
varY = pd.Series(result_y)# 建立Kendall因果模型
# print(i + 1, result_x, result_y)
# TODO: method可选项:pearson, spearman, kendall
result = varX.corr(varY, method="spearman")# 输出检验结果
print(f'Goal{h+1}&Goal{i+1}的相关性为:', result)

我们要实现算法,直接调用pandas库中corr函数,计算相关性,method可以使用三种,spearman,kendall,pearson。

可以看一下这个函数源代码:

最后print结果就好了,完整代码如下: 


完整源码

import pandas as pd
import numpy as np# dt = pd.read_excel(r'./World-Scores-2000-2022.xlsx')  # 'r'是转义字符,避免路径中的'\'被转译# 文本格式设置
formatter = "{0:.02f}".formatfor h in range(17):x = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[h + 2])x = x.applymap(formatter)x_li = x.values.tolist()result_x = []for item in x_li:result_x.append(float(item[0]))for i in range(h+1, 17):y = pd.read_excel(r'./World-Scores-2000-2022.xlsx', dtype=object, usecols=[i + 2])y = y.applymap(formatter)y_li = y.values.tolist()result_y = []for item in y_li:result_y.append(float(item[0]))# data = pd.DataFrame({'x': result_x, 'y': result_y})varX = pd.Series(result_x)varY = pd.Series(result_y)# 建立Kendall因果模型# print(i + 1, result_x, result_y)# TODO: method可选项:pearson, spearman, kendallresult = varX.corr(varY, method="spearman")# 输出检验结果print(f'Goal{h+1}&Goal{i+1}的相关性为:', result)

运行效果

可以看到已经按顺序分析出来并输出结果,非常的好用。

后续还可以自动存入一个excel什么的,大家自己探索吧,我就不写了,在之前的文章里讲过很多次的。 


总结

本文用一个例子讲了pandas计算相关性的方法,分别使用spearman,pearson,kendall三种方法。

相关文章:

pandas: 三种算法实现递归分析Excel中各列相关性

目录 前言 目的 思路 代码实现 1. 循环遍历整个SDGs列,两两拿到数据 2. 调用pandas库函数直接进行分析 完整源码 运行效果 总结 前言 博主之前刚刚被学弟邀请参与了2023美赛,这也是第一次正式接触数学建模竞赛,现在已经提交等待结果…...

【Python百日进阶-Web开发-Vue3】Day543 - Vue3 商城后台 03:登录页面初建

文章目录 一、创建登录页面 login.vue二、登录页面响应式处理,以适应不同大小的屏幕2.1 element-plus 的layout布局中关于响应式的说明2.2 修改login.vue文件2.2.1 :lg=16 大于1200px 横排 2:12.2.2 :md=12 大于992小于1200px 横排 1:12.2.3 小于992 竖排三、引入Element-plus…...

python画直方图,刻画数据分布

先展示效果 准备一维数据 n 个数据元素计算最大值,最小值、均值、标准差、以及直方图分组 import numpy as np data list() for i in range(640):data.append(np.random.normal(1)) print(data)z np.histogram(data, bins64) print(list(z[0])) ### 对应 x 轴数据…...

几何学小课堂:非欧几何(广义相对论采用黎曼几何作为数学工具)【学数学关键是要学会在什么情况下,知道使用什么工具。】

文章目录 引言I 非欧几何1.1 黎曼几何1.2 共形几何1.3 罗氏几何II 黎曼几何的应用2.1 广义相对论2.2 超弦III 理解不同的几何体系的共存3.1 更扎实的欧氏几何3.2 殊途同归引言 公理有错会得到两种情况: 如果某一条自己设定的新公理和现有的公理相矛盾,那么相应的知识体系就建…...

Ubuntu配置静态IP的方法

Ubuntu配置静态IP的方法前言一、查看虚机分配的网卡IP二、查看网卡的网关IP三、配置静态IP1.配置IPv4地址2.执行netplan apply使改动生效3.配置的网卡未生效,修改50-cloud-init.yaml文件解决4.测试vlan网络通信总结前言 Ubuntu18.04 欧拉环境 vlan网络支持ipv6场景…...

90%的人都不算会爬虫,这才是真正的技术,从0到高手的进阶

很多人以为学会了urlib模块和xpath等几个解析库,学了Selenium就会算精通爬虫了,但到外面想靠爬虫技术接点私活,才发现寸步难行。 龙叔我做了近20年的程序员,今天就告诉你,真正的爬虫高手应该学哪些东西,就…...

排序之损失函数List-wise loss(系列3)

排序系列篇: 排序之指标集锦(系列1)原创 排序之损失函数pair-wise loss(系列2)排序之损失函数List-wise loss(系列3) 最早的关于list-wise的文章发表在Learning to Rank: From Pairwise Approach to Listwise Approach中,后面陆陆续续出了各种变形&#…...

js对象和原型、原型链的关系

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到…...

【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表

【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表Apache ShardingSphere分库分表分库分表的方式垂直切分垂直分表垂直分库水平切分水平分库水平分表分库分表带来的问题分库分表中间件Sharding-JDBCsharding-jdbc实现水平分表sharding-jdbc实现水平分库sharding-jdbc实…...

Shell特殊字符

shell语言,一些字符是有特殊意义的。 根据作用分为几种特殊符号 一、空白 shell调用函数,不像c语言那样用把参数放到括号里,用逗号分隔。而是用空格作为参数之间,参数与函数名之间的分隔符。 换行符也是特殊字符。换行符用作一条命…...

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题一、德国工业战略规划二、德国工业战略规划 第一问三、德国工业战略规划 第二问一、德国工业战略规划 描述:在右侧答题模板中修改代码,删除代码中的横线,填写代码,完成考试答案。‪‬‪‬…...

字节直播leader面

设计评论系统(缓存怎么做) mysql是否有主从延迟,如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制,mysql有三种同步机制 同步复制:事务线程等待所有从库复制成功响应异步复制:事务不等待…...

PIC 单片机的时钟

注意:本文的内容无法保证绝对精确,后续可能会做改动,只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源:Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树(可以跳过 目录跳转) 2.特殊的二叉树(满二叉树/完全二叉树) 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘(主体) 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...

哈希表题目:猜数字游戏

文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:猜数字游戏 出处:299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字(Bulls…...

项目请求地址自动加上了本地ip的解决方式

一般情况下来说都是一些粗心大意的问题导致的 场景一:少加了/ 场景二:前后多加了空格 场景三:拼接地址错误![...

Vue3 企业级项目实战:项目须知与课程约定

本节内容很重要,希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发,升职加薪,快人一步。。「Vue3 企业级项目实战」由程序员十三撰写,2744人购买https://s.ju…...

传导EMI抑制-Π型滤波器设计

1 传导电磁干扰简介 在开关电源中,开关管周期性的通断会产生周期性的电流突变(di/dt)和电压突变(dv/dt),周期性的电流变化和电压变化则会导致电磁干扰的产生。 图1所示为Buck电路的电流变化,在Buck电路中上管电流和下…...

如何在excel中创建斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:…...

遮挡检测--基于角度的遮挡检测方法

文章目录1基于角度的遮挡检测方法2遮挡检测遍历方法2.1方法1--自适应径向扫描方法2.2方法2--螺旋扫描法参考1基于角度的遮挡检测方法 在基于角度的方法中,通过依次分析DSM中沿径向方向的投影光线的角度来识别遮挡。定义α\alphaα角:DSM三维点与相机中心…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...