写了个全自动化的考试成绩分析软件

import pandas as pd

from openpyxl import load_workbook

def get_and_save_data_new(file_path):

“”” 只需更改文件名,就能自动处理完成所有操作

获取数据,处理数据,保存数据

保存的工作簿有:全级、1-8班、9班、全级describe分析

“””

# step0: 数据表列名准备

base_col = [‘班别’,’班级’,’姓名’,’语文’,’数学’,’英语’,’历史’,’道法’,’地理’,’生物’,’物理’,’化学’,’体育’]

# step1: 读取总表,求总分

data_col = pd.read_excel(file_path,sheet_name=’数据’).columns.tolist()

data_col = sorted(list(set(base_col) & set(data_col)),key=data_col.index) # 算出表格中需要用到的列名。** 用到了列表去重后还是以前列表顺序的方法

df = pd.read_excel(file_path, sheet_name=’数据’)[data_col]

df[‘总分’] = df.sum(axis=1,numeric_only=True) # 求每个人的总分

# step3: 级排

for subj in df.columns[df.columns.tolist().index(‘语文’):]: # 从df列名的语文开始往后处理各科及总分

insert_col = df.columns.tolist().index(subj) + 1

df.insert(insert_col, subj+’级排’, df[subj].rank(method=’dense’, axis=0))

# step4: 判定B+

describe = df.describe(percentiles=[0.2, 0.4, 0.6, 0.8]).round(2) # 对全级进行describe分析,B+对应的是40%这个成绩

B_pluss = describe.loc[‘40%’,’语文’::2] # 抽取各科及总分级排B+的分数值

# print(B_pluss)

def judge_b_p(score,b_pluss_value):

“”” 判定B+ “””

if score >= b_pluss_value:

return ‘B+’

else:return ”

# 将B+等级添加到工作表

for subj in B_pluss.index:

tem = df[subj].apply(judge_b_p,args=(B_pluss[subj],)) # 调用函数时,第二个参数只能是元组

insert_col = df.columns.tolist().index(subj) +2

df.insert(insert_col,subj+’B+’,tem)

# step5: 分离并保存9班与其他班数据

class1to8_df = df[df[‘班别’] != 9] # 分出1-8班数据

class9_df = df[df[‘班别’] == 9] # 分出9班数据

# 准备添加到工作簿中,以新的工作表保存

writer = pd.ExcelWriter(path=file_path, mode=’a’, engine=’openpyxl’)

book = load_workbook(filename=file_path)

writer.book = book

df.to_excel(writer, sheet_name=’全级整理后数据’, index=False) # 保存处理后的全级数据

class1to8_df.to_excel(writer, sheet_name=’1-8班成绩’, index=False) # 保存1-8班学生数据

class9_df.to_excel(writer, sheet_name=’9班成绩’, index=False) # 保存9班学生数据

describe.to_excel(writer, sheet_name=’全级describe分析’, index=False) # 保存describe分析数据

writer.save()

writer.close()

print(‘ …成绩表分析整理完成… ‘)

return B_pluss # 返回各科及总分B+分值

def manage_df():

“”” 提取原数据,处理分析后,以工作表形式添加在工作簿中 “””

file_path = r’\192.168.1.249临时文件 4教师XX创新班资料全级历次成绩/【第10周】2022-2023学年上学期初一期中水平测试成绩统计(公布).xlsx’

get_and_save_data_new(file_path) # 傻瓜式使用,完全自动化

if __name__ == ‘__main__’:

manage_df()

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月11日
下一篇 2022年10月11日

相关推荐