欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python讀取大量Excel文件并跨文件批量計(jì)算平均值的方法

 更新時(shí)間:2023年02月02日 08:40:09   作者:瘋狂學(xué)習(xí)GIS  
這篇文章主要介紹了Python讀取大量Excel文件并跨文件批量計(jì)算平均值,介紹基于Python語(yǔ)言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,需要的朋友可以參考下

本文介紹基于Python語(yǔ)言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法~

腳本之家推薦學(xué)習(xí)python書(shū)籍

  首先,讓我們來(lái)看一下具體需求:目前有一個(gè)文件夾,其中存放了大量Excel文件;文件名稱是每一位同學(xué)的名字,即文件名稱沒(méi)有任何規(guī)律。

  而每一個(gè)文件都是一位同學(xué)對(duì)全班除了自己之外的其他同學(xué)的各項(xiàng)打分,我們以其中一個(gè)Excel文件為例來(lái)看:

  可以看到,全班同學(xué)人數(shù)(即表格行數(shù))很多、需要打分的項(xiàng)目(即表格列數(shù))有11個(gè)(不算總分);同時(shí),由于不能給自己打分,導(dǎo)致每一份表格中會(huì)有一行沒(méi)有數(shù)據(jù)。

  而我們需要做的,就是求出每一位同學(xué)的、11個(gè)打分項(xiàng)目分別的平均分,并存放在一個(gè)新的、表頭(行頭與列頭)與大家打分文件一致的總文件中,如下圖。其中,每一個(gè)格子都代表了這位同學(xué)、這一項(xiàng)打分項(xiàng)目在經(jīng)過(guò)班級(jí)除其之外的每一位同學(xué)打分后計(jì)算出的平均值。

  可以看到,一個(gè)人就需要算11次平均,更何況一個(gè)班會(huì)有數(shù)十位同學(xué)。如果單獨(dú)用Excel計(jì)算,是非常麻煩的。

  而借助Python,就會(huì)簡(jiǎn)單很多。具體代碼如下。在這里,就不再像平日里機(jī)器學(xué)習(xí)、深度學(xué)習(xí)代碼博客那樣,對(duì)代碼加以逐段、分部分的具體解釋了,直接列出全部代碼,大家參考注釋即可理解。

# -*- 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:/班長(zhǎng)/2020-2021綜合測(cè)評(píng)與評(píng)獎(jiǎng)評(píng)優(yōu)/01_綜合測(cè)評(píng)/地信XXXX班互評(píng)打分表/' #這里是每一位同學(xué)打分Excel文件存放的路徑
output_path='F:/班長(zhǎng)/2020-2021綜合測(cè)評(píng)與評(píng)獎(jiǎng)評(píng)優(yōu)/01_綜合測(cè)評(píng)/地信XXXX班綜合素質(zhì)測(cè)評(píng)互評(píng)打分表.xlsx' #這里是最終結(jié)果存放路徑,請(qǐng)不要和上述路徑一致
first_row=5 #第一個(gè)分?jǐn)?shù)所在的行數(shù)
first_column=3 #第一個(gè)分?jǐn)?shù)所在的列數(shù)
all_row=32 #班級(jí)同學(xué)總數(shù)
all_column=11 #需要計(jì)算的分?jǐn)?shù)項(xiàng)目個(gè)數(shù)

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) #新建一個(gè)二維數(shù)組,存放每一位同學(xué)、每一項(xiàng)項(xiàng)目的分?jǐn)?shù)平均值
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]) #打開(kāi)第一個(gè)打分Excel文件
            all_sheet=now_excel.get_sheet_names() #獲取打分文件的全部Sheet名稱
            now_sheet=now_excel.get_sheet_by_name(all_sheet[0]) #本文中分?jǐn)?shù)全部存儲(chǔ)于第一個(gè)Sheet,因此下標(biāo)為0
            single_score=now_sheet.cell(now_row,now_column).value #獲取對(duì)應(yīng)單元格數(shù)據(jù)
            if single_score==None: #如果這個(gè)單元格為空(也就是自己不給自己打分的那一行)
                pass
            else:
                all_score.append(single_score)
        all_mean_score[now_row-1,now_column-1]=np.mean(all_score) #計(jì)算全部同學(xué)為這一位同學(xué)、這一個(gè)打分項(xiàng)目所打分?jǐn)?shù)的平均值

output_excel=load_workbook(output_path) #讀取結(jié)果存放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]") #將二維數(shù)組中每一位同學(xué)、每一項(xiàng)打分項(xiàng)目的最終平均分?jǐn)?shù)寫(xiě)入結(jié)果文件的對(duì)應(yīng)位置
output_excel.save(output_path)

  至此,大功告成。

補(bǔ)充:python批量讀取Excel文件

將同一個(gè)文件夾下的xlsx文件讀取:

import os
import pandas as pd

path = r'./path of file'
for i in os.listdir(path):
    df = pd.read_excel(os.path.join(path,i))

到此這篇關(guān)于Python讀取大量Excel文件并跨文件批量計(jì)算平均值的文章就介紹到這了,更多相關(guān)Python讀取大量Excel文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的Pyperclip模塊功能詳解

    python中的Pyperclip模塊功能詳解

    pyperclip模塊中有兩個(gè)函數(shù),分別是copy()和paste(),copy()用于向計(jì)算機(jī)的剪貼板發(fā)送文本,paste()用于從計(jì)算機(jī)剪貼板接收文本,這篇文章主要介紹了python中的Pyperclip模塊,需要的朋友可以參考下
    2023-03-03
  • Django框架models使用group by詳解

    Django框架models使用group by詳解

    這篇文章主要介紹了Django框架models使用group by詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python tornado獲取請(qǐng)求參數(shù)的方法

    python tornado獲取請(qǐng)求參數(shù)的方法

    在Tornado框架中,獲取請(qǐng)求參數(shù)包括查詢字符串參數(shù)、表單數(shù)據(jù)和JSON數(shù)據(jù)等,JSON數(shù)據(jù)通過(guò)直接訪問(wèn)self.request.json獲取,正確處理這些數(shù)據(jù)需要注意請(qǐng)求的Content-Type和數(shù)據(jù)格式,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Python解決IndexError: list index out of range問(wèn)題的三種方法

    Python解決IndexError: list index out of&nb

    IndexError是一種常見(jiàn)的異常類型,它通常發(fā)生在嘗試訪問(wèn)列表(list)中不存在的索引時(shí),錯(cuò)誤信息“IndexError: list index out of range”意味著你試圖訪問(wèn)的列表索引超出了列表的實(shí)際范圍,所以本文給大家介紹了Python成功解決IndexError: list index out of range
    2024-05-05
  • Python編程之Re模塊下的函數(shù)介紹

    Python編程之Re模塊下的函數(shù)介紹

    這篇文章主要介紹了Python編程之Re模塊下的函數(shù)介紹,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟

    django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟

    這篇文章主要介紹了django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)詳解

    使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)詳解

    這篇文章主要給大家介紹了關(guān)于使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)的相關(guān)資料,文中通過(guò)示例代碼的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-12-12
  • django-rest-framework解析請(qǐng)求參數(shù)過(guò)程詳解

    django-rest-framework解析請(qǐng)求參數(shù)過(guò)程詳解

    這篇文章主要介紹了django-rest-framework解析請(qǐng)求參數(shù)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python selenium 自動(dòng)化腳本打包成一個(gè)exe文件(推薦)

    Python selenium 自動(dòng)化腳本打包成一個(gè)exe文件(推薦)

    這篇文章主要介紹了Python selenium 自動(dòng)化腳本打包成一個(gè)exe文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳解Python中enumerate函數(shù)的使用

    詳解Python中enumerate函數(shù)的使用

    Python?的?enumerate()?函數(shù)就像是一個(gè)神秘的黑箱,它具有非常有用的高級(jí)用法。本文就來(lái)為大家詳細(xì)講一下它的使用,需要的可以參考一下
    2022-08-08

最新評(píng)論