一、设计思路
1.数据分析与可视化:代码旨在分析学生出勤情况以及不同学生群体的数据,并通过可视化手段将分析结果直观地呈现出来,以便于理解和决策。
2.关注重点群体:通过选择感兴趣的学生群体(如经历无家可归的学生、残障学生等),关注这些群体的出勤情况和其他指标变化,以便于针对性地改进教育政策和措施。
3.比较不同学年和地区的情况:通过对比不同学年和地区的学生总数、出勤率等指标的变化,发现趋势和规律,为教育管理者提供数据支持,指导资源的合理分配和政策的调整。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
数据集如下:
各个字段表示的意义:
- District code:地区代码,表示学校所在地区的唯一代码。
- District name:地区名称,表示学校所在地区的名称。
- Category:类别,表示学生群体的类别,如无家可归、残障等。
- Student group:学生群体,表示具体的学生群体,如所有学生、经历无家可归的学生等。
- Reporting period:报告期间,表示数据报告的时间段。
- Date update:日期更新,表示数据更新的日期。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
二、功能展示
- 柱状图:前10个地区的学生人数排名
- 这张柱状图展示了2021-2022学年前10个地区的学生人数排名。每根柱子代表一个地区,柱子的高度表示该地区的学生总数。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
2.饼状图:不同类别学生的分布比例
- 这张饼状图展示了2021-2022学年不同类别学生的分布比例。每个扇形代表一个特定的学生群体,扇形的大小表示该群体学生人数在总体学生人数中的比例。
3.折线图:选定学生群体的出勤率趋势
- 这张折线图展示了过去三个学年(2019-2020、2020-2021和2021-2022)三个选定学生群体的出勤率趋势:“所有学生”、“经历无家可归的学生”和“残疾学生”。每条线代表一个学生群体在三年间的平均出勤率。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
4. 双轴折线图:康涅狄格州学生人数和出勤率趋势
- 这张图使用双y轴表示了康涅狄格州的两个不同指标:学生人数和出勤率。蓝色线代表了三个学年内学生人数的趋势,而红色线代表了出勤率的趋势。x轴表示学年。
- 散点图与趋势线:学生人数与出勤率的关系
- 这张散点图展示了2021-2022学年学生人数与出勤率之间的关系。每个点代表一个地区,横坐标表示学生人数,纵坐标表示出勤率。红色虚线表示拟合到数据点的趋势线,表示学生人数和出勤率之间的一般趋势。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
6.饼状图:2021-2022学年不同学生群体的比例
- 这张饼状图展示了2021-2022学年不同学生群体在总体学生人数中的比例。每个扇形代表一个特定的学生群体,扇形的大小表示该群体学生人数在总体学生人数中的比例。
7.箱线图:不同学年学生群体出勤率的分布
- 这张箱线图展示了不同学年(2019-2020、2020-2021和2021-2022)学生群体出勤率的分布。每个箱子表示一个学年的出勤率的四分位数范围(IQR),中间的线表示中位数。箱须延伸到第一四分位数和第三四分位数之外1.5倍IQR的最小和最大值。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
- 雷达图:选定学生群体的表现比较
- 这张雷达图比较了不同学生群体在三个指标上的表现:总学生人数、出勤率和与前一学年相比学生人数的百分比变化。雷达图的每条辐射线代表一个指标,连接辐射线的线形成了每个学生群体的多边形。每个多边形围成的区域表示相应学生群体在三个指标上的相对表现。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
三、代码分析
- 数据准备:
- 首先,通过
pandas
库读取了一个名为School_Attendance_by_Student_Group.csv
的CSV文件,将其存储在名为data
的DataFrame中。 - 数据进行了空值处理,使用0填充了缺失值。
import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] data = pd.read_csv('Schxxxxxxxxxx') print(data.columns) data.fillna(0, inplace=True) top_districts = data.groupby('xxxxx')['xxxxnt - xxxx'].sum().sort_values(ascending=False).head(10) # 剩余代码略.... # 剩余代码略....
2.学生人数前10名地区的柱状图:
- 通过
groupby
函数,按地区分组,并对学生人数进行求和。 - 选择了前10个地区,并绘制了柱状图展示学生数量排名前10的地区。
# 绘制柱状图:展示学生数量排名前10的地区 plt.figure(figsize=(12, 8)) # 部分代码略.... plt.ylabel('学生人数') plt.xticks(rotation=45) plt.tight_layout() plt.show()
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
3.不同类别学生比例的饼状图:
- 通过groupby函数,按学生类别分组,并对学生数量进行求和。
- 绘制了饼状图展示不同类别学生的比例分布。
4.不同学生群体出勤率变化的折线图:
- 选择了几个感兴趣的学生群体,分别为所有学生、经历无家可归的学生和残障学生。
- 绘制了每个群体在过去三个学年出勤率的变化情况的折线图。
5.特定地区学生总数和出勤率的变化趋势:
- 选择了特定地区(Connecticut)的数据。
- 绘制了该地区学生总数和出勤率的变化趋势图,其中学生总数使用蓝色圆圈标记,出勤率使用红色星号标记。
6.学生总数与出勤率的散点图及趋势线:
- 绘制了2021-2022学年学生总数与出勤率的散点图,同时添加了趋势线。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈
7.2021-2022学年不同学生群体的比例分布的饼状图:
- 计算了2021-2022学年不同学生群体的学生数量。
- 绘制了饼状图展示不同学生群体的比例分布。
# 部分代码略.... student_counts = data.groupby('Student group')['2021-2022 student count - year to date'].sum() # 绘制饼状图 plt.figure(figsize=(10, 8)) # 部分代码略.... plt.title('2021-2022 学年不同学生群体的比例分布') plt.ylabel('') # 不显示y轴标签 plt.show()
8.不同学年学生群体出勤率的箱线图:
- 准备了不同学年学生群体出勤率的数据,并绘制了箱线图展示其分布情况。
9.学生数量变化百分比的雷达图:
- 计算了学生数量的年度变化百分比,选择了几个感兴趣的学生群体。
- 绘制了雷达图展示这些学生群体在不同方面的表现情况。
通过这些可视化和分析,可以更好地了解学生出勤情况以及不同学生群体之间的差异和趋势。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 考勤可视化 ” 获取。👈👈👈