普通高中选课数据分析和可视化

Python算法之旅

共 2389字,需浏览 5分钟

 ·

2021-05-22 21:50

前段时间一直没有更新公众号,不是因为懒,而是一直在憋一个大招。

加入“边楚女特级教师工作站”以后,边老师给我们小组分配的任务是为必修一《数据与计算》第四章准备教学资料,我负责“编程处理数据”这一块。Python语言我接触挺长一段时间了,之前主要研究海龟绘图,使用Python编程进行数据分析和可视化对我来说也是一个新的挑战,numpy、pandas和matplotlib模块都要一点一点学起来。

项目式学习不是空喊口号,做项目确实是学习编程的最佳途径,我自己就是这样一步步成长起来的。为了更好地掌握使用Python编程进行数据分析和可视化的方法,我精心挑选了3个难度适中的项目(主要是已有大量数据,不需要花大力气在采集数据上),从零开始,实践了数据分析和可视化的过程,在踩坑填坑的过程中,一点点提高技术水平,对pandas和matplotlib模块有了较为深刻的理解。

现在我以项目分析报告的形式,把自己做的一些东西拿出来与大家分享,希望各位老师多多批评指正。

“普通高中选课数据分析和可视化”项目分析报告


1.项目目标
通过项目设计,初步掌握数据采集、数据整理、数据分析和数据可视化的方法,领悟数据的价值、数据分析和数据可视化的意义。学会使用Python语言编写程序,解决实际问题,掌握程序调试与运行的方法。通过小组合作完成项目活动,提升团队协作、与人沟通分享的能力。
2项目准备阶段
2.1 背景
浙江省高考总成绩包含必考科目成绩(语数外3门)和选考科目成绩(7选3)。其中选考科目为物理、化学、生物、政治、历史、地理、技术(含信息技术和通用技术),选考科目在首次报考该科目时确定,每科最多报考2次。学生可以根据兴趣、性格、能力和价值观确定自己的意向专业范围,从7门科目中选择3门作为高考选考科目。
为全面了解某市普高学生选考科目情况,分析每所学校各科目选考的总人数、全市各科选考总人数及其占比,并进一步分析各选课组合的总人数和占比情况,从而帮助学校教务处进行分班管理并引导学生合理选课。
2.2 项目内容
根据浙江教育出版社提供的信息技术学科资源,我们下载了某市高中选课数据csv文件(如下图所示),要求使用Python编程对该数据进行分析并可视化。
项目基本要求:
(1)从csv文件中读取数据,统计分析7门选考科目中各科目选考的总人数及比例,并将结果保存到Excel文件中
(2)绘制各校各科选考人数柱状图、堆积柱状图、饼图、雷达图和散点图
(3)从csv文件中读取数据,统计分析各校73选课组合总人数及比例,并做数据可视化分析(绘制柱状图、堆积柱状图和饼图)
(4)从csv文件中读取数据,生成各校报名Excel文件;读取各校原始excel报名文件,合成学生选课组合信息,并按照组班人数要求,生成7选3固定班级和生成7选2固定班级名单。
2.3 项目功能模块
项目功能模块图如下图所示:
1 项目功能模块图
项目包含了3个主要部分:单科数据分析和可视化处理、选课组合数据分析和可视化处理、生成各校固定班级名册。相应的具体实现过程,在之后的篇幅中详细介绍。
3项目实施过程
   本项目数据量较大,功能较为复杂,根据程序设计的模块化思想,我们将程序进行功能的模块化,将每个功能模块设置成单个文件,以便查询和管理。以下是各个功能模块的核心代码分析和输出截图:
3.1  7选3单科数据处理
我们引用了第三方库pandascsv文件中读取某市16所普通高中选课汇总数据。pandaspython的一个数据分析包,它基于numpy模块,提供了大量处理数据的函数和方法,是专用于解决数据分析任务的强大工具。
我们使用语句importpandas as pd引入库,然后打开"xk73.csv"文件,读取某市普通高中选课汇总数据,存储到DataFrame对象df中;然后按学校分组计数,并对分组计数结果进行合计和百分比计算,增加“合计”和“百分比”行;最后把处理结果存储到"学校人数统计.xlsx"文件中。
2 各校各科选考人数统计图
核心代码(完整代码详见源代码文件“73单科数据处理.py”):
#读数据到 Pandas的DataFrame 结构中df = pd.read_csv("xk73.csv",sep=',',header='infer',encoding='utf-8')#按学校分组计数   sc = df.groupby('学校代码',as_index=False).count()# 对分组计数结果进行合计,合计结果转换为DataFrame结构并转置为行df_sum = pd.DataFrame(data=sc.sum()).Tdf_sum['学校代码'] = '合计'result = sc.append(df_sum)


说明:因为本项目内容较多,故写成系列文章分成多次分享,请大家稍安勿躁哦。

需要本文word版或者相关源代码的,可以加入“Python算法之旅”知识星球参与讨论和下载文件,Python算法之旅”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。


我们专注Python算法,感兴趣就一起来!



相关优秀文章:

阅读代码和写更好的代码

最有效的学习方式

斌哥教你自制多功能单词本

斌哥教你自制象棋打谱软件

斌哥教你自制围棋打谱软件

斌哥教你自制思维导图生成器改进版

斌哥教你绘制文件夹目录树(一)

斌哥教你绘制文件夹目录树(二)

斌哥教你绘制文件夹目录树(三)

浏览 101
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报