Python實現(xiàn)為Excel中每個單元格計算其在文件中的平均值
本文介紹基于Python語言,對大量不同的Excel文件加以跨文件、逐單元格平均值計算的方法。
首先,我們來明確一下本文的具體需求?,F(xiàn)有一個文件夾,其中有如下所示的大量Excel文件,我們這里就以 .csv 文件為例來介紹。其中,每一個 .csv 文件的名稱都是如下圖所示的 Ref_XXX_Y.csv 格式的,其中 XXX 表示三個字母,后面的 Y 則表示若干位數(shù)字。

對于其中的每一個 .csv 文件,都有著如下圖所示的數(shù)據(jù)格式。

我們現(xiàn)在的需求是,希望對于每一個名稱為 Ref_GRA_Y.csv 格式的 .csv 文件,求取其中每一個單元格在所有文件中數(shù)據(jù)的平均值。例如,對于上圖中 DOY 為 1 的 blue 這個單元格,那么求出來的平均值就是在全部名稱為 Ref_GRA_Y.csv 格式的 .csv 文件之中, DOY 為 1 且列名為 blue 的單元格的平均值。此外,如果像上圖一樣,出現(xiàn)了部分單元格數(shù)值為 0 的情況,表明在當前文件夾下,這個單元格是沒有數(shù)據(jù)的,因此需要在計算的時候舍去(并且取平均值時候的分母也要減小 1 )。
知道了需求,我們就可以開始代碼的書寫。其中,本文用到的具體代碼如下所示。此外,本文實現(xiàn)的需求也和我們之前的文章基于Python讀取多個Excel文件數(shù)據(jù)并跨越不同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 庫用于數(shù)據(jù)處理和分析。同時,我們定義文件夾路徑 folder_path ,代表存儲 .csv 文件的文件夾路徑;定義輸出路徑 output_path ,代表保存結果文件的路徑;定義文件匹配模式 file_pattern ,用于匹配需要處理的 .csv 文件的文件名模式。
隨后,我們使用 glob.glob() 函數(shù)結合文件夾路徑和文件匹配模式,獲取滿足條件的 .csv 文件的路徑列表,存儲在 file_paths 變量中。創(chuàng)建一個空的數(shù)據(jù)框 combined_data ,用于存儲所有文件的數(shù)據(jù)。
接下來,我們使用一個循環(huán),遍歷 file_paths 列表中的每個文件路徑。對于每個文件路徑,使用 pd.read_csv() 函數(shù)加載 .csv 文件,并將其存儲在名為 df 的數(shù)據(jù)框中。其次,使用條件篩選語句 df[df != 0] 排除值為 0 的數(shù)據(jù),并將結果存儲在名為 df_filtered 的數(shù)據(jù)框中。緊接著,將當前文件的數(shù)據(jù)框 df_filtered 合并到總數(shù)據(jù)框 combined_data 中,這一步驟使用 pd.concat() 函數(shù)實現(xiàn)。
完成所有文件的處理后,使用 combined_data.groupby('DOY').mean() 計算所有文件的平均值,按照 DOY 列進行分組并求平均值。隨后,定義輸出文件名 output_file ,代表保存平均值結果的文件名。
最后,使用 os.path.join() 函數(shù)結合輸出路徑和輸出文件名,生成保存路徑,并使用 average_values.to_csv() 函數(shù)將平均值數(shù)據(jù)框 average_values 保存為一個新的 .csv 文件,指定 index=True 以包含索引列。
運行上述代碼,我們即可得到結果文件。如下圖所示,可以看到結果文件中,已經(jīng)是計算之后的平均值結果了。

至此,大功告成。
到此這篇關于Python實現(xiàn)為Excel中每個單元格計算其在文件中的平均值的文章就介紹到這了,更多相關Python計算平均值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)信息轟炸工具(再也不怕說不過別人了)
不知道各位小伙伴有沒有遇到過這樣的一個故事,發(fā)現(xiàn)自己直接噴不過,打字速度不夠給力.下面這篇文章就能解決自己噴不過的苦惱,話不多說,上才藝,需要的朋友可以參考下2021-06-06
Python實現(xiàn)爬蟲爬取NBA數(shù)據(jù)功能示例
這篇文章主要介紹了Python實現(xiàn)爬蟲爬取NBA數(shù)據(jù)功能,涉及Python針對URL模塊、字符串、列表遍歷、Excel寫入等相關操作技巧,需要的朋友可以參考下2018-05-05
selenium+python實現(xiàn)1688網(wǎng)站驗證碼圖片的截取功能
這篇文章主要介紹了selenium+python實現(xiàn)1688網(wǎng)站驗證碼圖片的截取,需要的朋友可以參考下2018-08-08
使用Python的開發(fā)框架Brownie部署以太坊智能合約
在本文中,我們將使用Python部署智能合約。這篇文章可能是您走向智能合約和區(qū)塊鏈開發(fā)的橋梁!2021-05-05
python使用xmlrpclib模塊實現(xiàn)對百度google的ping功能
這篇文章主要介紹了python使用xmlrpclib模塊實現(xiàn)對百度google的ping功能,實例分析了xmlrpclib模塊的相關技巧,需要的朋友可以參考下2015-06-06
python 實現(xiàn)將Numpy數(shù)組保存為圖像
今天小編就為大家分享一篇python 實現(xiàn)將Numpy數(shù)組保存為圖像,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python純代碼通過神經(jīng)網(wǎng)絡實現(xiàn)線性回歸的擬合方式
這篇文章主要介紹了Python純代碼通過神經(jīng)網(wǎng)絡實現(xiàn)線性回歸的擬合方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
從環(huán)境變量到配置中心帶你掌握Python多環(huán)境配置
這篇文章主要為大家詳細介紹了Python中配置管理的藝術,本文會從環(huán)境變量到配置中心帶你優(yōu)雅駕馭多環(huán)境配置,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2026-03-03

