用php代码输出成绩的最高分,中学成绩分析-提取每科最高分学生名单

本帖最后由 lvcaolhx 于 2019-11-20 10:53 编辑

import pandas as pd  #load_data 1.0版

def load_data():

global start,end,sort_kemu_list,df

df=pd.read_excel('数据1_2.xlsx',sheet_name='成绩',usecols=list(range(0,10)))

df['总分']=df.loc[:,'语文':'生物'].sum(axis=1)

df['班名']=df.groupby('班级').总分.rank(method='min',ascending=False).astype(int)

df['年名']=df.总分.rank(method='min',ascending=False).astype(int)

source_biaot_list=list(df.columns) #原始数据表头

print( source_biaot_list)

start,end=input('>>> 请输入科目起始列和结束列(从0开始数),空格隔开,回车结束:').split()

kemudata_cols=source_biaot_list[int(start):int(end)+1] #科目表头

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

sort_kemu_list=[x for i in default_cols for x in  source_biaot_list if i in x] #将科目表头按照设定的顺序排列

source_biaot_list[int(start):int(end)+1]=sort_kemu_list

sort_biaot_list= source_biaot_list

print(sort_biaot_list)

df=df[sort_biaot_list] #将最终表的列序按照设定的顺序排列

return df

load_data()

#df[df['语文']==111]

def get_col(x_df,colx):

col0=['姓名','班级']

col0.extend(colx.split(' '))

df2=x_df[col0]

return df2.loc[df2[colx]==df2[colx].max()]

yuwen_df=get_col(df,'语文').T

yuwen_df.index = ['姓名','班级','最高分']

shuxue_df=get_col(df,'数学').T

shuxue_df.index = ['姓名','班级','最高分']

print(yuwen_df)

yingyu_df=get_col(df,'英语').T

yingyu_df.index = ['姓名','班级','最高分']

wuli_df=get_col(df,'物理').T

wuli_df.index = ['姓名','班级','最高分']

shengwu_df=get_col(df,'生物').T

shengwu_df.index = ['姓名','班级','最高分']

huaxue_df=get_col(df,'化学').T

huaxue_df.index = ['姓名','班级','最高分']

print(shuxue_df)

print(yingyu_df)

result=pd.merge(yuwen_df,shuxue_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,yingyu_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,wuli_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,huaxue_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,shengwu_df,left_index=True, right_index=True, how='left')

print(result)

result.to_excel(r'D:\test\retmax.xls')

思维混乱,代码拼凑而成,能优雅的地方很多;

程序输出与目标输出表格相差很大,实在没能力了,请各位大神指点

数据姓名脱敏处理

请各位大神,代码优化,输出格式匹配目标表格.

源代码与数据:

链接:https://pan.baidu.com/s/1lW8RfSmI4sdUeJKUVClf2Q

提取码:2d1l

复制这段内容后打开百度网盘手机App,操作更方便哦

更新:

输出表头,简化了代码:

import pandas as pd  #2.0版

def load_data():

global start,end,sort_kemu_list,df

df=pd.read_excel('数据2.xlsx',sheet_name='成绩',usecols=list(range(0,10)))

df['总分']=df.loc[:,'语文':'生物'].sum(axis=1)

df['班名']=df.groupby('班级').总分.rank(method='min',ascending=False).astype(int)

df['年名']=df.总分.rank(method='min',ascending=False).astype(int)

source_biaot_list=list(df.columns) #原始数据表头

print( source_biaot_list)

start,end=input('>>> 请输入科目起始列和结束列(从0开始数),空格隔开,回车结束:').split()

kemudata_cols=source_biaot_list[int(start):int(end)+1] #科目表头

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

sort_kemu_list=[x for i in default_cols for x in  source_biaot_list if i in x] #将科目表头按照设定的顺序排列

source_biaot_list[int(start):int(end)+1]=sort_kemu_list

sort_biaot_list= source_biaot_list

print(sort_biaot_list)

df=df[sort_biaot_list] #将最终表的列序按照设定的顺序排列

return df

def get_col(x_df,colx):

col0=['姓名','班级']

col0.extend(colx.split(' '))

df2=x_df[col0]

df3=df2.loc[df2[colx]==df2[colx].max()]

df3.reset_index(drop=True, inplace=True)#重置筛选后的索引

df3=df3.T

df3.index =['姓名','班级','最高分'] #重设行索引

df3.columns = colx + df3.columns.astype(str) #重设列索引

return df3

load_data()

yuwen_df=get_col(df,'语文')

shuxue_df=get_col(df,'数学')

print(yuwen_df)

yingyu_df=get_col(df,'英语')

wuli_df=get_col(df,'物理')

shengwu_df=get_col(df,'生物')

huaxue_df=get_col(df,'化学')

print(shuxue_df)

print(yingyu_df)

result=pd.merge(yuwen_df,shuxue_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,yingyu_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,wuli_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,huaxue_df,left_index=True, right_index=True, how='left')

result=pd.merge(result,shengwu_df,left_index=True, right_index=True, how='left')

print(result)

max.png

(32.69 KB, 下载次数: 0)

2019-11-16 18:53 上传

bdea3cdfc23f0ffcd8d939d1761025e0.gif

6589598f1a9e053326bdd97ddb840118.gif

输出结果与目标表格

55fd2b2273b5a8b4531f72773c469d6e.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
成绩查询php源码 登录类型选择管理员 用户名 admin 密码 admin 软件介绍:提供8种权限用户:校长室(可查询所有学生成绩信息),班主任(可录入、查询所任班级的所有学生成绩信息),任课老师(可录入、查询所任班级课程的所有学生成绩信息),学生、学生家长(可查询本学生的成绩信息),管理员(最高权限),年级组长(年级中的管理员权限),督察人员(专门针对学生评价系统内容的用户类型)。老师可在网络中录入、修改学生成绩,老师、学生、学生家长登录系统,可查询某一个或多个班的成绩情况,自动排名,自动生成平均分、最高分、最低分;同时可比较多次考试中某个学生的一门或多门程成绩情况(可生成柱状图),学生成绩进步或退步一目了然。支持学生信息、老师信息、任课信息、成绩数据的EXCEL导入功能,支持将所有查询结果输出到EXCEL、WORD、PDF进行保存或输出到打印机,支持生成饼状图、直线图便于查询者进行分段统计查看结果。支持"两率一分"查询,支持按考号进行成绩录入。可查询学生单科及总分的年级名次、班级名次,查询结果为静态显示,大大降低用户查询对系统资源的占用,可支持数百位用户同时进行查询。支持留言,老师可对任班主任和任课的班级或对学校进行留言,学生、学生家长可对所在班级或学校进行留言,增强学校、老师、学生、学生家长之间的互动。支持学校发布最新公告及动态信息,老师、学生、学生家长登录本系统后,在第一页面即可看到此信息,方便学校信息的发布。班主任可发布班级公告,方便与本班学生/家长沟通,同时班主任可利用此功能布置每天的家庭作业;新增了学籍功能,丰富了学生信息,支持批量上传班级学生照片;新增站内信,本校所有用户均可相互点对点发送站内信,方便各用户之间的沟通;学生素质操行管理评价模块,可以用于学校对学生素质分的管理。作业管理可用于学生批量上传作业图片,教师在线批改,此功能适用于美术类培训学校。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值