Python(Windows + Anaconda + VSCode)+Streamlit 简单学生成绩统计可视化看板(数据可视化)
一、简介使用 Python、Pandas、Streamlit、Plotly 实现简单学生成绩统计静态数据看板。 通过代码自动生成模拟学生成绩数据集完成数据清洗、指标统计、多类型图表可视化最终在浏览器中展示完整可视化看板二、工程结构l/ ├─ main.py # 主程序源码 └─ score_data.csv # 程序运行后自动生成的成绩数据集三、简单需求生成模拟学生成绩数据集导出 CSV 文件数据预处理去除空值、过滤分数异常数据核心指标卡片展示总人数、全体平均分、及格率、最高总分可视化图表柱状图各班平均分对比、饼图成绩等级占比、折线图各科平均分趋势展示原始学生成绩明细表格页面排版布局整合所有模块形成完整静态看板四、完整源码兼容旧版 Streamlit已移除 use_container_width# -*- coding: utf-8 -*- 数据可视化实验学生成绩统计看板 兼容低版本streamlit import streamlit as st import pandas as pd import plotly.express as px import numpy as np # 设置页面整体配置 st.set_page_config(page_title学生成绩统计看板, layoutwide) # 生成模拟学生成绩数据 np.random.seed(42) student_count 120 classes [一班, 二班, 三班, 四班] subjects [语文, 数学, 英语] data_list [] for i in range(student_count): cls np.random.choice(classes) chinese np.clip(np.random.normal(75, 12), 0, 100) math np.clip(np.random.normal(72, 15), 0, 100) english np.clip(np.random.normal(70, 13), 0, 100) total chinese math english avg total / 3 # 成绩等级划分 if avg 85: level 优秀 elif avg 70: level 良好 elif avg 60: level 及格 else: level 不及格 data_list.append({ 学号: fS{1001i}, 班级: cls, 语文: round(chinese,1), 数学: round(math,1), 英语: round(english,1), 总分: round(total,1), 平均分: round(avg,1), 等级: level }) df_raw pd.DataFrame(data_list) # 保存csv文件 df_raw.to_csv(score_data.csv, indexFalse, encodingutf-8-sig) # 数据预处理 df df_raw.copy() df df.dropna() df df[(df[语文].between(0,100)) (df[数学].between(0,100)) (df[英语].between(0,100))] # 页面标题 st.markdown(# 学生成绩统计数据看板) st.markdown(---) # ① 核心指标卡片区域 col1, col2, col3, col4 st.columns(4) total_student len(df) avg_score round(df[平均分].mean(),2) pass_count len(df[df[平均分]60]) pass_rate round(pass_count / total_student *100,2) max_total df[总分].max() with col1: st.metric(label总学生人数, valuef{total_student} 人) with col2: st.metric(label全体平均分, valuef{avg_score} 分) with col3: st.metric(label整体及格率, valuef{pass_rate} %) with col4: st.metric(label最高总分, valuef{max_total} 分) st.markdown(---) # ② 柱状图 饼图 col_left, col_right st.columns(2) class_avg df.groupby(班级)[平均分].mean().reset_index() fig_bar px.bar(class_avg, x班级, y平均分, title各班级平均分数对比, color班级, text_auto.2f) fig_bar.update_layout(height380) level_cnt df[等级].value_counts().reset_index() level_cnt.columns [等级,人数] fig_pie px.pie(level_cnt, values人数, names等级, title学生成绩等级占比分布, hole0.2) fig_pie.update_layout(height380) with col_left: st.plotly_chart(fig_bar, use_container_widthTrue) with col_right: st.plotly_chart(fig_pie, use_container_widthTrue) st.markdown(---) # ③ 各科平均分折线图 subject_mean pd.DataFrame({ 科目:[语文,数学,英语], 平均分:[df[语文].mean(), df[数学].mean(), df[英语].mean()] }) fig_line px.line(subject_mean, x科目, y平均分, markersTrue, title各科平均分数趋势, text平均分) fig_line.update_layout(height380) st.plotly_chart(fig_line, use_container_widthTrue) st.markdown(---) # ④ 明细数据表已删除use_container_width兼容旧版本 st.subheader(学生成绩明细数据表) st.dataframe(df) st.markdown(### 实验完成提示) st.text(f数据集已保存至 score_data.csv有效数据行数{len(df)})五、环境部署与运行步骤Windows Anaconda VSCode1. 准备工作在桌面新建项目文件夹 VSCode 打开该文件夹新建main.py粘贴代码保存。2. 打开 VSCode 内置终端安装依赖# 解决GBK编码问题 $env:PYTHONIOENCODINGutf-8 # 安装依赖包 pip install streamlit pandas plotly3. 启动看板streamlit run main.py终端输出Local URL例如: http://localhost:8501浏览器打开链接即可查看可视化看板注一定要终端输入streamlit run main.py命令启动六、效果展示指标卡片展示总人数、全体平均分、及格率、最高总分柱状图4 个班级平均分横向对比直观比较各班教学水平环形饼图优秀 / 良好 / 及格 / 不及格四个等级人数占比折线图语文、数学、英语三科平均分变化趋势明细表格展示全部学生学号、班级、各科分数、总分、平均分、等级原始数据程序自动生成score_data.csv成绩文件保存到项目目录七、分析数据层面利用 numpy 生成模拟样本pandas 完成数据清洗剔除空值和非法分数可视化层面Streamlit 快速搭建 Web 页面Plotly 生成交互式图表支持鼠标悬浮查看数值局限本版本为静态看板无筛选、联动、预警等功能八、可能的踩坑记录遇到的问题pip 安装时报 GBK 编码错误旧版 pip 在 Windows GBK 控制台遇到 emoji 字符报错通过设置环境变量PYTHONIOENCODINGutf-8并升级 pip 解决。st.dataframe 报参数 use_container_width 不存在低版本 Streamlit 不支持use_container_width参数删除该参数代码直接兼容旧环境。Streamlit 首次运行弹出邮箱输入 直接回车留空跳过不影响程序运行九、总结借助 Streamlit 快速开发 Web 数据看板无需前端 JS、HTML 知识仅使用 Python 就完成数据生成、清洗、多维度可视化。看板将学生成绩数据转化为直观图表能够快速定位班级、科目成绩情况

相关新闻

第2章:网络攻击原理与常用方法

第2章:网络攻击原理与常用方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 5:08:33 阅读更多 →
考研互助系统毕设全解析:需求、技术、代码与答辩

考研互助系统毕设全解析:需求、技术、代码与答辩

每年带到毕业设计的学生一多,就会发现一个现象:十个做Java毕设的人,八个做商城,六个做管理系统,剩下几个做“某某信息平台”。但“考研互助系统”这类题目,听着热闹,真正做出来的同学却不多。原…

2026/10/11 5:08:33 阅读更多 →
Python+Spring Boot+Vue3全栈实战:中药材商城库存管理系统设计与实现

Python+Spring Boot+Vue3全栈实战:中药材商城库存管理系统设计与实现

做了三个月的全栈项目,从一脸懵到系统上线,期间改了好几版库存算法,最后沉淀出一套能跑通完整业务链路的方案。这篇就以“python基于Spring Boot的中药材网上商城库存管理系统vue3”这个毕设/课设级项目为例,把技术选型思路、数据…

2026/10/11 5:08:33 阅读更多 →

最新新闻

无人驾驶中的边缘计算:从云端下沉到路边的实时决策

无人驾驶中的边缘计算:从云端下沉到路边的实时决策

这几年一直泡在自动驾驶相关项目里,圈子里的共识慢慢收敛到一件事上:单车智能做得再极致,车还是看不见墙后面的东西。边缘计算下沉到路边,说白了就是想办法让路本身变成车的“眼睛”和“大脑”,把实时决策的时延压缩到…

2026/10/11 8:12:18 阅读更多 →
2345加速浏览器v10.0.0.19291安装包静默部署与版本锁定实战

2345加速浏览器v10.0.0.19291安装包静默部署与版本锁定实战

简介:2345加速浏览器 v10.0.0.19291 是一款基于 Chromium 深度定制的网页浏览工具,采用 Chromium 与 IE 双内核并支持智能切换,可匹配不同网页的渲染需求,面向日常上网、办公查阅与网页兼容性测试等场景。软件主打极速与安全&…

2026/10/11 8:12:18 阅读更多 →
06-22-A-RabbitMQ集群运维与迁移实战详解

06-22-A-RabbitMQ集群运维与迁移实战详解

06-22-A-RabbitMQ集群运维与迁移实战详解 ️ 关键词:集群搭建 节点维护 队列迁移 Shovel Federation 蓝绿升级 定义导出导入 版本升级 参数管理 备份恢复 故障排查工具箱 📌 导读:19 篇讲了高可用与调优的"配置面"&#…

2026/10/11 8:12:18 阅读更多 →
Python项目CI/CD流水线实战:从依赖管理到自动化发布

Python项目CI/CD流水线实战:从依赖管理到自动化发布

很多Python项目团队有个通病:代码写完本地一跑就完事,测试敲一遍就推了,等合并到主分支、上线出故障才开始手忙脚乱。我在过去的实战里,给不同类型Python项目——从依赖复杂的算法服务到快速迭代的Web后端——都配过一套持续集成/…

2026/10/11 8:12:17 阅读更多 →
从unittest到Pytest:自动化测试框架迁移实战与最佳实践

从unittest到Pytest:自动化测试框架迁移实战与最佳实践

写测试代码这件事,我折腾了快十年,从最早手写脚本到unittest再到Pytest,最大的感受就一句话:测试代码写得好不好,不取决于你写了多少用例,而取决于整套测试跑起来是否“舒坦”。Pytest就是那种能让你从“应…

2026/10/11 8:12:17 阅读更多 →
门窗隔声实测数据解析:从玻璃配置到密封系统的完整指南

门窗隔声实测数据解析:从玻璃配置到密封系统的完整指南

1. 别只盯着中空玻璃,门窗隔声是个系统工程做门窗声学这行久了,常有人拿着中空玻璃的配置单来问我:“我家装的是双层中空玻璃,怎么楼下广场舞的音乐还是听得一清二楚?”这个问题几乎每次交流都会遇到,也恰恰…

2026/10/11 8:11:17 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →