python中补全学生成绩分类,【新手求助】改进“学生成绩全自动统计程序”

# coding=utf-8

import pandas as pd

import easygui as g

import sys

import os

#选择原文件路径

def get_file():

confirm = g.ccbox(msg="程序简介 & 注意事项: \n\n 1.本程序可以根据Excel登分表一键生成九科总分排名以及单科排名。选择或保存文件时,   左上角会有提示,请注意左上角小标题。\n2.本程序设计初衷是为了分担老师们的排名统计工作,未经允许严禁用于商用。\n\n\n      ⚬ 注意事项:登分表内必须有且仅有\n      ‘考号’‘班别’‘姓名’‘语文’‘数学’‘外语’\n      ‘物理’‘历史’‘生物’‘地理’‘政治’‘化学’。\n        但无需按照顺序排列,本程序会自动排序。\n\n\n\n                           准备好后请单击“下一步”",

title='学生成绩统计程序', choices=('下一步', '退出'))

if confirm == True:

file = g.fileopenbox(msg='', title='请选择登分表Excel文件',

default=r'C:\\', filetypes=['*.xlsx'])

if file == None or file == '.':

sys.exit()

else:

return file

else:

sys.exit()

#得到所有科目

def get_subject(data):

km = ['语文', '数学', '外语', '物理', '化学', '生物', '政治', '历史', '地理']

all_subject = []

for subject in data.columns:

if subject in km:

all_subject.append(subject)

return all_subject

#猎取单科数据 ID + 班别 + 姓名 + 本科目的成绩 + 排名

def get_series(kem, orig, savep):

with pd.ExcelWriter(savep) as writer:

orig.to_excel(writer, sheet_name='所有科目')

for i in kem:

pm = i + '名次'

df_dk = orig.loc[:, ['班别', '姓名', i, pm]]

df_dk.sort_values(by=pm, inplace=True)

df_dk.to_excel(writer, sheet_name=i)

def edit_all(data1):

for kemu in data1.columns[2:]:

data1[kemu+'名次'] = data1[kemu].rank(method='min', ascending=False)

data1['3科总分'] = data1['语文'] + data1['数学'] + data1['外语']

data1['3科总分名次'] = data1['3科总分'].rank(method='min', ascending=False)

data1['9科总分'] = data1.loc[:, '语文':'地理'].sum(axis=1)

data1['9科总分名次'] = data1['9科总分'].rank(method='min', ascending=False)

data1.sort_values(by="9科总分名次", inplace=True)

data2 = data1.loc[:, ['班别', '姓名', '语文', '语文名次', '数学', '数学名次',

'外语', '外语名次', '物理', '物理名次', '化学', '化学名次',

'生物', '生物名次', '政治', '政治名次', '历史', '历史名次',

'地理', '地理名次', '3科总分', '3科总分名次', '9科总分', '9科总分名次']]

return data2

excel_file = get_file()

df1 = pd.read_excel(excel_file, index_col=0)

df2 = edit_all(df1)

allkm = get_subject(df1)

sp = g.filesavebox(msg='请选择保存路径及输入保存文件名(注:默认为“成绩统计表”。不需要写后缀).',

title='学生成绩统计程序', default=r'成绩统计表', filetypes=['*.xlsx'])

spp = sp + '.xlsx'

get_series(allkm, df2, spp)

g.msgbox("文件保存成功,感谢您的使用!\n\n\n\n\n\n                         更多功能正在开发中....\n\n\n\n\n                                                           版本号:2020/12/23", '学生成绩统计程序')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值