基于python的新高考的分数转化

背景

新高考背景下涉及到“等级转换赋分”的科目,是政治、地理、化学、生物4门,这4门要以等级赋分后的成绩计入总成绩。
在这里插入图片描述

公式

在这里插入图片描述
案例:在这里插入图片描述

所用到的包

此项目主要运用到了pandas、sympy(方程式求解)、operator 模块,对我们的数据集不改变原顺序的情况下保存一个新表。

主要代码步骤

1.读入数据,根据程序排序

# An highlighted block
data=pd.read_excel(biaoge)
aa=data.to_dict(orient='records')
sorted_score=sorted(aa,key=itemgetter('成绩'),reverse=True)

2.找到根据比例划分后各区间对应的最高分和最低分

sa2=sorted_score[0]['成绩'] # 最高分
sa1=sorted_score[int(0.15*l)-1]['成绩']

3.进行分数转化并保留一位小数,为了防止分母为0的情况,使用try except 进行代码编写

x = sympy.Symbol('x')
all=[]
for idx,i in enumerate(sorted_score,1):
    dic={}
    num=i['成绩']
    if idx<=int(0.15*l):
        try:
            result=sympy.solve((100.0-x)*1/(x-86.0)-(sa2-num)*1/(num-sa1),[x])
            result=format(result[0],'.1f')
            i['转换后的成绩:']=result
        except:# 分母为0的情况下
            result=sympy.solve((100.0-x)*1/(x-86.0)-(sa2-num)*1/(num-sa1-0.001),[x])
            result=format(result[0],'.1f')
            # print(type(result))
            i['转换后的成绩:'] = result

4.最后根据编号排序,返回原始数据,保存到excel中

finally_result=sorted_score=sorted(sorted_score,key=itemgetter('序号'))
df = pd.DataFrame(finally_result)
name=biaoge.replace('.xls','').replace('.xlsx','')
df.to_excel(f"./data/排序过后的{name}.xlsx",index=False)

结果展示

原数据
在这里插入图片描述
转换后的数据
在这里插入图片描述
完成!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值