Python+Excel数据分析实战:军事体能考核成绩评定(一)项目概况

一、技术背景

Excel(Microsoft office)是现在最常用的办公软件,主要涉及电子表格制作、数据处理、报表输出展示以及更高端的还有金融建模等;我们知道,在需要批处理多个Excel工作表以及工作簿的时候,需要用到一个自动化的利器:VBA。

如果处理相对简单以及数据量不大,建议使用VBA,如果考虑产品版本控制,数据量过大,数据统计和数据分析这些问题,以及考虑到学习的性价比和技术的价值最大化,学习一门编程语言,是非常有意义的。

那么有哪些编程语言也可以操作Excel呢?

(一)Go语言 : Excelize

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。

Excelize是国人编写的基于Go语言的Excel库,中文文档相对来说更为齐全,同时Go语言是编译型语言,编译后只有1个运行文件,可以方便的拷贝到其他电脑使用,同时不用安装额外的运行时,Go语言还有一个优势就是,速度真的非常快。

缺点:Go语言本身的错误处理真的是太迷了,可以看到每次对象赋值都要声明err,然后判断err != nil;同时在数据结构上,Go语言在对二维表(行列)操作时,也会有一点绕。

结论:Excelize可以说是国内最好的第三方Excel操作库,虽然上手会有一点难度,但是在功能的丰富性和较好的运行性能,还是值得一试的。

(二)Python : Pandas

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算),用于数据挖掘和数据分析。 Pandas中有DataFrame和Series两个数据类型,就好像Excel的工作表和数据列(转置后也可以看作:数据行),这就和Excel天生契合。

缺点:Pandas在数据处理上是非常方便的,但在文档外操作,如批量修改工作簿名称,就需要引入os库;同时如果已有Excel文档是带格式(颜色填充、字体设置、单元格合并等),写入Excel的时候就会破坏掉原来的格式。同时,Python作为脚本语言,如果到其他电脑运行,需要额外安装运行环境。

结论:如果纯粹的处理大批量数据(十万级以上),pandas自带各类聚合函数,让你处理起来得心应手;同时Pandas可以结合matplotlib等第三方绘图库,可以方便的可视化数据,如果你的数据本身可以离开Excel,如数据是从数据库导入Excel,那么也可以直接使用Pandas导入数据库数据,然后在Pandas上进行分析处理;Pandas底层使用numpy,在矩阵运算中具有非常高的性能。

(三)Python : Openpyxl

openpyxl是一个用于读取/写入Excel2007及以上版本(即xlsx格式)文件的Python库,不论是Excel内的特殊格式,还是单元格处理,都提供了相应的函数,与Excelize近乎相当。

缺点:Openpyxl不像pandas那样,底层使用numpy,所以在运行速度上,其实要比Excelize和pandas要慢(但是还是要比VBA要快一点);同时也是因为Python作为脚本语言,如果要放到其他电脑运行,需要安装相应的运行环境。

结论:相对来说,Openpyxl与VBA的应用场景重合度会更高一点,处理的思路都是比较相近的;Python在语法上,比VBA要丰富和方便的多,如果需要切换,学习曲线会比较平滑。

(四)Python : Xlwings

xlwings也是Python操作Excel的第三方库,很大程度上就是补全Pandas的缺点,可以在方便的处理文档本身,如修改工作表名称,将Pandas的数据处理结果调用到Excel原来的文件等。

缺点:在功能上,如文档格式化等相较Excelize和Openpyxl来说,还是有不少功能没有实现。

结论:xlwings更多的是可以作为Pandas的扩展,学习曲线和Openpyxl也比较相似。

其他

其他的还有C#的EPPlus/NPOI,Java的POI,easyExcel;JavaScript的exceljs等,也是不错的Excel操作库,但学习曲线更为陡峭,应用场景也更为复杂。如果有一天,厌倦了VBA,但是又不想使用Go和Python,也是可以去尝试一下的。

本项目实战中,我选择了Python的Openpyxl模块,有一个免费的B站学习资料推荐给大家,我就是学完这个教程后,开发了这个项目。讲解得细致易懂,还可以作为自己的代码参考,感谢UP主路过嘅蒙面超V

(基础+巩固)小白零基础开始用Python处理Excel数据

二、项目任务

军事体能考核成绩评定是什么玩意呢?

每个人的体能测试有单杠、仰卧起坐、30米x2蛇形跑、3000米跑四个项目,外加体型是否合格(BMI身体质量指数或者PBF体脂百分比),每项原始测试数据,通过不同项目各自规定的标准转换成100分制的分数,最终汇总得出个人的评定成绩,而且能够批量计算。

考虑到大家日常工作中,最常用的就是用Excel登统计原始成绩,所以本项目采用Python+Excel的设计,直接对Excel登统计的所有原始成绩进行处理,得到换算结果,并汇总个人成绩评定。

Excel登统计的原始成绩如下图:


输入原始数据举例

计算结果如下图:


计算结果举例

三、项目难点

分性别:“男、女”,不同性别的评分标准不同,甚至考核项目不同;
分年龄:“24岁以下、25~27等”,不同年龄段,评分标准不同;
分类别:“三类、二类、一类”,不同类别,评分标准不同;
分海拔:“2000米以下,2001~2100等”,不同海拔,评分标准不同;
评分标准不规律,不连续,是离散型的设置,查询数据有难度。

以最复杂的高原男子3000米标准为例,海拔2001~2100米为一个标准,不同年龄段标准不同,24岁以下,11分42秒为100分,12分07秒为95分,12分22秒为90分,分数都是相差5分,但时间间隔却是不同的25秒和15秒,不规律。而2101~2200米的标准又有变化,因为海拔2101~3000米时,每增加100米,标准递增8秒。但是原始成绩却是时间段内连续的,比如11分43秒,11分44秒等。


高原男子3000米标准

其它的考核项目标准相对简单一点,在后面的文章中具体分析。

四、项目环境

Win7 64位深度操作系统,正式优化版202003:


Microsoft Office专业增强版2016,还没激活:


Python开发工具为PyCharm 2020.1.3社区版本:


PyCharm的项目解释器为Python3.8,安装openpyxl、pyinstaller等包:


项目解释器设置

后面的文章中,将一步步详细介绍整个开发过程,直至项目完成。目前项目已经完成,在试用当中,敬请期待!

系统运行演示

原创不易,有偿下载,请多支持:
军事体能考核成绩评定系统下载

军事体能考核成绩评定系统全套Python源码下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容