pythonpandasampampquot数智教育ampampquot数据可视化分析
数据介绍:
数据来源于由宁波教育局与阿里云计算有限公司主办,宁波效实中学承办的"数智教育"数据可视化创新大赛数据集。
https://www.heywhale.com/mw/dataset/5eb3f5f9366f4d002d76e70f1_teacher.csv:包含了近五年各班各学科的教师信息 term:学期 cla_id:班级ID cla_Name:班级名 gra_Name:年级名 sub_id:学科ID sub_Name:学科名 bas_id:教师id bas_Name:教师名 2_studentinfo.csv:包含了当前在校学生详细信息 bf_StudentID,学生ID bf_Name,学生姓名 bf_sex,性别 bf_nation,民族 bf_BornDate,出生日期(年) cla_Name,班级名(与teacher.csv的cla_name对应) bf_NativePlace,家庭住址(省市或省) Bf_ResidenceType,家庭类型 bf_policy,政治面貌 cla_id,班级ID cla_term,班级学期 bf_zhusu,是否住校 bf_leaveSchool,是否退学 bf_qinshihao,宿舍号 3_kaoqin.csv kaoqin_id,考勤ID qj_term,学期 DataDateTime,时间和日期 ControllerID,对应考勤类型表里的ControllerID controler_name,考勤名称 control_task_order_id,对应考勤类型表里的control_task_order_id bf_studentID,学生ID,对应学生信息表 bf_Name,学生姓名 cla_Name,班级名 bf_classid班级ID 4_kaoqintype.csv:考勤类型 controler_id,考勤类型id controler_name,考勤类型名称 control_task_order_id,考勤事件id control_task_name:考勤事件名 5_chengji.csv:学生成绩 mes_TestID,考试id exam_number,考试编码 exam_numname,考试编码名称 mes_sub_id,考试学科id mes_sub_name,考试学科名 exam_term,考试学期 exam_type,考试类型(对应考试类型表) exam_sdate,考试开始时间 mes_StudentID,学生id mes_Score,考试成绩(-1为作弊,-2为缺考,-3为免考) mes_Z_Score,换算成Z-score(Z-score、T-score、等第 是一种学生成绩评价方式,可以参考网络百科) mes_T_Score,换算成T-score mes_dengdi:换算成等第(参见:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12281978.0.0.65ca76d8kaGnld&postId=47777) 6_exam_type.csv:考试类型 EXAM_KIND_ID:考试类型id EXAM_KIND_NAME:考试类型名称 7_consumption.csv:本学年学生消费信息 DealTime,消费时间 MonDeal,消费金额 bf_studentID:对应学生信息表studentid AccName,姓名 PerSex,性别 特别说明: 1.由于人为登记等不可避免原因,某些字段可能存在缺失或者异常值 2.从班级名可以看出,从2017年开始学校陆续启用了新校区,2018年新校区统一命名为型为"白-高二(01)"和"东-高二(01)"的班级名 3.考勤类型中的"校服[移动考勤]"指的是没穿校服3.考勤类型中的"校服[移动考勤]"指的是没穿校服#导入用到的库 import pandas as pd import matplotlib.pyplot as plt
1.各科成绩分布图
结果分析:
1.体育,美术,音乐,通用技术成绩很稳定均匀,与之有关的影响因素较少,在于学生的个人选择及天赋,可不必投入较多资源;
2.该学校的数学,英语,语文平均成绩明显较其他科目成绩好,说明该校的主要的教师资源,人力资源主要集中在三大学科上;
代码:#读取成绩文件 chengji_data=pd.read_csv("5_chengji.csv") #mes_Score,考试成绩(-1为作弊,-2为缺考,-3为免考) 删除以上数据 chengji_data1=chengji_data[chengji_data["mes_Score"]>0] #查看每列空值 chengji_data1.isna().sum() #按课程名分组 chengji_group=chengji_data1.groupby("mes_sub_name") #按学年分组 chengji_group_year=chengji_data1.groupby("exam_term") #建立空表 data=pd.DataFrame({"data":[]}) boxes=[] boxes_name=[] #遍历按课程名分组的所有课程名及成绩 for k,g in chengji_group: if k!="data": boxes.append(g["mes_Score"]) boxes_name.append(k) #全部学年集合 chengji_year=[] for k1,g1 in chengji_group_year: chengji_year.append(k1)
#定义图颜色 color = dict(boxes="DarkGreen", whiskers="DarkOrange", medians="DarkBlue", caps="Gray") plt.rcParams["font.sans-serif"]=["SimHei"]##中文乱码问题! plt.rcParams["axes.unicode_minus"]=False#横坐标负号显示问题! plt.figure(figsize=(10,5)) #图片大小为10*5 plt.boxplot(boxes,whis=2,showmeans=True,showbox = True,labels=boxes_name,showfliers=False) plt.grid(axis="y",alpha=0.4)#绘制 plt.show()
2.历年成绩对比曲线
结果分析:
1.从图上可以看出所有成绩从2013-2015都比较平稳,许多课程从2015年开始成绩开始呈下降趋势;
2.可能跟近年来一直要求的素质教育有关,出题的方式及难度都有问题,以及老师的过往经验的不适用性;
代码:#新建模板以分组日期集合为index data1=pd.DataFrame({"date":chengji_year}) data1.set_index("date", inplace=True)#设置日期为index for k,g in chengji_group:#遍历课程分组 print(k) chengji_group_year=g.groupby("exam_term")#按学年分组取年和平均成绩写入新表 for k_y,g_y in chengji_group_year: print(k_y,g_y) data1.loc[k_y,k]=g_y["mes_Score"].mean()
plt.figure(figsize=(12,5)) #图片大小为12*5 plt.plot(data1,ms=5,marker=".",label=data1.columns) plt.grid(alpha=0.4)#绘制 plt.legend(loc="lower right")#显示图例 plt.show()
3.考试类型与成绩对比分析
结果分析:
1.考试类型与各科成绩波动较大,可能存在明显的难易程度不同;
2.学校的期中期末考试成绩一般分布可以,其他类型考试波动很大;
代码:#读取考试类型表 kaoshi_lx=pd.read_csv("6_exam_type.csv") kaoshi_lx.set_index("EXAM_KIND_ID", inplace=True)#设置类型为index
#按课程分组遍历 for k,g in chengji_group: #print(k) #按考试类型分组 chengji_group_year=g.groupby("exam_type") #取考试类型和平均成绩 for k_y,g_y in chengji_group_year: #print(k_y,g_y) kaoshi_lx.loc[k_y,k]=g_y["mes_Score"].mean() kaoshi_lx
4.政治面貌/民族占比#读取学生信息表 zhengzhi=pd.read_csv("2_student_info.csv") #按政治面貌分组 zhengzhi_group=zhengzhi.groupby("bf_policy").count() #按民族分组 minzu_group=zhengzhi.groupby("bf_nation").count() zhengzhi_group["bf_StudentID"].plot.pie() minzu_group["bf_StudentID"].plot.pie()
5.学生消费信息分布
结果分析:
1.图中可以看出各学生总消费以及每次消费金额都成明显的正态分布,说明该学校整体消费趋势正常
2.该数据统计了6个月(2018.7-2019.1)六个月的消费情况,平均来说该学校学生每月平均消费在[250,500];
3.每次消费金额在7-10之间,但存在可能购买文具等小物件上,这里不做详细的分类讨论;
代码#读取消费信息表 sale=pd.read_csv("7_consumption.csv") sale["DealTime"]=pd.to_datetime(sale["DealTime"])#转换日期格式 ym_mean = sale.groupby([sale.DealTime.dt.year, sale.DealTime.dt.month]).sum() #按月求和 ym_mean["MonDeal"]=abs(ym_mean["MonDeal"]) ym_mean["MonDeal"].plot.bar() #学生消费top sale_top= sale.groupby("bf_StudentID").sum() #按学生求和 sale_top.sort_values(by=["MonDeal"],inplace=True) sale_top["MonDeal"]=abs(sale_top["MonDeal"]) sale_top["MonDeal"].head(20).plot.bar()
6.学生考勤分析
代码#读取考勤表 kaoqin_df=pd.read_csv("3_kaoqin.csv") #使用正则表达式清洗班级名 for i in range(len(kaoqin_df)): str1=re.sub(u"(.*?)|白-|[A-Z]|东-|[0-9]", "",kaoqin_df.loc[i,"cla_Name"]) str1=str1.replace(" ","") kaoqin_df.loc[i,"cla_Name1"]=str1 #取所有考勤汇总 kaoqin_type=kaoqin_df.groupby(["controler_name"]).count() kaoqin_type.index kaoqin_moban=pd.DataFrame({"type":kaoqin_type.index}) kaoqin_moban.set_index("type", inplace=True)#设置类型为index kaoqin_moban#按新的班级名分组 kaoqin_gruop=kaoqin_df.groupby(["cla_Name1"]) #遍历分组 for k,g in kaoqin_gruop: print(k) #按考勤类型汇总 tmp=g.groupby(["controler_name"]).count() for j1 in tmp.index: #print(tmp.loc[j1,"kaoqing_id"]) #根据考勤类型写入新表 kaoqin_moban.loc[j1,k]=tmp.loc[j1,"kaoqing_id"] kaoqin_moban
labels = list(kaoqin_moban.columns) first = list(kaoqin_moban["高一"]) second = list(kaoqin_moban["高二"]) third = list(kaoqin_moban["高三"]) data = [first, second, third] x = range(0,8) width = 0.35 # 将bottom_y元素都初始化为0 bottom_y = [0] * 8 # 计算每组柱子的总和,为计算百分比做准备 sums = [sum(i) for i in zip(first, second, third)] #print(first,labels,sums) plt.figure(figsize=(12,5)) for i in data: # 计算每个柱子的高度,即百分比 y = [a/b for a, b in zip(i, sums)] #print(x,y) plt.bar(x, y, width, bottom=bottom_y) # 计算bottom参数的位置 bottom_y = [(a+b) for a, b in zip(y, bottom_y)] plt.legend(labels,loc="right") plt.xticks(x, kaoqin_moban.index) plt.title("考勤分析") plt.show()
labels = list(kaoqin_moban1.index) da1 = list(kaoqin_moban1["操场考勤机"]) da2 = list(kaoqin_moban1["早退[移动考勤机]"]) da3 = list(kaoqin_moban1["校徽_早退"]) da4 = list(kaoqin_moban1["校服[移动考勤机]"]) da5 = list(kaoqin_moban1["离校[移动考勤机]"]) da6 = list(kaoqin_moban1["进校[移动考勤机]"]) da7 = list(kaoqin_moban1["迟到[移动考勤机]"]) da8 = list(kaoqin_moban1["迟到_晚到"]) data = [da1,da2,da3,da4,da5,da6,da7,da8] x = range(0,3) width = 0.35 # 将bottom_y元素都初始化为0 bottom_y = [0] * 3 # 计算每组柱子的总和,为计算百分比做准备 sums = [sum(i) for i in zip(da1,da2,da3,da4,da5,da6,da7,da8)] #print(first,labels,sums) plt.figure(figsize=(8,6)) for i in data: # 计算每个柱子的高度,即百分比 y = [a/b for a, b in zip(i, sums)] #print(x,y) plt.bar(x, y, width, bottom=bottom_y) # 计算bottom参数的位置 bottom_y = [(a+b) for a, b in zip(y, bottom_y)] plt.legend( kaoqin_moban1.columns,loc="upper center") plt.xticks(x, kaoqin_moban1.index) plt.title("考勤分析") plt.show()
安静的运动大师玲珑SPORTMASTERe轮胎使用体验玲珑轮胎最近推出了新能源车型的轮胎SPORTMASTERe系列。我看到后一开始也感到疑惑,难道传统燃油车和新能源车使用的轮胎也有什么不同吗?的确是这样。新能源车用轮胎到底有哪些特点
试驾测评小鹏G3i小鹏第一台改款的车,硬实力拔高了吗?15万预算,你们最先想到的是什么车型?我想,一定离不开像轩逸卡罗拉思域这些传统的合资小家轿吧,但又不想选一些烂大街的车型,还有什么可以选择呢?恰逢近日,说哥试驾了一款2021款小鹏
不要去!这种网红打卡地可能有去无回废弃矿坑竟然成了网红打卡地?近日,湖南长沙一个废弃矿坑内,因有积水潭矿洞等,突然在某短视频平台上走红,还被称为长沙的宝藏地方长沙纳木措,吸引了很多游人前往打卡。但也有网友指出这周围
终于坐上了飞机(出关日志之十)2022。12。2星期五晴昨天中午,我们按要求到航站楼旁的核酸检测点做了单管测试。下午,我们到航站楼里转了转,弄清了无障碍楼梯的位置,以便能顺利地把箱包推到三楼的行李托运处。然后,
万宁港北内海的和乐蟹中国地道风物在海南万宁,红色六连岭之南,绿色东山岭往东,有一块海南省最大的澙湖港北内海。这块面积约50平方千米的水域,就像是大自然赋予万宁的一个神奇口袋。这里,滋养着4个镇共10多
总要和最爱的人去一趟长白山吧!雪落头!到白头南方人似乎对雪有着格外的追求,南方想看一次雪娜就一定要去一趟位于吉林省东南部,东南与朝鲜相邻,有着千古积雪,万年松直上人间第一峰的长白山吧!去长白山带给你的浪漫,都说登一座山,有一
联想手机新品曝光,紫光展锐联发科芯片加持一直以来,除了电脑领域的产品外,联想也在进行手机设备的更新迭代。今年下半年,全新拯救者Y70手机正式发布。现在,随着时间的推进,关于联想其他手机新品的消息也在大量出现。据悉,被称为
同版本仅差100块,vivoX90和vivoX80相比,谁更值得入手?vivoX90系列于2022年11月22号正式亮相,第一批购买X80系列的用户还没用到一年时间,甚至有很大一部分用户才刚刚入手了X80系列的某个机型,vivoX90系列的问世又在暗
SpringBootVue(八)Vue前端框架快速上手前端环境的准备编码工具VSCodehttpscode。visualstudio。com依赖管理NPM项目构建VueCliVue框架介绍学习Vue前端框架需要有html,css,js
Docker系列教程3常用操作命令上次分享了Docker的一些入门知识点和docker的安装,这次主要讲docker的常用操作命令。Docker使用镜像常用命令1。获取镜像dockerpullubuntu14。04
榜单11月新机谁更流畅?vivoX90排名第三第一OPPO近日,鲁大师发布了一份11月安卓新机流畅榜。(11月新机流畅榜,顾名思义就是仅统计11月当月发布的新机,不包含之前发布的机型,数据来源鲁大师App的11月实验室测试分数及用户测试分
古代牛地位到底有多高?为何多朝下令宰杀者死读者朋友们,在阅读文章之前,辛苦您动动小手点击一下关注,我们将持续更新,既方便您后续的阅读,又可以与志同道合的读友进行讨论,感谢您的支持。引言中国以农立国,人们赖耕谋活,牛作为六畜
新春走基层丨行包货里品年味儿大河网讯迎着点点星光,在郑州车站的站台上,一辆辆小黄车来来回回地穿梭在各个股道间,一车车货物有序地运往全国各个城市。负责行李货物运输工作的郑州车站行包车间王君和往常一样,跟随着一列
16岁多多指导同学排舞台剧,拿话筒超干练,展现领导才能侧颜好俊黄磊的大女儿多多今年16岁,还有十几天将迎来17岁生日,这个年纪正在上高中,很多同龄人的生活只有看书学习拼高考,但是多多的课余生活看起来比大学生活还要丰富多彩。多多平日里经常会分享
主持人念错名字王宝强嘴瓢沈腾临场改词,再看春晚的5个失误娱兔迎春文康简编辑鲍雯雯春节联欢晚会是全球华人都会关注的文艺盛宴,每年的大年夜,今晚都会以直播的形式为观众送上一出又一出精彩的节目。现场直播的形式有利也有弊好处一切都有变化的可能,
泽连斯基称拒绝与无名小卒普京谈判,克宫回击他早已不配(观察者网讯)当地时间1月26日,乌克兰总统泽连斯基接受英国天空新闻采访时表示,他对与俄罗斯总统普京举行和谈不感兴趣。谈及原因时,他声称普京说一套做一套,同时将普京称作生活在信息泡
西峡法院灵活执行纾企困以人为本保民生大河网南阳薛小磊通讯员王晶雅大河网讯每个案件就是一个营商环境。近日,西峡法院在执行一起借款合同纠纷案件中,通过灵活采取冻结查封措施,不但为企业发展纾困解难,还保障了近200名农民工
娘家人,暖!新春已至,岁寒情深。为充分发挥妇联组织联系服务妇女群众的桥梁纽带作用,助力做好农村疫情防控工作,新疆维吾尔自治区各级妇联组织广泛发动社会各界力量,积极筹措防疫物资和慰问品,开展把爱
话题50万存款征收利息税,高了还是低了?许多人有一个误区,以为自己赚得少就不用交税了,那么我建议这部分人应该好好去了解一下各路税收的名头以及综合税率的概念。很多人都不知道,自2013年后,我们的综合税率就一直稳居蓝星综合
公募密集调仓,重点加仓五大板块!特别是这只明星股获疯抢,今年基金投资思路在这里四季报已悉数出炉,公募基金加减仓了哪些板块,重点看好哪些个股?统计显示,2022年第四季度,公募基金主动增持最多的是医药传媒计算机非银金融建材等板块,其中,医药板块表现最为突出,是
新春走基层丨民警老朱的最后一个春运岗红网时刻新闻记者郭薇灿肖依诺综合报道长沙火车站人来人往。两鬓有些泛白的民警老朱身着黑色警服,右臂套上红色的值班袖箍,穿梭在人群中。他时不时停下脚步,将耳朵凑向一个个前来咨询的旅客。
新春走基层养老院里的幼儿园园长新春走基层原标题养老院里的幼儿园园长工人日报客户端记者赖志凯通讯员宫静梁院长,今天咱们玩什么游戏啊?工作人员去拿道具了,您先休息一会,游戏马上开始。这是北京市西城区广外怡乐园养老院