本文介绍基于Python语言,对大量不同的Excel文件加以跨文件、逐单元格平均值计算的方法。
首先,我们来明确一下本文的具体需求。现有一个文件夹,其中有如下所示的大量Excel文件,我们这里就以.csv
文件为例来介绍。其中,每一个.csv
文件的名称都是如下图所示的Ref_XXX_Y.csv
格式的,其中XXX
表示三个字母,后面的Y
则表示若干位数字。
对于其中的每一个.csv
文件,都有着如下图所示的数据格式。
我们现在的需求是,希望对于每一个名称为Ref_GRA_Y.csv
格式的.csv
文件,求取其中每一个单元格在所有文件中数据的平均值。例如,对于上图中DOY
为1
的blue
这个单元格,那么求出来的平均值就是在全部名称为Ref_GRA_Y.csv
格式的.csv
文件之中,DOY
为1
且列名为blue
的单元格的平均值。此外,如果像上图一样,出现了部分单元格数值为0
的情况,表明在当前文件夹下,这个单元格是没有数据的,因此需要在计算的时候舍去(并且取平均值时候的分母也要减小1
)。
知道了需求,我们就可以开始代码的书写。其中,本文用到的具体代码如下所示。此外,本文实现的需求也和我们之前的文章# Python批量读取Excel表格并基于多个xlsx文件数据计算平均值有些类似,大家如果有需要,也可以参考之前的这一篇文章。
# -*- 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
以包含索引列。
运行上述代码,我们即可得到结果文件。如下图所示,可以看到结果文件中,已经是计算之后的平均值结果了。
至此,大功告成。
最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)
以上就是今天的全部内容分享,觉得有用的话欢迎点赞收藏哦!
学好 Python 不论是用于就业还是做副业赚钱都不错,而且学好Python还能契合未来发展趋势——人工智能、机器学习、深度学习等。
小编是一名Python开发工程师,自己整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!
小编为对Python感兴趣的小伙伴准备了以下籽料 !
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑培训的!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)
我已经上传至CSDN官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】
*今天的分享就到这里,喜欢且对你有所帮助的话,记得点赞关注哦~下回见 !