2020年第十五届竞赛数据上报竞赛数据给高等教学学会统计

 

01 相关的通知


 

02 信息处理


1.原始资料文件

资料所在目录:
E:\SmartCar\2020比赛\Document\HighEducation\Division Result
E:\SmartCar\2020比赛\Document\HighEducation\Final Result
E:\SmartCar\2020比赛\Document\HighEducation\输出表格-高教学会 : 包括有:竞赛报名模板、竞赛结果模板两个文件。
E:\SmartCar\2020比赛\Document\HighEducation\用户参赛信息表20201124.xlsx
总决赛获奖信息:
D:\Temp\Final Result\Excel\安徽.xls
D:\Temp\Final Result\Excel\创意.xls
D:\Temp\Final Result\Excel\东北.xls
D:\Temp\Final Result\Excel\华北.xls
D:\Temp\Final Result\Excel\华东.xls
D:\Temp\Final Result\Excel\华南.xlsx
D:\Temp\Final Result\Excel\山东.xls
D:\Temp\Final Result\Excel\西部.xls
D:\Temp\Final Result\Excel\浙江.xlsx

2.竞赛结果表格

(1)填表说明:
1.、奖项各竞赛自行设定,可含单项奖或专项奖。
2.、组织奖、优秀指导教师奖等可另行设定。
3.、组别:指研究生、本科、高职高专、中职、教师。
4、类别:有些竞赛有分类,如:广告设计竞赛的平面类、动画类等。
5、部分竞赛有作品编号、作品名称
(2)EXCEL表格栏目:
A. 作品编号; B. 作品名称; C. 学校名称; D. 学生1姓名; E. 学生2姓名
F. 学生3姓名; G. 学生4姓名; H. 学生5姓名; I. 学生6姓名; J. 学生7姓名
K. 学生8姓名; L. 队名; M. 专业名称; N. 学院名称; O. 指导老师1;
P. 指导老师2; Q. 奖项名称; R. 竞赛组别; S. 竞赛类别; T. 备注

3.总决赛表格→竞赛结果

(1) 编程分析

总决赛获奖信息表格结构如下:

▲ 总决赛表格结构

▲ 总决赛表格结构

按照以下结构将总决赛获奖信息转换成“竞赛结果表格”

No总决赛表格竞赛结果表格备注
1学校名称N.学院名称
2队伍名称L.队名
3组别B.竞赛类别
4奖项Q.奖项名称全国总决赛+奖项
5指导教师1O.指导教师1
6指导教师2P.指导教师2
7学生n学生n姓名n=1,2,3,4,5
(2) 生成程序

参见附件中的“1 .生成全国总决赛结果”。

4.用户参赛信息表格→竞赛报名模板

报名模板:
1.参赛作品 2.参赛人 3.手机号 4.学号
5.身份证号 6.学校名称 7.学院名称 8.指导老师
9.队名 10.专业名称 11.入学年份 12.学生类别
13.竞赛类别 14.竞赛组别
参赛用户信息:
1.学生姓名 2.学生系别 3.学生学号 4.学生班级 5.学生年龄
6.学生专业 7.学生电话 8.学生邮箱 9.队伍名称 10.赛区
11.省市 12.学校 13.组别 14.教师姓名1 15.教师性别1
16.教师系别1 17.教师职称1 18.教师电话1 19.教师邮箱1 20.教师通讯地址1
21.教师姓名2 22.教师性别2 23.教师系别2 24.教师职称2 25.教师电话2
26.教师邮箱2 27.教师通讯地址2 28.教师姓名3 29.教师性别3 30.教师系别3
31.教师职称3 32.教师电话3 33.教师邮箱3 34.教师通讯地址3 35.教师姓名4
36.教师性别4 37.教师系别4 38.教师职称4 39.教师电话4 40.教师邮箱4
41.教师通讯地址4

按照以下映射进行转换:

No参赛用于信息竞赛报名表格备注
1学生姓名参赛人
2学生学号学号
3学生专业专业名称
4学校学校名称
5组别竞赛组别→参赛作品
6教师姓名1指导教师
7队伍名称队名
8学生电话手机号
9学生年龄入学年份年龄+n
10赛区竞赛类别

▲ 全国高校大学生竞赛质量提升工作推进会

▲ 全国高校大学生竞赛质量提升工作推进会

 

▌附件:


1.生成全国总决赛结果

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# EXCELSUB.PY                  -- by Dr. ZhuoQing 2021-01-14
#
# Note:
#============================================================

from head import *
import pandas as pd

#------------------------------------------------------------
teamfile = r'D:\Temp\输出表格-高教学会\竞赛报名模板.xlsx'
resultfile = r'D:\Temp\输出表格-高教学会\竞赛结果模版.xlsx'

finalresult = ('安徽', '山东', '浙江', '东北',
               '华北', '华东', '华南', '西部', '创意')
finaldir = r'D:\Temp\Final Result\Excel'

divisiondir = r'D:\Temp\Division Result'
division = ('安徽', '山东', '浙江', '东北',
           '华北', '华东', '华南', '西部', '创意')

divisionresult = r'D:\Temp\输出表格-高教学会\竞赛结果模版 - 分赛区成绩.xlsx'

totalappendnum = 0

#------------------------------------------------------------
teamorigin = r'D:\Temp\用户参赛信息表20201124.xlsx'

#------------------------------------------------------------
def showexcel(filename):
    excelfile = pd.read_excel(filename)

    printf([id for id,c in excelfile.items()])

    listvalue = excelfile.values.tolist()
    for id,l in enumerate(listvalue):
        printff(id, l)

#------------------------------------------------------------
def clearexcel(filename):
    excelfile = pd.read_excel(filename)

    excelfile = excelfile[0:0]
    excelfile.to_excel(filename, sheet_name='Sheet1', index=False)

#------------------------------------------------------------
def appendexcel(filename, dict):
    excelfile = pd.read_excel(filename)
    row = len(list(excelfile.items())[0][1])

    #--------------------------------------------------------

    for col in dict:
        excelfile[col] = excelfile[col].astype(str)
        excelfile.at[row, col] = dict[col]

    #--------------------------------------------------------
    excelfile.to_excel(filename, sheet_name='Sheet1', index=False)

#------------------------------------------------------------
def appendexcellist(filename, dictlist):
    excelfile = pd.read_excel(filename)
    rowoffset = len(list(excelfile.items())[0][1])

    #--------------------------------------------------------

    for id,dict in enumerate(dictlist):
        row = id + rowoffset
        for col in dict:
            excelfile[col] = excelfile[col].astype(str)
            excelfile.at[row, col] = dict[col]

        if id % 500 == 0:
            printf("Append excel %d/%d"%(id, len(dictlist)))

    #--------------------------------------------------------
    excelfile.to_excel(filename, sheet_name='Sheet1', index=False)

#------------------------------------------------------------
def isname(string):
    if type(string) != str: return False
    if len(string) < 2:     return False
    if string == 'nan':     return False
    if string == '-':       return False
    return True

#------------------------------------------------------------
def appendfile2result(fname):
    f1 = fname + '.xls'
    f2 = fname + '.xlsx'
    filename = f1
    if not os.path.isfile(filename):
        filename = f2

    if not os.path.isfile(filename):
        printf('ERROR: %s does not exist!'%fname)
        return

    #--------------------------------------------------------
    excelfile = pd.read_excel(filename)
    rownum = len(list(excelfile.items())[0][1])

    for row in range(rownum):
        school = excelfile.at[row, '学校名称']

        if type(school) != str: continue
        if len(school) == 0: continue

        adddict = {}
        adddict['学院名称'] = school
        adddict['队名']     = excelfile.at[row, '队伍名称']
        adddict['竞赛类别'] = excelfile.at[row, '组别']
        adddict['奖项名称'] = '全国总决' + excelfile.at[row, '奖项']

        for i in range(2):
            name = excelfile.at[row, '指导教师%d'%(i+1)]

            if isname(name):
                adddict['指导老师%d'%(i+1)] = name

        for i in range(5):
            name = excelfile.at[row, '学生%d'%(i+1)]
            if isname(name):
                adddict['学生%d姓名'%(i+1)] = name

        showstr = str(adddict).replace('\u4dae', '')
        printf(showstr)

        #----------------------------------------------------

        global totalappendnum
        totalappendnum += 1
        adddict['作品编号'] = '%04d'%totalappendnum
        appendexcel(resultfile, adddict)

#------------------------------------------------------------
def teamorigin2file(filename):

    if not os.path.isfile(filename):
        printf('ERROR: %s does not exist!'%fname)
        return

    #--------------------------------------------------------
    excelfile = pd.read_excel(filename)
    rownum = len(list(excelfile.items())[0][1])

    group2group = {
                '学生姓名' : '参赛人',
                '学生学号' : '学号',
                '学生专业' : '专业名称',
                '学校' : '学校名称',
                '组别' : '竞赛组别',
                '教师姓名1' : '指导老师',
                '队伍名称' : '队名',
                '学生电话' : '手机号',
                '学生年龄' : '入学年份',
                '赛区' : '竞赛类别'
              }

    adddictlist = []

    printf("Begin to generate add diction:")
    for row in range(rownum):
        adddict = {}
        for gg in group2group:
            adddict[group2group[gg]] = excelfile.at[row, gg]

        adddict['参赛作品'] = excelfile.at[row, '组别']
        adddictlist.append(adddict)

        if row % 1000 == 0:
            printff('Add dict: %d/%d'%(row, rownum))

    printf("Begin to add to excel:")
    appendexcellist(teamfile, adddictlist)

#------------------------------------------------------------
def division2result(outfile, divisionlist):
    dictlist = []

    for dl in divisionlist:
        dlfile = os.path.join(divisiondir, '2020%s奖项.xlsx'%dl)
        if not os.path.isfile(dlfile):
            dlfile = os.path.join(divisiondir, '2020%s奖项.xls'%dl)

        if not os.path.isfile(dlfile):
            printf("Can not file the file :%s"%dlfile)
            continue

        printf("Load file :%s"%dlfile)
        excelfile = pd.read_excel(dlfile)

        rownum = len(list(excelfile.items())[0][1])
        for row in range(rownum):
            school = excelfile.at[row, '学校名称']

            if type(school) != str: continue
            if len(school) == 0: continue

            adddict = {}
            adddict['学院名称'] = school
            adddict['队名']     = excelfile.at[row, '队伍名称']
            adddict['竞赛类别'] = excelfile.at[row, '组别']
            adddict['奖项名称'] = '分赛区' + str(excelfile.at[row, '奖项'])

            for i in range(2):
                name = excelfile.at[row, '指导教师%d'%(i+1)]

                if isname(name):
                    adddict['指导老师%d'%(i+1)] = name

            for i in range(5):
                name = excelfile.at[row, '学生%d'%(i+1)]
                if isname(name):
                    adddict['学生%d姓名'%(i+1)] = name

            dictlist.append(adddict)

    #--------------------------------------------------------
    appendexcellist(outfile, dictlist)

#------------------------------------------------------------
if __name__ == "__main__":

    #--------------------------------------------------------
    printf("Clear division result.")
    clearexcel(divisionresult)
    division2result(divisionresult, division)

    #--------------------------------------------------------
    '''
    printf("Clear origin file.")
    clearexcel(teamfile)
    teamorigin2file(teamorigin)

    '''
    #--------------------------------------------------------

    '''
    clearexcel(resultfile)
    for ff in finalresult:
        fname = os.path.join(finaldir, ff)

        printf(fname)
        appendfile2result(fname)
    '''
    #--------------------------------------------------------

    #--------------------------------------------------------

    printf('\a')

#------------------------------------------------------------
#        END OF FILE : EXCELSUB.PY
#============================================================
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值