本帖最后由 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 上传

输出结果与目标表格

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

  1. 2021广西灵山中学高考成绩查询,灵山中学成绩查询系统

    技校网专门为您推荐的类似问题答案 问题1: 岑溪市体育实验中学成绩查询 2010年梧州中考分数线. 2010年中考报考参照:2009年梧州中考录取分数线. 市教育局通报今年市区中考情况,确定继续根据考 ...

  2. 题9.5:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个 学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓 名、3门课程成绩、平均分数)。

    题目 本题是谭浩强<C程序设计课后习题>题9.5. 题目: 有10个学生,每个学生的数据包括学号.姓名.3门课程的成绩,从键盘输人10个 学生数据,要求输出3门课程总平均成绩,以及最高分的 ...

  3. 习题 9.5 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。

    C程序设计(第四版) 谭浩强 习题9.5 个人设计 习题 9.5 有10个学生,每个学生的数据包括学号.姓名.3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数 ...

  4. 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据 要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩)

    /*有10个学生,每个学生的数据包括学号.姓名.3门课程的成绩,从键盘输入10个学生数据 要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号.姓名.3门课程成绩)*/#include < ...

  5. 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。

    有10个学生,每个学生的数据包括学号.姓名.3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号.姓名.3门课程成绩.平均分数). 方法一: #inc ...

  6. (C语言)有10个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课程成绩,平均分数)

    有10个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课程成绩,平均分数) #define _C ...

  7. C语言:编程题(在某次比赛中,有10个评委给选手打分。现要求编程:1)输入一位选手的10个成绩;2)去掉一个最高分,一个最低分,求出平均成绩;3)输出该选手的平均成绩,保留一位小数。

    具体如下: 编程题(在某次比赛中,有10个评委给选手打分.现要求编程:1)输入一位选手的10个成绩:2)去掉一个最高分,一个最低分,求出平均成绩:3)输出该选手的平均成绩,保留一位小数.(17分) 基 ...

  8. (附源码)springboot中学成绩管理 毕业设计100854

    Springboot中学成绩管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和 ...

  9. 输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出java,c++实现

    题目: /*    输入4个同学的姓名学号,语文数学英语信息计算平均成绩,按平均成绩高低排序输出 */ 代码部分: C++实现 #include<iostream> using names ...

最新文章

  1. 安卓收取费用_作为自由职业者应收取的费用:以价值为基础的定价是否能达到炒作的目的?...
  2. python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)
  3. 常用[js,css,jquery,html]
  4. day01_Loadrunner基础流程
  5. 大话中文文本分类之前数据处理
  6. muduo之EventLoopThreadPool
  7. linux下监控用户的操作记录
  8. php curl和file get,PHP cURL与file_get_contents
  9. 红帽Openshift:入门–云中的Java EE6
  10. defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...
  11. java设置jdk环境变量
  12. 如何将cad格式转化为qt可以识别的图像_看BIM技术如何计算土方工程量
  13. 三七互娱U3D面经2021.3.31
  14. PHP是迄今为止最好的web平台
  15. linux安装中文输入法
  16. unity自带录屏UnityRecorder
  17. 139邮箱java版,139邮箱登录及发送短信
  18. PSQLException: An I/O error occurred问题排查
  19. 错误提示Incompatible file format错误原因和解决方案
  20. 好数推荐 数据堂平均音色语音库

热门文章

  1. 2016,不忘初心;2017,方得始终!
  2. 高血压,吃什么好,如何治疗
  3. 文献检索与学术写作笔记(4)
  4. 模拟-HDOJ-5336-XYZ and Drops
  5. 网络安全工程师相当于计算机等级证书中的几级?
  6. Response对象的主要属性和方法
  7. 双摄方案android,android5.1双摄像头
  8. 关于float浮点数计算精度问题的深入分析
  9. 究竟是什么在决定着我们的命运?
  10. Java SE 6 新特性: Instrumentation 新功能