Python读取大量Excel文件并跨文件批量计算平均值

yizhihongxing

  本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法。

  首先,让我们来看一下具体需求:目前有一个文件夹,其中存放了大量Excel文件;文件名称是每一位同学的名字,即文件名称没有任何规律。

Python读取大量Excel文件并跨文件批量计算平均值

  而每一个文件都是一位同学全班除了自己之外的其他同学的各项打分,我们以其中一个Excel文件为例来看:

Python读取大量Excel文件并跨文件批量计算平均值

  可以看到,全班同学人数(即表格行数)很多、需要打分的项目(即表格列数)有11个(不算总分);同时,由于不能给自己打分,导致每一份表格中会有一行没有数据。

  而我们需要做的,就是求出每一位同学的、11个打分项目分别的平均分,并存放在一个新的、表头(行头与列头)与大家打分文件一致的总文件中,如下图。其中,每一个格子都代表了这位同学、这一项打分项目在经过班级除其之外的每一位同学打分后计算出的平均值。

Python读取大量Excel文件并跨文件批量计算平均值

  可以看到,一个人就需要算11次平均,更何况一个班会有数十位同学。如果单独用Excel计算,是非常麻烦的。

  而借助Python,就会简单很多。具体代码如下。在这里,就不再像平日里机器学习、深度学习代码博客那样,对代码加以逐段、分部分的具体解释了,直接列出全部代码,大家参考注释即可理解。

# -*- coding: utf-8 -*-
"""
Created on Thu Apr  8 16:24:41 2021

@author: fkxxgis
"""

import os
import numpy as np
from openpyxl import load_workbook

file_path='F:/班长/2020-2021综合测评与评奖评优/01_综合测评/地信XXXX班互评打分表/' #这里是每一位同学打分Excel文件存放的路径
output_path='F:/班长/2020-2021综合测评与评奖评优/01_综合测评/地信XXXX班综合素质测评互评打分表.xlsx' #这里是最终结果存放路径,请不要和上述路径一致
first_row=5 #第一个分数所在的行数
first_column=3 #第一个分数所在的列数
all_row=32 #班级同学总数
all_column=11 #需要计算的分数项目个数

all_excel=os.listdir(file_path) #获取打分文件路径下全部Excel文件
file_row=first_row+all_row-1
file_column=first_column+all_column-1
all_mean_score=np.zeros((file_row,file_column),dtype=float) #新建一个二维数组,存放每一位同学、每一项项目的分数平均值
for now_row in range(first_row,file_row+1):
    for now_column in range (first_column,file_column+1):
        all_score=[]
        for excel_num in range(0,len(all_excel)):
            now_excel=load_workbook(file_path+all_excel[excel_num]) #打开第一个打分Excel文件
            all_sheet=now_excel.get_sheet_names() #获取打分文件的全部Sheet名称
            now_sheet=now_excel.get_sheet_by_name(all_sheet[0]) #本文中分数全部存储于第一个Sheet,因此下标为0
            single_score=now_sheet.cell(now_row,now_column).value #获取对应单元格数据
            if single_score==None: #如果这个单元格为空(也就是自己不给自己打分的那一行)
                pass
            else:
                all_score.append(single_score)
        all_mean_score[now_row-1,now_column-1]=np.mean(all_score) #计算全部同学为这一位同学、这一个打分项目所打分数的平均值

output_excel=load_workbook(output_path) #读取结果存放Excel
output_all_sheet=output_excel.get_sheet_names() #这里代码含义同上
output_sheet=output_excel.get_sheet_by_name(output_all_sheet[0])
output_sheet=output_excel.active
for output_now_row in range(first_row,file_row+1):
    for output_now_column in range (first_column,file_column+1):
        exec("output_sheet.cell(output_now_row,output_now_column).value=all_mean_score[output_now_row-1,output_now_column-1]") #将二维数组中每一位同学、每一项打分项目的最终平均分数写入结果文件的对应位置
output_excel.save(output_path)

  至此,大功告成。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python读取大量Excel文件并跨文件批量计算平均值 - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python自动批量修改文件名称的方法

      本文介绍基于Python语言,按照一定命名规则批量修改多个文件的文件名的方法。   已知现有一个文件夹,其中包括班级所有同学上交的作业文件,每人一份;所有作业文件命名格式统一,都是地信1701_姓名_学习心得格式。   现需要对每一位同学的作业文件加以改名,有很多种需求。   第一种需求,将每一位同学作业文件名中原本是姓名的部分,都修改为学号。即原本的地…

    Python开发 2023年3月31日
    00
  • Python GDAL库在Anaconda环境中的配置

      本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法。   需要注意的是,本文介绍基于conda install命令直接联网安装GDAL库的方法;这一方法有时不太稳定,且速度较慢。因此,如果有需要,大家可以参考Anaconda环境GDAL库基于whl文件的配置方法这篇文章中的方法,可以更快速地配置GDAL库。   …

    python 2023年4月18日
    00
  • Python批量绘制遥感影像数据的直方图

      本文介绍基于Python中gdal模块,实现对大量栅格图像批量绘制直方图的方法。   首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行依据其像元数值的直方图绘制,具体绘制内容即各栅格图像像素数值的分布情况;所有栅格数据都保存在同一目标路径下,且均为.tif格式;而目标路径下具有其它非.tif格式的文件,以及不需要进行直方图绘制的.tif格式文…

    Python开发 2023年3月31日
    00
  • Python pydot与graphviz库在Anaconda环境的配置

      本文介绍在Anaconda环境中,安装Python语言pydot与graphviz两个模块的方法。   最近进行随机森林(RF)的树的可视化操作,需要用到pydot与graphviz模块;因此记录一下二者具体的安装方法。   相关环境的版本信息:Anaconda Navigator:1.10.0;Python 3.8.5。   话不多说,我们开始下载与安…

    Python开发 2023年3月31日
    00
  • Python绘制神经网络模型图

      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法。   最近需要进行神经网络结构模型的可视化绘图工作。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可以实现对已有神经网络的直接可视化,过程较为方便,本文…

    Python开发 2023年3月31日
    00
  • Python核对遥感影像批量下载情况的方法

      本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法。   批量下载大量遥感影像数据对于GIS学生与从业人员可谓十分常见。然而,对于动辄成千上万景的遥感影像文件,下载过程中可能会出现各类失败问题,且或许在下载软件或工具中还不能很好显示失败的文件有哪些(这一点在批量下载MODIS产品时显得尤为突出,…

    Python开发 2023年3月31日
    00
  • 多变量两两相互关系联合分布图的Python绘制

      本文介绍基于Python中seaborn模块,实现联合分布图绘制的方法。   联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操作中经常需要用到。一幅好看的联合分布图可以使得我们的数据分析更加具有可视性,让大家眼前一亮。   那么,本文就将用seaborn来实现联合分布图的绘制。seab…

    Python开发 2023年3月31日
    00
  • Python求取文件夹内的文件数量、子文件夹内的文件数量

      本文介绍基于Python语言,统计文件夹中文件数量;若其含有子文件夹,还将对各子文件夹中的文件数量一并进行统计的方法。   最近,需要统计多个文件夹内部的文件数量,包括其中所含子文件夹中的文件数量。其中,这多个需要统计文件数量的文件夹都放在一个总文件夹内。   这一操作基于Python来实现是非常方便、快捷的。话不多说,我们对相关的Python代码来进行…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部