Python对Excel文件进行多行求和并将结果排序输出前三

该程序读取Excel工作簿中的学生姓名和各科成绩,利用openpyxl计算总分并用pandas进行排序,输出排名前三的学生。用户需确保安装了所需库,运行时须注意文件保存状态。

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

当前目录下有一个xlxsx工作簿,第一列为学生姓名,第二列到第四列为学生的课程成绩,编写程序计算每名学生的总分,并输出排名前三的学生姓名

我主要使用openpyxl方法进行编程,但是还是用了一点pandas

这两个模块都需要下载

1.用户可以在编译器终端处或者在Windows系统中进入控制台界面

2.输入 pip list 查看自己是否安装了相应的第三方库,如果是Python 3.x则是 pip3 list

3.如果查看没有安装就需要手动安装,命令为:pip installopenpyxl 和open installpandas

下面是我的代码

from openpyxl import load_workbook
import pandas as pd
wb = load_workbook("grade.xlsx", data_only=True)  # 获取对象
sheet = wb.active  # 指定表单Sheet1为当前表单
sheet.cell(row=2, column=5).value = '=SUM(B2:D2)'#计算总分
sheet.cell(row=3, column=5, value='=SUM(B3:D3)')
sheet.cell(row=4, column=5, value='=SUM(B4:D4)')
sheet.cell(row=5, column=5, value='=SUM(B5:D5)')
wb.save('grade.xlsx')#运行一次后打开所在文件点击保存后删除这一句再一次运行
for line in sheet.rows:
    for cell in line:
        print(cell.value, ' ', end="")
    print()
df = pd.read_excel('grade.xlsx')
map = dict(zip(df['学生'], df['总分']))#将姓名和成绩加入字典排序
e = sorted(map.items(), key=lambda e: e[1], reverse=True)
print(e)
e1 = []
for i in e:
    e1.append(i[0])
print("前三名为:")
for i in range(0, 3):
    print(e1[i])

 运行时记得关闭xlsx文件,否则会报错,然后运行一次后请把wb.save()删除,打开相应的文件,手动将数据完全保存,并再次运行。这一点也确实麻烦但我没有更好的办法,可能以后会修改的。

下面这个就是没有按照上面所说删除wb.save手动保存数据的效果

下面是遵循上述方法的结果

 下面是用pandas的非常感谢这位的帮助

 效果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值