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

Python为Excel中每一个单元格计算其在多个文件中的平均值

  本文介绍基于Python语言,对大量不同的Excel文件加以跨文件逐单元格平均值计算的方法。

  首先,我们来明确一下本文的具体需求。现有一个文件夹,其中有如下所示的大量Excel文件,我们这里就以.csv文件为例来介绍。其中,每一个.csv文件的名称都是如下图所示的Ref_XXX_Y.csv格式的,其中XXX表示三个字母,后面的Y则表示若干位数字。

  对于其中的每一个.csv文件,都有着如下图所示的数据格式。

  我们现在的需求是,希望对于每一个名称为Ref_GRA_Y.csv格式的.csv文件,求取其中每一个单元格在所有文件中数据的平均值。例如,对于上图中DOY1blue这个单元格,那么求出来的平均值就是在全部名称为Ref_GRA_Y.csv格式的.csv文件之中,DOY1且列名为blue的单元格的平均值。此外,如果像上图一样,出现了部分单元格数值为0的情况,表明在当前文件夹下,这个单元格是没有数据的,因此需要在计算的时候舍去(并且取平均值时候的分母也要减小1)。

  知道了需求,我们就可以开始代码的书写。其中,本文用到的具体代码如下所示。此外,本文实现的需求也和我们之前的文章基于Python读取多个Excel文件数据并跨越不同xlsx表格文件计算平均值(https://blog.csdn.net/zhebushibiaoshifu/article/details/115533619)有些类似,大家如果有需要,也可以参考之前的这一篇文章。

# -*- coding: utf-8 -*-
"""
Created on Fri Oct  6 13:07:48 2023@author: fkxxgis
"""import os
import glob
import pandas as pdfolder_path = "E:/04_Reconstruction/02_Data/01_RGBNINDVI_History"
output_path = "E:/04_Reconstruction/02_Data"
file_pattern = "Ref_GRA_*.csv"file_paths = glob.glob(os.path.join(folder_path, file_pattern))combined_data = pd.DataFrame()for file_path in file_paths:df = pd.read_csv(file_path)df_filtered = df[df != 0]combined_data = pd.concat([combined_data, df_filtered])average_values = combined_data.groupby('DOY').mean()output_file = "04_Data_YearAverage.csv"
average_values.to_csv(os.path.join(output_path,output_file), index=True)

  其中,上述代码的具体介绍如下。

  首先,我们导入必要的库——os库用于文件路径操作,glob库用于文件匹配,pandas库用于数据处理和分析。同时,我们定义文件夹路径folder_path,代表存储.csv文件的文件夹路径;定义输出路径output_path,代表保存结果文件的路径;定义文件匹配模式file_pattern,用于匹配需要处理的.csv文件的文件名模式。

  随后,我们使用glob.glob()函数结合文件夹路径和文件匹配模式,获取满足条件的.csv文件的路径列表,存储在file_paths变量中。创建一个空的数据框combined_data,用于存储所有文件的数据。

  接下来,我们使用一个循环,遍历file_paths列表中的每个文件路径。对于每个文件路径,使用pd.read_csv()函数加载.csv文件,并将其存储在名为df的数据框中。其次,使用条件筛选语句df[df != 0]排除值为0的数据,并将结果存储在名为df_filtered的数据框中。紧接着,将当前文件的数据框df_filtered合并到总数据框combined_data中,这一步骤使用pd.concat()函数实现。

  完成所有文件的处理后,使用combined_data.groupby('DOY').mean()计算所有文件的平均值,按照DOY列进行分组并求平均值。随后,定义输出文件名output_file,代表保存平均值结果的文件名。

  最后,使用os.path.join()函数结合输出路径和输出文件名,生成保存路径,并使用average_values.to_csv()函数将平均值数据框average_values保存为一个新的.csv文件,指定index=True以包含索引列。

  运行上述代码,我们即可得到结果文件。如下图所示,可以看到结果文件中,已经是计算之后的平均值结果了。

  至此,大功告成。

欢迎关注:疯狂学习GIS

相关文章:

Python为Excel中每一个单元格计算其在多个文件中的平均值

本文介绍基于Python语言,对大量不同的Excel文件加以跨文件、逐单元格平均值计算的方法。 首先,我们来明确一下本文的具体需求。现有一个文件夹,其中有如下所示的大量Excel文件,我们这里就以.csv文件为例来介绍。其中,每…...

LLM 系列之 Transformer 组件总结

本系列为LLM 学习博客,会一一记录各个模块解读。 以下内容参考:大语言模型综述 https://github.com/RUCAIBox/LLMSurvey 主流架构 大语言模型,主要的核心组件是Transformer。不同的模型选择的架构不一样,目前主流架构有: 编码器…...

计算机等级考试—信息安全三级真题十

目录 一、单选题 二、填空题 三、综合题 一、单选题...

面试总结(mysql定精度/oom排查/spring三级缓存/stream流)

Mysql数据类型上的一个把握 1、MySQL Decimal为什么不会丢失精度 DECIMAL的存储方式和其他数据类型都不同,它是以字符串形式存储的。假设一个字段为DECIMAL(3,0),当我们存入100时,实际上存入的1、0、0这三个字符拼接而成的字符串的二进制值&…...

uniapp四个元素点击那个哪个变色,其他的还变原来的颜色

在UniApp中,可以使用CSS伪类选择器和动态样式绑定来实现点击某个元素时改变其颜色的效果。假设有四个元素分别为A、B、C和D。 首先,为这四个元素添加一个共同的类名,例如"item"。 然后,在页面的样式中定义两种颜色&am…...

Springcloud笔记(2)-Eureka服务注册

Eureka服务注册 服务注册,发现。 在Spring Cloud框架中,Eureka的核心作用是服务的注册和发现,并实现服务治理。 Eureka包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务注册服务,各个节点启动后…...

国庆 day 5

QT实现TCP服务器客户端搭建的代码,现象 服务器 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);server new QTcpServer(this);connect (server,&…...

计算机网络 | OSI 参考模型

计算机网络 | OSI 参考模型 计算机网络 | OSI 参考模型应用层表示层会话层传输层网络层数据链路层物理层 参考视频:王道计算机考研 计算机网络 参考书:《2022年计算机网络考研复习指导》 计算机网络 | OSI 参考模型 OSI 参考模型自下而上分为7层&…...

uniapp 实现地图头像上的水波纹效果

最近实现了uniapp 地图头像水波纹的效果,话不多说,先来看看视频效果吧:链接 在这里具体的代码就不放出来了,还是利用了uniapp的 uni.createAnimation 方法,因为cover-view 不支持一些css 的动画效果,所以这…...

Zabbix7.0 LTS新功能

一、简介 LTS是长期支持。LTS版本支持5年。如果更喜欢稳定性,未涉及到最新的功能,可以选次新的LTS或者更低解决方案。而Zabbix6.4是最新的主要版本不属于LTS版本。 二、新功能 从以下几个方面介绍部分新功能: 性能提升:内存储存…...

充电100%并非都是美事,有时少点更有溢出!如何正确为iPhone充电

iPhone是非凡的设备,但一旦电池耗尽,它们就会失去光泽。这就是为什么照看电池内部并确保始终正确充电很重要。 在这篇文章中,我们解释了如果你想让你的iPhone每天运行到深夜,并尽可能多地保持这种状态,你需要采取的步…...

【软件测试】JUnit详解

文章目录 一. Junit是什么?二.Junit中常见的注解1. Test2. BeforeAll & AfterAll3. BeforeEach & AfterEach4. ParameterizedTest参数化5. Disabled6. Order 三. 测试套件1. 通过class运行测试用例2. 通过包运行测试用例 四. 断言 一. Junit是什么? JUnit是一个用于…...

hive统计页面停留时间

1、背景:通过业务埋点数据,统计用户在页面的停留时间 样例数据,样例数据存入表tmp, 有如下字段用户uid、动作时间戳time、页面名称pn、动作名称action SELECT 12345 AS uid, 1695613731020 AS time, 搜索 AS pn, click AS acti…...

LeetCode 24.两两交换链表中的结点

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 首先可以特判一下,如果结点数目小于等于1,则直接返回即可,因为数目小于等于1就不需要交换了。 然后我们可以创建一个虚拟的头结点,然…...

【每日一记】OSPF区域划分详讲、划分区域的优点好处

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…...

复旦管院启动科创战略,培养科技研发人才,引领未来发展!

今年夏天,600多位优秀的企业家成为复旦大学EMBA 2023级新生。在疫情结束后,他们选择百战归来再读书,重新回到久违的课堂,共同探索科创大时代下企业的商业本质,开启新的学习与人生旅程。复旦大学管理学院院长陆雄文教授…...

Infinity同步

...

C语言:转义字符

目录 话不多说,先上表 \n \? \ \" \\ \t \a \ddd 附一张ASCII表 \xdd 练习 话不多说,先上表 一一举例解释下哈 \n 读取到结尾标识符\0 printf("demo\n\0Zh"); // demo \? 在书写连续多个问号时使用,防止…...

为什么 0.1 + 0.1 !== 0.2

为什么 0.1 0.1 ! 0.2 总结了几个很有意思的基础题目,分享一下。 为什么 0.1 0.1 ! 0.2 看到这个问题,不得不想到计算机中的数据类型,其中浮点数表示有限的精度。那么它就无法精确的表示所有的十进制小数,所以在在某些情况下…...

超详细!主流大语言模型的技术原理细节汇总!

1.比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节:tokenizer、位置编码、Layer Normalization、激活函数等。 2. 大语言模型的分布式训练技术:数据并行、张量模型并行、流水线并行、3D 并行、零冗余优化器 ZeRO、CPU 卸载技术 ZeRo-offload、混合精度训…...

艾尔登法环帧率解锁终极指南:如何彻底解放游戏性能限制

艾尔登法环帧率解锁终极指南:如何彻底解放游戏性能限制 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/El…...

win11的自带媒体播放器-可以设置它的播放速度。在右小角的三个点里面。。。

win11的自带媒体播放器-可以设置它的播放速度。在右小角的三个点里面。。。...

TCS3490颜色传感器技术解析与应用实践

1. TCS3490颜色传感器技术解析TCS3490是ams公司推出的一款面向移动设备的五通道智能颜色传感器。作为光学传感器领域的创新产品,它通过RGBClearIR的五通道设计,实现了传统三通道传感器无法达到的环境光检测精度。我在实际项目应用中发现,这款…...

基于向量检索的代码语义搜索:从原理到CodeIndexer实战部署

1. 项目概述:一个为代码库建立语义索引的利器最近在折腾一个老项目的代码重构,面对几十万行混杂着不同语言和框架的代码,想快速定位一个特定功能的实现逻辑,或者查找所有使用了某个第三方库的模块,简直像大海捞针。传统…...

usehooks-ts:React Hooks工具集,提升开发效率与代码质量

1. 项目概述:一个现代React Hooks的“瑞士军刀”如果你正在用React做项目,尤其是TypeScript项目,那么你大概率经历过这样的场景:为了一个简单的“防抖”功能,去网上搜一段代码,复制粘贴,然后发现…...

月薪8K到年薪80万!这个AI职位一年暴涨985%,普通人如何抓住风口?2026年最火爆的5个岗位+3条入场路径全解析!

文章讲述了AI Agent开发工程师的兴起,年薪可达80万。文章以小李的真实故事为例,展示了通过主动学习AI技术,可以实现职业的巨大转变。文章还分析了Agentic AI的特点及其对就业市场的影响,指出40%的岗位将被重新定义。文章列举了AI …...

Lumberjack 暗色主题:提升开发效率的配色方案与多平台配置指南

1. 项目概述:一个为开发者打造的暗色系主题 如果你和我一样,每天有超过一半的时间都泡在代码编辑器里,那么一个顺眼的主题就不仅仅是“好看”而已,它直接关系到你的工作效率和眼睛的舒适度。今天要聊的这个项目, Drru…...

不止于抓包:用Fiddler做移动端API调试和性能优化的5个实战技巧

不止于抓包:用Fiddler做移动端API调试和性能优化的5个实战技巧 当你已经能够熟练使用Fiddler进行基础抓包操作后,这款工具的真正价值才刚刚开始显现。许多开发者仅仅将其视为一个"网络请求查看器",却忽略了它在移动端开发全流程中的…...

QConf灰度发布策略详解:零风险配置变更的完整方案

QConf灰度发布策略详解:零风险配置变更的完整方案 【免费下载链接】QConf QConf是奇虎360开源的一款分布式配置管理平台,能够集中管理和分发应用程序的配置数据,并支持高可用性和水平扩展,尤其适用于大规模分布式系统的配置管理。…...

HBM高带宽内存:从立体堆叠到2.5D封装的性能革命

1. 从平面到立体:HBM如何重塑内存性能天花板在半导体行业里,我们常把“摩尔定律”挂在嘴边,仿佛性能提升的唯一路径就是晶体管越做越小。但大约十年前,当工艺微缩的红利开始放缓,功耗墙和信号完整性问题日益严峻时&…...