基于Python的高校自主招生数据处理工作应用的探索研究

作者: 章雁 韦乐 赵健杰

基于Python的高校自主招生数据处理工作应用的探索研究0

摘要:为提高高校自主招生数据处理工作的效率并对数据进行进一步挖掘,本文提出应在报名、考试、录取各个阶段,结合高校自主招生工作中的实际应用场景,充分利用Python语言丰富的生态系统,实现数据整理、分析、可视化等操作,进一步提高数据处理的效率和准确性,同时通过可视化交互界面的设计及实现,有效降低编程门槛,大大提高非技术人员的工作效率。

关键词:Python;高校自主招生;数据处理

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2024)10-0103-06

引言

1.研究背景和意义

随着高等教育的快速发展和参加艺术类等自主招生考试的学生人数的增加,考试数据量也呈指数级增长。处理考试数据的传统模式是根据相关工作人员的职业技能使用Excel电子表格或数据库等方法,前一种方法耗时高、劳动密集,且容易出现人为错误,后一种方法对工作人员的职业技能要求较高。对于部分具有自主招生权能自行组织专业校考的学校,因受招生办公室规模的限制,工作人员往往要身兼数职,既要有组织、管理、协调各部门协力完成上万人规模的考试的管理能力,又要具备处理、分析大量的考生考试数据的专业技能。因此,他们迫切需要一种高效、准确的数据处理方法来减轻工作压力。

Python作为一种强大而通用的编程语言,广泛用于数据处理、分析等操作任务。Python提供了丰富的数据分析库生态系统,如Pandas、Numpy和Matplotlib,这些库为数据处理、分析和可视化提供了强大的工具,能够高效、自动化地处理大量数据[1-3],使Python成为高校招生工作中处理、分析考试数据的有力助手。针对考试数据的处理,Python可以显著提高数据处理的效率和准确性。在针对考生、考试成绩等数据的分析时,Python的统计分析和可视化功能有助于从考生及考试数据中识别某种模式、趋势和规律,这对高校招生过程中的决策很有价值。

2.研究目的和方法

本研究的基本目标是基于原Excel的传统招生数据处理方法,进行对应功能的Python程序的实现,并比较各自优缺点,同时通过实际案例研究探索考生考试数据分析的方式方法。本研究的目的是探索Python在考试数据和高校招生工作中的应用,为使用Python作为处理考试数据和优化艺术类高校招生工作流程的有效工具提供有价值的见解和建议。

为了实现这一研究目标,笔者首先学习高校招生工作有关Python和Excel处理考试数据的现有经验,并根据以往工作流程列举常用数据处理工作内容。其次,结合实际案例或示例对近年工作过程中开发、编写的部分Python程序进行基本实现方法解释,并比较使用Python和Excel处理对应过程的优势和局限性来说明这两种方法之间的差异和各自的优势。对比分析Python和Excel在数据操作、分析和可视化等方面的能力和功能,以及它们在处理大量数据方面的易用性、可扩展性和效率等。再次,阐述在考试及招生工作中使用Python的提高工作效率的有效数据,以评估与Excel相比使用Python的影响和好处。此外,还将进行实际案例分析,使用Python处理分析考试招生工作的示例,如学生招生记录、考试成绩和其他相关数据。案例分析将展示如何使用Python来简化和优化数据处理工作流程,提高数据准确性和效率,并在高校招生过程中实现数据驱动决策。

招生工作数据处理内容

以某经教育部批准的独立设置的本科艺术院校的本科招生工作为例,报考学校的考生除了要参加国家统一组织的高考以外,还要参加由学校自行组织的专业校考。现阶段在学校招生考试过程中,在各个阶段涉及需要处理的考生及考试数据的内容大致有如下:

①校考报名阶段收集的考生数据,以及相应生成的考场、考务数据。这部分数据目前主要由学校指定的考试报名平台系统负责收集,数据最终以数据库表或Excel表的形式导出。

②考试阶段产生的各种数据,如试卷数字化、评分多阶段评分控制数,评分考试成绩数据,以及据此产生的专业成绩合格名单。目前,试卷数字化、电子阅卷的系统以数据库形式为主,成绩导出后的排序等处理以Excel为主。

③录取阶段,通过国家录取专用系统的院校端(以下简称“录取系统院校端”)等途径,获得各省考生高考志愿填报数据、高考成绩数据、报考志愿数据、最终录取成绩名单数据,以及对应的考生通讯录等数据。[4-5]“录取系统院校端”的各省数据,根据所在省招考政策不同分成了2012版和2020版两个版本,来源数据以数据库格式DBF文件为主,目前处理手段有导入本地数据库或转成Excel后进行进一步处理等多种形式。

④录取后的数据分析阶段,根据考生从报名、校考初复试、高考、录取各个阶段的数据分析,并且结合考生各省艺术类统考成绩的对比,分析考生情况。数据分析和招生结果评价的主要目的是完善和改革招生制度,以及为有效地开展招生工作提供实证性依据。[6]

各阶段数据处理工作内容

1.报名阶段数据

报名阶段的数据,涉及的内容主要是考生个人信息及报考志愿等,由考生在报名平台系统自行填写提交,因此在数据格式和空值等问题上经过平台的校验功能可以保证基本不存在问题。主要的数据处理问题一般有三个:一是考生个人信息填写错误,如身份证号、高考考生编号、联系电话等。二是报名数据中一些暂时无法发现的错误信息,如高考考生编号是否正确、考生是否达到各省统考合格线从而具备校考试资格等。上述两种数据问题的处理、纠正,主要通过各报名、高考数据平台的数据校验功能来解决。三是报考考生数据量较大,这是本地化数据处理中的问题。目前,笔者利用Python的os库和Pandas库实现对指定文件夹下所有Excel表格文件进行自动合并。os库是Python的标准库,提供了与文件相关的操作,如创建和删除文件、查找、重命名等操作。Pandas库则是Python中的一个非常有用的数据处理库,它提供了高性能、易于使用的数据结构和数据分析工具,主要用于数据挖掘和数据分析,也是科学计算的重要工具之一,非常切合招生数据处理的需求,也是在后续各个应用场景中必不可少的模块。首先,利用os.listdir函数遍历指定文件夹下所有文件,利用os.path.splitext函数识别文件名后缀,然后将所有文件类型是xls或xlsx文件的文件名和在前面指定的文件夹路径利用os.path,join函数进行拼接,形成完整的文件路径后存入列表,再用Pandas库的pd.read_excel函数将列表中的文件逐个读取后在DataFrame结构中拼接数据,最终将拼接后的结果通过pd.to_excel函数以Excel表格格式将一张汇总数据表保存到指定位置。

使用这个工具完成Excel表格的拼接相较于手工方法,最大的优势就是高效,原来需要10分钟左右的工作几秒钟就可以完成,并且Pandas合并的表格只保留唯一的标题行,省去了人工复制过程中,识别、去除重复标题行的工作,当然,这个多表格数据汇总自动保留一条标题行的一个重要前提就是每个单张工作表的标题是一致的。在后续的工作中,为了进一步提高工作效率以及分享给其他不懂编程的同事使用,笔者又在原来功能的基础上,利用Python的标准GUI库tkinter,制作了一个简单的交互界面(如图1),可以通过交互界面快速选择要合并的文件夹,从而避免每次都去修改代码来指定合并文件夹路径的操作。

2.考试阶段数据

考试阶段的数据处理的主要对象就是各个阶段的考试成绩数据。根据学校目前的招生政策,专业校考分为线上初试和线下复试两个阶段。各个阶段的考试试卷通过电子阅卷或者人工阅卷等不同形式由学校组织的专业评委进行多轮评分,在确定分数后,每张试卷的成绩录入都要由两名录分工作人员独立操作完成,并相互校验在确保无误后,作为原始数据存入学校校考数据库中。

针对考试成绩原始数据的进一步处理,按学校招生工作流程规范,要求两名招生工作人员以各自的方法通过对考试成绩按招生政策、考试科目等规则的解读,独立对原始数据进行整理、统计、排序,拟定各阶段入围名单,之后两组数据结果做比较验证,完全一致后可进入下一阶段。

除了直接使用数据库进行操作外,笔者主要采用的方法是将原始数据库数据导出成Excel表格,在Excel中进行数据预处理、求和、排序,然后以准考证号为依据和考生报名数据表进行匹配,最终得到考生考试数据结果。在这个过程中,数据处理除了最基本的排序、筛选外,主要依靠Excel的函数功能,这对使用者操作Excel软件的熟练度和应用技能有了一定的要求。例如,在一张全体考生考试成绩数据表中要按考生报考专业,将每个专业的考生按总分高低排序,在SQL数据库中可以利用row_number函数中的“PARTITION BY”参数等方法实现按专业进行专业内排序并添加专业排名序号,而Excel尽管可以通过多条件排序实现表格顺序的调整,但排名序号的添加则需要利用SUMPRODUCT函数才能实现自动地以专业分组按成绩排序;多表格数据之间的匹配,在SQL里只需要用到最基本的多表连接查询功能,到了Excel表格里,就需要使用者能够熟练掌握VLOOKUP函数或者INDEX+MATCH函数组合实现数据匹配,在利用VLOOKUP函数进行匹配时,还要熟练掌握多条件合并查询和逆向查找等技巧,使用Excel最大的问题在于,当要处理的Excel数据表样本数达到一定数量,如上万条后,整表的大量实时函数计算会导致每次数据调整都会占用大量的系统CPU资源,甚至系统卡顿。

为了解决上述问题,笔者结合实际运用场景,用Python进行相应功能程序的开发。对于数据分组排序的问题,在Python的Pandas库中,可以利用DataFrame结构的函数group进行分组,将一个大的DataFrame拆解成若干小的DataFrame[7-8],然后利用rank对每小组数据进行排序,利用一行代码:

df['专业排名'] = df.groupby([‘专业’]).rank(ascending=False, method='max')[‘总分]

这样,就可以非常高效地实现按专业分组,组内按总分从高到低排序,并将排名数字作为新值添加在每一行数据末尾“专业排名”列,在考虑同分并列排名的同时,也兼顾统计了该分数的总人数,方便最终控制入围人数。相较于Excel函数的处理效率,Python针对大量数据处理的优势非常明显,利用交互界面实现选择参数(如图2),也免去了每次修改代码的烦琐,进一步提高了效率。

而跨表格之间的匹配,可以使用Pandas库的merge函数对数据进行类似于Excel里VLOOKUP函数的针对数据样本的某个唯一的索引值进行匹配[9],在Excel中设计VLOOKUP函数,往往要求索引值在查找区域的第一列,或者为了解决索引值不在首列而要逆向查找的需求,必须利用VLOOKUP和IF等函数嵌套组合成数组函数。而在Python的操作中则只需利用如下一行代码:

dataMerge = pd.merge(data1, data2, on=‘准考证号’, how='outer')

对导入的两张数据,指定各自用于相互匹配的列就可以实现自动匹配。而对于在Excel中更复杂的多条件组合匹配,在Python的merge函数中,也仅需要增加相应的参数列即可实现两表的多参数匹配。代码如下所示:

dataMerge = pd.merge(data1, data2, on=[‘身份证号’, ‘专业编号’],how= 'outer')

针对这个功能,利用交互界面(如图3、图4)进行操作,不仅可以进一步提高效率,而且降低了使用的技术门槛。

除了对考试成绩数据的处理过程外,两名招生工作人员在各自完成数据处理后,还需要对两组独立处理的数据进行比对。因为每个工作人员处理数据的工具、使用习惯、思路,包括数据列名称、顺序等都不尽相同,所以笔者将两组数据放到同一张Excel工作表内,按相同的排序原则进行排序预处理,然后再由人工选择比对列,对应列之间用IF函数判断是否一致,这种方法灵活、直观,出现偏差也便于筛选、核查。除此之外,笔者也利用Python实现了两张工作表数据的自动化比对,并自动筛选显示不一致的数据,方法是在将要比较的两组数据预处理后,先利用Pandas的数据拼接函数append将要比较的两张表进行数据拼接,然后利用重复数据删除函数drop_duplicates,将拼接后重复的数据即两条完全一致的内容删除,这样只有数据有误差的结果会被保留下来,校验结果可以保存成Excel结果输出,也可以通过交互化的界面实时展示便于检查(如上页图5)。

经典小说推荐

杂志订阅