在进行数据分析之前,会有许多的成绩表,格式也颇为混乱,为了研究方便,可以将学生成绩统一到一张表上。我们用的学生各个时期的数据表格式如下图:
且有许多的这样的表格,以便分析:
而原始的学生成绩表如下:(excel文件,扩展名为xls,且不带宏,免得后期处理麻烦)
将各个成绩的xls文件,加到这个原始表中,且要将成绩为0的行删掉,这样的目的是减少无效数据的干扰,另一种处理方式是取平均值,这里因为主要是针对个体数据进行分析,所以还是删掉。需要用到的库:numpy,pandas,xlwt,xlrd等。代码及解释如下:
# -*- coding: utf-8 -*-
import os
import pandas as pd
excelPath = '15李蕾成绩' #构建所有文件路径,所有原始成绩文件均在这里
theTablePath = '成绩测试李蕾15入学.xls' #数据总表模板文件,所有数据都往这里添加
name = '姓名' #以姓名为唯一标识(索引),这里其实最好是用学号,因为学号唯一,姓名可能不唯一
def toAll(bigPath,smallPath,name):
aTable = pd.DataFrame(pd.read_excel(bigPath)) #将数据总表模板 加载
bTable = pd.DataFrame(pd.read_excel(smallPath,sheet_name=0)) #将要加入的小表格加载
if name in bTable.columns: #如果存在姓名列,再加入,因为mac下有可能有.DS文件
print('存在列 姓名')
result = pd.merge(aTable, bTable, on=[name], how='left') #按着姓名对应的方式 将小表 加入 总表,但以总表为准
result.dropna(axis=0, how='any', inplace=True) #值为0则删除行 axis=1则是删除列,any是只要有空值就删除,而all则是全部为空再删除,True是在原数据集上操作,False是返回新的数据集
result.to_excel(theTablePath) #将新的pandas数据集,返回为待分析的Excel文件
print(aTable.shape) #用于监控是否正常加入
print(result.shape)
return
for filename in os.listdir(excelPath): #读取文件名称
targetPath = excelPath + '/'+ filename #构造文件夹内每一个文件的绝对路径,mac下是/,win下注意是\
print(targetPath)
toAll(theTablePath,targetPath,name) #执行合并命令
执行命令之后,最终得到的数据集,如下图所示:
接下来,首先要明确现在主流的成绩分析方法,并归纳总结。然后指出其不科学或不实用不合理的地方,并加以分析。最后发表改进的分析方法,并阐明原理,和分析结果。将两种分析方法进行对比(表格),并阐明新的分析方法的合理性,最终得出翻转课堂对于学生成绩影响的结论。