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

  • Post category:Python

下面是详细讲解“Python读取大量Excel文件并跨文件批量计算平均值的方法”的完整实例教程。

背景介绍

在日常工作中,我们可能需要读取大量的 Excel 文件,并对它们进行批量计算。如果手动操作,会很繁琐,效率也不高。而使用 Python,可以方便地实现这一功能,节省大量时间和精力。

环境准备

在进行下文的示例之前,需要先准备以下环境:

  • Python 3.x
  • Pandas 库
  • NumPy 库

示例一

假设现在有 3 个 Excel 文件,每个文件的文件名为 file1.xlsxfile2.xlsxfile3.xlsx,文件的路径为 data/files/ 目录下。每个文件中都包含一个名为 Sheet1 的 Sheet,其中有一列为 score,我们需要计算出这 3 个文件中 score 列的平均值。

下面是示例代码:

import pandas as pd
import numpy as np

file_names = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
dir_path = 'data/files/'

score_sum = 0
count = 0
for file_name in file_names:
    file_path = dir_path + file_name
    df = pd.read_excel(file_path, sheet_name='Sheet1')
    score_sum += np.sum(df['score'])
    count += len(df['score'])

print('平均值:', score_sum / count)

代码解释:

首先,我们需要导入 Pandas 和 NumPy 库,然后定义三个变量:

  • file_names:Excel 文件名列表
  • dir_path:文件所在目录
  • score_sum:总分数和,初始化为 0
  • count:总人数,初始化为 0

然后,对于每个 Excel 文件,读取 Sheet1 的数据,并计算出 score 列的总和和人数:

df = pd.read_excel(file_path, sheet_name='Sheet1')
score_sum += np.sum(df['score'])
count += len(df['score'])

最后,根据总分数和人数计算出平均值:

print('平均值:', score_sum / count)

示例二

上一个示例仅考虑了一个 Sheet 的情况。如果一个 Excel 文件有多个 Sheet,我们可以采用类似的方式读取多个 Sheet。下面的示例代码中,我们读取 file4.xlsx 文件中的 Sheet1Sheet2,分别计算它们的平均值,然后将结果进行合并,得到所有 Sheet 的平均值。

import pandas as pd
import numpy as np

file_name = 'file4.xlsx'
dir_path = 'data/files/'

sheet_names = ['Sheet1', 'Sheet2']
result = []
for sheet_name in sheet_names:
    file_path = dir_path + file_name
    df = pd.read_excel(file_path, sheet_name=sheet_name)
    score_sum = np.sum(df['score'])
    count = len(df['score'])
    result.append(score_sum / count)

print('平均值:', np.mean(result))

代码解释:

首先,我们定义了两个变量:

  • file_name:Excel 文件名
  • dir_path:文件所在目录

然后,定义了一个 sheet_names 列表,其中包含需要读取的 Sheet 的名称。

接下来,遍历 sheet_names 列表,读取每个 Sheet 的数据,并计算出平均值:

for sheet_name in sheet_names:
    file_path = dir_path + file_name
    df = pd.read_excel(file_path, sheet_name=sheet_name)
    score_sum = np.sum(df['score'])
    count = len(df['score'])
    result.append(score_sum / count)

最后,将所有 Sheet 的平均值求出来,得到最终的平均值:

print('平均值:', np.mean(result))

总结

本文介绍了如何使用 Python 读取大量 Excel 文件,并跨文件批量计算平均值。通过示例代码的介绍,你可以了解到如何使用 Pandas 和 NumPy 库来实现这一功能。