MTT自动统计数据

文章介绍了一个Python程序,它遍历指定文件夹及其子文件夹,筛选出XLSX文件,按文件名中的数字排序,提取特定表格数据,计算平均值,然后将这些数据汇总到单独的Excel文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd
import os

path = '直接复制文件夹地址'
folder_path = os.path.normpath(path)


def get_min_folders(folder_path):
    min_folders = []
    # 遍历文件夹及其子文件夹
    for root, dirs, files in os.walk(folder_path):
        for dir_name in dirs:
            dir_name = os.path.join(root, dir_name)
            min_folders.append(dir_name)
    return min_folders


def get_file_paths(folder_path):
    file_paths = []
    time = [0,24,48,72]
    def sort_files_by_number(file_pathes):
    # 自定义比较函数,根据文件名中的数字部分进行排序
        def get_number(file_path):
            # 提取文件名中的数字部分
            numbers = [0, 24, 48, 72]
            file_name = os.path.basename(file_path)
            for num in numbers:
                if str(num) in file_name:
                    return num
    # 使用比较函数对文件列表进行排序
        sorted_pathes = sorted(file_pathes, key=get_number)
        return sorted_pathes

    # 遍历文件夹下的所有文件
    for file_name in os.listdir(folder_path):
        # 检查文件是否为 XLSX 格式
        if file_name.endswith('.xlsx'):
            # 检查文件名中是否包含指定数字
              for num in time:
                    if str(num) in file_name:
                        file_paths.append(os.path.join(folder_path, file_name))
                        time.remove(num)
                    if len(time) == 0:
                        break
    # 根据文件大小排序
    return sort_files_by_number(file_paths)


def get_table(file_path):
    df= pd.read_excel(file_path)
    table = df.loc[9:16, '检测结果':'Unnamed: 12']
    table.set_index('检测结果', inplace=True)
    table.rename(columns={'Unnamed: 1':'1', 'Unnamed: 2':'2', 'Unnamed: 3': '3', 'Unnamed: 4': '4', 'Unnamed: 5': '5', 'Unnamed: 6': '6', 'Unnamed: 7': '7', 'Unnamed: 8': '8', 'Unnamed: 9': '9', 'Unnamed: 10': '10', 'Unnamed: 11': '11', 'Unnamed: 12': '12'}, inplace=True)
    return table


def get_series(table):
    blank = table['2'][1:7].mean()
    data = table - blank

    result = pd.Series(dtype='float64')
    for i in range(6):
        a = str(i + 3)
        b = data[a]['B':'G']
        result = pd.concat([result, b], ignore_index=True)
    return result


def get_data(folder_path):
    data = pd.DataFrame(columns=['0H','24H','48H','72H'])
    file_paths = get_file_paths(folder_path)
    for file_path,time in zip(file_paths,['0H','24H','48H','72H']):
        table = get_table(file_path)
        series = get_series(table)
        data[time]=series
    data = data.T.round(4)
    return data


min_folders = get_min_folders(folder_path)
print('共检索到%s个文件夹,正在生成相应汇总数据:'%len(min_folders))

for min_folder in min_folders:
    result = min_folder + '\\汇总.xlsx'
    if os.path.exists(result):
        print('该文件已存在', result)
        continue
    else:
        data = get_data(min_folder)
        data.to_excel(result)
        print('已生成:', result)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厂里无人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值