经常需要使用光标记阅读答题卡,进行单科考试的试卷批改、合分;学期末的时候,使用机读卡进行学生填报选科走班的意向,高考进行的是六选三选科走班,还涉及到选学外语的变更、走读和住校的变更。
本来学生如果在家里的话,直接班级微信群填报表单就可以了,但是这次学生都留在了学校,所以没办法,填涂机读卡进行统计数据吧!
一共11个选项:
5-11表示11个选科走班的组合,组合选择比较多,最终学生只保留了这七种组合!
第1题:住宿请把A涂黑。
第2题:英语请把A涂黑。
第3题:俄语请把A涂黑。
第4题:日语请把A涂黑。
第5题:物化生组合请把A涂黑。
第6题:物化政组合请把A涂黑。
第7题:物化地组合请把A涂黑。
第8题:政历地组合请把A涂黑。
第9题:政历生组合请把A涂黑。
第10题:生政地组合请把A涂黑。
第11题:生历地组合请把A涂黑。
阅卡机处理完成以后是以下类似数据集(考号和姓名已经过处理):
430452111 吴顺 A...A...A..
430452104 崔珉 A..A.....A.
430542340 黄恒 B..A....A..
430517321 朱诺 B....A....A
430521328 毛宇 A...A...A..
430477321 黄文 B.A.....A..
430465865 孙运 A.A......A.
430568463 王苓 A.A.....A..
430542623 王振 ..A.......A
430465562 万杰 ....A...A..
430477639 陈鑫 A...A....A.
430414361 陈轩 B.A.....A..
430426585 李颖 AA.......A.
430398624 安慧 A...A...A..
430465689 王诺 A.A.......A
430414358 朱舟 AA......A..
430521939 黄睿 A.A.......A
430518250 张雨 A....A...A.
430542338 姚豪 A..A....A..
430542646 姜舰 A.A......A.
430521454 高泰 B...A...A..
根据每行的选项数据,添加上每个人的走读、选科、外语信息!
import pandas as pd
import numpy as np
print(pd.__version__)
url = '读卡结果.xlsx'
data = pd.read_excel(url, sheet_name = 'Sheet1',engine = 'openpyxl')
查看一下行列数据大小:
print('行的数量是:', len(data.index))
print('行的数量是:', len(data))
print('列的数量是:', len(data.columns))
使用循环遍历以下dataframe数据,对每行数据进行一个简单的处理和修改:
for index,row in data.iterrows():
#print(index,row)
# 判断走读
if row['an'][0]=='A':
data.iloc[index,3] = '住校'
# 判断外语
if row['an'][1]=="A":
data.iloc[index,5] = '英语'
elif row['an'][2]=="A":
data.iloc[index,5] = "俄语"
elif row['an'][3]=="A":
data.iloc[index,5] = "日语"
# 判断选科
if row['an'][4]=="A":
data.iloc[index,4] = '物化生'
elif row['an'][5]=="A":
data.iloc[index,4] = '物化政'
elif row['an'][6]=="A":
data.iloc[index,4] = '物化地'
elif row['an'][7]=="A":
data.iloc[index,4] = '政历地'
elif row['an'][8]=="A":
data.iloc[index,4] = '政历生'
elif row['an'][9]=="A":
data.iloc[index,4] = '生政地'
elif row['an'][10]=="A":
data.iloc[index,4] = '生历地'
查看一下处理结果:
data.head(5)
当然了,为了分班的需要,还需要进行一个简单的统计人数:
t = data.groupby(['lang','xk'])['name'].count()
将处理过的df保存到Excel文件:
# 写入文件
with pd.ExcelWriter("统计结果.xlsx", mode='a+', engine='openpyxl') as writer:
data.to_excel(writer, sheet_name="选科涂卡结果", index=True)
t.to_excel(writer, sheet_name="选科涂卡统计结果", index=True)
writer.save()
完工了!