IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 个人年度军事训练成绩评定python算法 -> 正文阅读

[Python知识库]个人年度军事训练成绩评定python算法

前几天终于调休了,有时间把几个月前,几个不认识的,兄弟,打电话提出的成绩评定问题给解决了,刚做完,又开始加班,不过先把文章上线再说,多谢大家点赞支持!虽然离开PLA一年多了,但一直怀念那些拔草的岁月!O(∩_∩)O哈哈~

使用Python3的numpypandas两个库完成,环境是Anaconda3-2021.05-python3.8-Windows-x86_64,强烈安利初学Python的同志安装Anaconda,Anaconda对于python初学者而言及其友好,相比单独安装python主程序,选择Anaconda可以帮助省去很多麻烦。

Anaconda里已经添加了许多常用的功能包,同时Anaconda还附带捆绑了两个非常好用的交互式代码编辑器(Spyder、Jupyter notebook),我就是使用Jupyter notebook完成的此代码开发,对数据分析工作特别友好,因为可以分块执行,同时分块显示结果,非常方便进行上下数据比对。安装方法在CSDN里有很多,基本是傻瓜式的,链接如下。
内网电脑适用的Python环境安装包Anaconda

一、我们要解决的问题

1.次要问题:专项课目

专项课目成绩分为“合格”、“不合格”,只要有一项专项课目不合格,体能综合评定为不及格。专项课目全部合格,体能综合评定等于通用课目评定

2.主要问题:个人年度军事训练成绩评定

①优秀:所有训练课目成绩均为良好以上且优秀率不低于50%,或者均为及格以且优秀率不低于70%;
②良好:所有训练课目成绩均为及格以上且优良率不低于50%;
③及格:80%以上的训练课目成绩为及格,或者50%以上的训练课目成绩为优秀;
④不及格:达不到及格标准。
本项目中,体能综合评定,加上其他课目共7项课目,按照以上标准,进行计算,得出总评为优秀、良好、及格、不及格。

二、解题思路

使用pandas将原始Excel表的相关内容读入Python,存为DataFrame数据框格式,再使用apply函数调用另外的函数,设计算法,对某列进行赋值。

三、项目实现

1.导入库

import numpy as np
import pandas as pd


2.每一段代码要点击“运行”按钮,单独运行,下面的Out就是输出。选择Excel表中有用的列导入,如要增加或删减项目,要从这里开始修改。

df=pd.read_excel("./通用训练课目考核成绩计算.xlsx", sheet_name="输入",usecols="A,B,V,W,Y,AA,AC,AE,AG,AI,AK,AM,AO,AR")
df


3.因为表头有无用数据,所以要选择有用的行,从7行开始,并重新命名列名,方便查看数据。这里要仔细核对顺序,不能命名错误。

df1=df.iloc[7:]
#df1=df1(columns=['序号','姓名','通用课目评定'])
df1.columns=['序号', '姓名', '通用课目评定', '浪木组合',
       '双杠3', '跳绳', '体能综合评定', '手枪射击',
       '通指装备操作', '专业课目1', '专业课目2', '步枪射击',
       '航空影像标图', '总评']
df1


4.专项课目成绩分为“合格”、“不合格”,只要有一项专项课目不合格,体能综合评定为不及格。专项课目全部合格,体能综合评定等于通用课目评定。

apply函数调用stamina函数,3项专项课目均==‘合格’,return 通用课目评定的成绩,只要有一项专项课目不合格,体能综合评定return ‘不及格’。如果某项没有数据,是空的,则返回空值,并打印提示语。

'''体能综合评定'''
def stamina(x,col1,col2,col3,col4):
    if x[col1]=='合格'and x[col2]=='合格' and x[col3]=='合格':
        return x[col4]  # 合格
    if x[col1]=='不合格' or x[col2]=='不合格' or x[col3]=='不合格': # 不合格
        return '不及格'
    else:
        print('体能综合评定有空,是因为某数据为空或者输入有误')
        return np.nan  # 为空或者输入有误
        
    
df1['体能综合评定']=df1.apply(stamina,axis=1,col1 ='浪木组合',col2 ='双杠3',col3 ='跳绳',col4='通用课目评定')
df1


5.最后总评。
①优秀:所有训练课目成绩均为良好以上且优秀率不低于50%,或者均为及格以且优秀率不低于70%;
②良好:所有训练课目成绩均为及格以上且优良率不低于50%;
③及格:80%以上的训练课目成绩为及格,或者50%以上的训练课目成绩为优秀;
④不及格:达不到及格标准。
用L.count()方法统计L列表中某种成绩的数量,除以总课目数N,得到比率,有一项为空则返回空值,再判断及格,逐级提高标准判断良好、优秀,最后else的是不及格,这种算法保证全包含,没有遗漏或交叉错误。逐行运算,批量解决问题!

'''总评'''
def overall_appraisal(x,col1,col2,col3,col4,col5,col6,col7):
    L=[x[col1],x[col2],x[col3],x[col4],x[col5],x[col6],x[col7]]
    #print(L)
    N=7 # 总共7项科目
    appraisal=np.nan # 总评
    if L.count(np.nan)>0:
        print('有一人科目没有成绩')
        return appraisal
    elif L.count('不及格')/N<0.2 or L.count('优秀')/N>=0.5:
        appraisal= '及格'
        if L.count('不及格')==0 and (L.count('优秀')+L.count('良好'))/N>=0.5:  # 评良好条件
            appraisal= '良好'
        if (L.count('不及格')==0 and L.count('及格')==0 and L.count('优秀')/N>=0.5)\
        or (L.count('不及格')==0 and L.count('优秀')/N>=0.7):                  # 评优秀条件
            appraisal= '优秀'
    else :
        appraisal= '不及格'
    
    return appraisal
df2=df1   
    
df2['总评']=df2.apply(overall_appraisal,axis=1,col1 ='体能综合评定',col2 ='手枪射击',col3 ='通指装备操作',col4='专业课目1',col5='专业课目2',col6='步枪射击',col7='航空影像标图')

df2

6.最后生成结果,一张新表,考核总评.xlsx。

df2.to_excel("./考核总评.xlsx", sheet_name="考核总评")

不用安装其它的IDE,只用Jupyter notebook就可以实现数据处理,将Anaconda环境安装包安装在内网电脑上即可!

个人年度军事训练成绩评定python算法-Jupyter notebook文件

个人年度军事训练成绩评定python源代码及资源

个人年度军事训练成绩评定软件win10版

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:24:53  更:2022-11-05 00:28:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:49:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码