利用Python实现简单的Excel统计函数

  • Post category:Python

我来为你讲解如何利用Python实现简单的Excel统计函数。

教程概述

本教程将会使用Python中的openpyxl库实现对Excel表格数据的统计功能。具体实现的功能包括:

  1. 统计某一列数据中的最大值、最小值、平均值和总和。
  2. 根据某一列数据的值,统计该列数据分别等于、大于或小于给定值的单元格个数。
  3. 将统计结果自动输出到新的Excel表格中。

环境准备

在开始之前,需要事先准备好Python环境和openpyxl库。这里推荐使用anaconda来管理Python环境和安装库,anaconda的安装和使用方法可以参考anaconda官方文档

在安装好anaconda后,打开终端或命令行工具,输入以下代码来安装openpyxl库:

conda install -c anaconda openpyxl

安装完成后,即可开始使用Python来实现统计功能。

代码实现

首先,我们需要读取Excel表格中的数据。这里假设Excel表格的第一列为姓名(Name),第二列为年龄(Age),第三列为成绩(Score),并将表格保存在名为“scores.xlsx”的文件夹下。

import openpyxl

# 打开Excel文件
wb = openpyxl.load_workbook('scores.xlsx')
# 获取第一个工作表
ws = wb.active
# 读取数据
data = []
for row in ws.iter_rows(min_row=2):
    record = {}
    record['name'] = row[0].value
    record['age'] = row[1].value
    record['score'] = row[2].value
    data.append(record)

接着,我们来实现第一个统计功能:统计成绩列的最大值、最小值、平均值和总和。

# 统计成绩列的最大值、最小值、平均值和总和
max_score = max([record['score'] for record in data])
min_score = min([record['score'] for record in data])
avg_score = sum([record['score'] for record in data]) / len(data)
total_score = sum([record['score'] for record in data])
# 输出结果
print(f"最高分:{max_score},最低分:{min_score},平均分:{avg_score:.2f},总分:{total_score}")

接下来,我们来实现第二个统计功能:统计成绩列中大于、小于或等于给定值的单元格个数。

# 统计成绩列中大于、小于或等于给定值的单元格个数
def count_cells(condition):
    count = 0
    for record in data:
        if condition(record['score']):
            count += 1
    return count

count_greater = count_cells(lambda score: score > 90)
count_less = count_cells(lambda score: score < 60)
count_equal = count_cells(lambda score: score == 80)
# 输出结果
print(f"大于90分的人数:{count_greater},小于60分的人数:{count_less},等于80分的人数:{count_equal}")

最后,我们来实现第三个功能:将统计结果自动输出到新的Excel表格中。

# 将统计结果保存到Excel表格中
result_wb = openpyxl.Workbook()
result_ws = result_wb.active

result_ws['A1'] = '统计项'
result_ws['B1'] = '结果'

result_ws['A2'] = '最高分'
result_ws['B2'] = max_score

result_ws['A3'] = '最低分'
result_ws['B3'] = min_score

result_ws['A4'] = '平均分'
result_ws['B4'] = avg_score

result_ws['A5'] = '总分'
result_ws['B5'] = total_score

result_ws['A6'] = '大于90分的人数'
result_ws['B6'] = count_greater

result_ws['A7'] = '小于60分的人数'
result_ws['B7'] = count_less

result_ws['A8'] = '等于80分的人数'
result_ws['B8'] = count_equal

result_wb.save('result.xlsx')

示例说明

为了更好地理解本教程的实现过程和效果,这里给出两条示例说明。

示例一

假设Excel表格中的数据为:

Name Age Score
张三 18 85
李四 19 95
王五 20 76
赵六 19 60

按照本教程的实现方法,可以得到如下的统计结果:

最高分:95,最低分:60,平均分:79.00,总分:316
大于90分的人数:1,小于60分的人数:1,等于80分的人数:0

并且会自动输出一个名为“result.xlsx”的Excel表格,其中包含了以上统计结果。

示例二

为了展示本教程的通用性,我们再来看一个稍微复杂一些的示例。

假设Excel表格中的数据改为:

学号 姓名 年龄 成绩 性别
001 张三 18 85
002 李四 19 95
003 王五 20 76
004 赵六 19 60

只需要稍微修改读取数据的代码和统计函数的参数,就可以得到与之前相同的统计结果和输出表格。

总结

本教程通过使用Python的openpyxl库,实现了对Excel表格数据的统计功能。通过学习本教程,读者可以掌握利用Python处理Excel表格数据的基本方法,在工作中提高数据处理效率。