文档章节

通过excel表格分析学生成绩

o
 osc_zoa3moe9
发布于 2019/12/08 20:49
字数 794
阅读 23
收藏 0

精选30+云产品,助力企业轻松上云!>>>

题目要求:

分析文件’课程成绩.xlsx’,至少要完成内容:分析1)每年不同班级平均成绩情况、2)不同年份总体平均成绩情况、3)不同性别学生成绩情况,并分别用合适的图表展示出三个内容的分析结果。

废话不多,直接上代码

1每年不同班级平均成绩情况:

# 导入xlrd模块
import xlrd
from pyecharts import *
page = Page() # 实例化page类,一个页面顺序熏染读个图表
#设置文件名和路径
fname = '课程成绩.xlsx'
# 打开文件
filename = xlrd.open_workbook(fname)
sheets=filename.nsheets#获得sheet的个数
sheet_list = filename.sheet_names()#sheet名字
list_x=[]
years=["2016","2017","2018"]#年份
for i in range(len(sheet_list)):
listx=[]#存放班级
dirx={}#存放班级人数
listy=[]#存放分数
diry={}#统计存放班级的分数
sheet=filename.sheets()[i]#获得当前的sheet
nrows=sheet.nrows#获得当前的sheet的行数
diravg={}#存放平均分
for j in range(1,nrows):
row_datas = sheet.row_values(j)#获得当前行的所有信息
listx.append(row_datas[0])
listy.append(row_datas[4])
for k in range(len(listx)):
if listx[k] not in dirx:
dirx[listx[k]]=1
if "".join(listy[k].split())!='缺考':
diry[listx[k]]=int(listy[k])
else:
diry[listx[k]]=0
else:
dirx[listx[k]]=dirx[listx[k]]+1
if "".join(listy[k].split())!='缺考':
diry[listx[k]]=int(listy[k])+diry[listx[k]]
for d in dirx:
if d not in diravg:
diravg[d]="%.1f"%(diry.get(d)/dirx.get(d))
keys=list(diravg.keys())
values=list(diravg.values())
bar=Bar(years[i]+"成绩分析")
bar.add(years[i],keys,values)
page.add(bar)
page.render("一个页面渲染多张图表.html")

 

2不同年份总体平均成绩情况:
import xlrd
from pyecharts import Bar
#设置文件名和路径
fname = '课程成绩.xlsx'
# 打开文件
filename = xlrd.open_workbook(fname)
sheets=filename.nsheets#获得sheet的个数
sheet_list = filename.sheet_names()#sheet名字
avg=[]
for i in range(len(sheet_list)):#获取sheet个数
sheet=filename.sheets()[i]#获取当前的sheet
nrows=sheet.nrows#获取行数
sumscore=0#总分
count=0#学生的个数
for j in range(1,nrows):
row_datas = sheet.row_values(j)#获得当前行的所有信息
if "".join(row_datas[4].split())!='缺考':
count=count+1
sumscore+=int(row_datas[4])
avg.append("%.1f"%(sumscore/count))#存放保留一位小数的成绩
#print(avg)
years=['2016','2017','2018']#设计x坐标
bar=Bar("标题:不同年份总体平均成绩情况")#设置标题
#画图
bar.add("图注:平均成绩",years,avg, is_label_show=True)
bar.render("不同年份总体平均成绩情况.html")

 

 


3不同性别学生成绩情况:
import xlrd
from pyecharts import Line,Bar,Overlap
# 设置文件名和路径
fname = '课程成绩.xlsx'
# 打开文件
filename = xlrd.open_workbook(fname)
sheets = filename.nsheets # 获得sheet的个数
sheet_list = filename.sheet_names() # sheet名字
listx = []
listy = []
for i in range(len(sheet_list)):
sheet = filename.sheets()[i]
nrows = sheet.nrows # 行数
summan = 0 # 男孩子总分
bcount = 0#男孩数量
sumgirl = 0 # 女孩子总分
gcount = 0#女孩数量
for j in range(1, nrows):
row_datas = sheet.row_values(j)
if row_datas[1] == '男':
if "".join(row_datas[4].split()) != '缺考':
bcount += 1
summan += int(row_datas[4])
else:
if "".join(row_datas[4].split()) != '缺考':
gcount += 1
sumgirl += int(row_datas[4])
listx.append("%.1f" % (summan / bcount))
listy.append("%.1f" % (sumgirl / gcount))
# 画图
years = ['2016年', '2017年', '2018年']
# 调用line方法绘制折线图
bar = Bar("2016-2018年不同性别学生成绩情况")
bar.add("男生成绩", years, listx,is_smooth=True, mark_point=['max'])
line=Line()
line.add("女生成绩", years, listy, mark_point=['min'])
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
# overlap.show_config()
overlap.render('不同性别学生成绩情况柱形图-折线图.html')

 

 

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
一位教师的诉求:excel学生成绩,能不能让学生扫二维码查询?能!

前言 分析需求: 1 - 表格:本文使用excel。wps同理。 2 - 查询:本文提供的接口,可供本地电脑使用,或部署到服务器,提供学生查询。 3 - 鉴权:默认使用学生学号作为其权限。 下面是使用界...

程序员小助手
03/16
0
0
Excel中超级好用的VLOOKUP,解决工作难题

今天给大家分享的一日一技是自己在工作中遇到的一个问题的解决方法,本来年前也遇到过,但今天又遇到还是记不清,还好记得是用VLOOKUP。 VLOOKUP函数的功能浅显的说就是:根据关键词把一个表...

黄伟呢
06/15
0
0
使用PhpSpreadsheet将Excel导入到MySQL数据库

本文以导入学生成绩表为例,给大家讲解使用PhpSpreadsheet将Excel导入的MySQL数据库。 准备 首先我们需要准备一张MySQL表,表名t_student,表结构如下: 这是一张学生成绩表,用来存储学生的...

osc_hw1efurd
2019/03/12
6
0
使用PhpSpreadsheet将数据导出为Excel文件

版权声明:转载请注明原创地址 https://blog.csdn.net/u013032788/article/details/84957509 源码请访问:https://www.erdangjiade.com/js/8619.html 我们会看到了一个学生成绩列表,现在我们...

红薯大表哥-二当家的
2019/04/10
2
0
使用PhpSpreadsheet将数据导出为Excel文件

版权声明:转载请注明原创地址 https://blog.csdn.net/u013032788/article/details/84957509 源码请访问:https://www.erdangjiade.com/js/8619.html 我们会看到了一个学生成绩列表,现在我们...

红薯大表哥-二当家的
2019/04/10
5
0

没有更多内容

加载失败,请刷新页面

加载更多

签到领金币模块

  最近做了一个签到模块的需求,主要就是签到,根据连签天数提供不同和奖励并在首页展示不同的文案。奖励分为金币和话费,话费也是通过金币的形式发放,但是有效期只有1天。 签到需求 每日...

osc_2frf70qv
3分钟前
0
0
正交多项式介绍及应用

1 正交多项式的定义 1.1 正交多项式定义 定义: 一个多项式序列 ${ {p_n}(x)} _{n = 0}^\infty $,其阶数为 \([{p_n}(x)] = n\) ,对于每一个 \(n\),这个多项式序列在开区间 \((a,b)\) 上关...

osc_mbhfa1vl
5分钟前
0
0
百万级别数据Excel导出优化

前提 这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出。 笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节...

osc_3g4j2ghj
6分钟前
0
0
Java 字符串比较、拼接问题

@ 目录 1.字符串的比较 1. 1 字符串常量池 1.2 String类型的比较方式 1.3 String的创建方式 1.3.1 直接使用“=”进行赋值 1.3.2 使用“new”关键字创建新对象 1.3.3 intern()方法返回的引用地...

osc_bjmmswh6
7分钟前
0
0
EJB到底是什么?(通俗易懂白话文)

1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务 集群"和"企业级开发"吧! 这个问题其实挺关键的,......

onedotdot
8分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部