写在前面

小班的高数段考成绩出来了,惨不忍睹,于是我想可视化看看到底有多惨…

代码有点凌乱,因为直接在Jupyter上想到啥就瞎敲的啥,以下也是ipynb文件直接转换过来的,(抽空整理了一下,前面的两大点 后面就不用了)

转换代码(在cmd里执行就可):

jupyter nbconvert --to markdown 成绩分析.ipynb

----------我是分割线-----------(更新)

导入成绩

num = [67,73,66,21,58,61,41,75,69,68,54,49,60,79,61,30,76,69,67,24,82,61,40,71,80,77,82,60,87,71,69,81,69,61,67,0,71]

先进行数据处理

from collections import Counter
# 将成绩统计,统计每个分数的人数
cnt = Counter(num)
print("每个分数人数显示:",cnt)# 将统计的分数段进行排序,在排序之前,我们可以观察到Counter的结果,所以我只能想到先用两个list来分开存,再关联排序
x = []
y = []# 对分数段进行以5为单位的划分统计
cf = [0 for i in range(0,20)]
# 10
cn = [0 for i in range(0,10)]for i,j in cnt.items():x.append(i)y.append(j)# 对结果进行统计,之后可视化更加清晰cf[(int)(i/5)] +=j;# 10cn[(int)(i/10)]+=j;# 对x,y进行关联排序
x,y = zip(*sorted(zip(x,y)))# 对有成绩的分数段进行展示
print('以5为单位的分数段为:\n')
for i in range(20):if(cf[i]!=0):print(i*5,'~',(i+1)*5-1,':',cf[i])
每个分数人数显示: Counter({61: 4, 69: 4, 67: 3, 71: 3, 60: 2, 82: 2, 73: 1, 66: 1, 21: 1, 58: 1, 41: 1, 75: 1, 68: 1, 54: 1, 49: 1, 79: 1, 30: 1, 76: 1, 24: 1, 40: 1, 80: 1, 77: 1, 87: 1, 81: 1, 0: 1})
以5为单位的分数段为:0 ~ 4 : 1
20 ~ 24 : 2
30 ~ 34 : 1
40 ~ 44 : 2
45 ~ 49 : 1
50 ~ 54 : 1
55 ~ 59 : 1
60 ~ 64 : 6
65 ~ 69 : 9
70 ~ 74 : 4
75 ~ 79 : 4
80 ~ 84 : 4
85 ~ 89 : 1

开始可视化

# 开始可视化
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import MultipleLocator
import re# 先将普通的成绩绘制一个普通的柱状图
# 横坐标是成绩,纵坐标是每个成绩的人数
plt.bar(x,y)
plt.figure()
plt.show()# 但是可以看出这个结果非常的不好看,于是可以用到上一步做的以5为单位的数据,并且把柱状图美化一下
# 此时我们首先需要增加一个纵坐标
yi = np.arange(0,100,5)# 设置横纵坐标的间隔,横坐标间隔为10,纵坐标为1
x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)#ax为两条坐标轴的实例
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
# 设置横纵坐标的范围
plt.xlim(0,100)
plt.ylim(0,10)# 柱状图的设置,其中比较重要的是width,显示宽度,会比较好看一点,还有柱体的颜色,如果有多个不同的数据可以区分
plt.bar(yi,cf, alpha=0.9, width = 5, facecolor = 'yellowgreen', edgecolor = 'white', label='one', lw=1)
plt.show()# 普通折线图,效果已经可以看出来了
plt.plot(yi,cf)
plt.show()# 再稍微细分一下,使用的横纵坐标和上同
x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
plt.xlim(0,100)
plt.ylim(0,10)plt.title('成绩段分布图')
plt.xlabel('分数')
plt.ylabel('人数')plt.plot(yi,cf)
plt.show()

<matplotlib.figure.Figure at 0x7fe1839a7240>


分割线,下面都是草稿都不用看辽

from collections import Counter
cnt = Counter(num)
print(cnt)
Counter({61: 4, 69: 4, 67: 3, 71: 3, 60: 2, 82: 2, 73: 1, 66: 1, 21: 1, 58: 1, 41: 1, 75: 1, 68: 1, 54: 1, 49: 1, 79: 1, 30: 1, 76: 1, 24: 1, 40: 1, 80: 1, 77: 1, 87: 1, 81: 1, 0: 1})
lenn = len(cnt)
print(lenn)
25
# print(cnt.self)
# print(cnt.args)

分数段展示(以5为单位)

import matplotlib.pyplot as plt
import re
x = []
y = []
un = 0
s = 0
se = 0
ei = 0
ni = 0
ccc = [0,0,0,0,0,0,0,0,0,0,0]
cf = [0 for i in range(0,20)]
for i,j in cnt.items():# print(i,j)x.append(i)y.append(j)# print(i,":",j)ccc[(int)(i/10)] += j;cf[(int)(i/5)] +=j;
for i in range(20):if(cf[i]!=0):print(i*5,'~',(i+1)*5-1,':',cf[i])# if(i<60): un = un + j# elif(i<70): s = s + j# elif(i<80): se = se + j# elif(i<90): ei = ei + j
# print("60分以下人数:",un,"\n60~69分人数:",s,"\n70~79分人数:",se,"\n80~89分人数:",ei,"\n90分以上人数:",ni)
0 ~ 4 : 1
20 ~ 24 : 2
30 ~ 34 : 1
40 ~ 44 : 2
45 ~ 49 : 1
50 ~ 54 : 1
55 ~ 59 : 1
60 ~ 64 : 6
65 ~ 69 : 9
70 ~ 74 : 4
75 ~ 79 : 4
80 ~ 84 : 4
85 ~ 89 : 1

设置表格的横纵坐标范围

x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
plt.xlim(0,100)
plt.ylim(0,10)
plt.bar(x,y)
plt.figure()
plt.show()plt.bar(yi,ccc)
plt.figure()
plt.show()x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)#ax为两条坐标轴的实例
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
plt.xlim(0,100)
plt.ylim(0,10)plt.bar(yii,cf, alpha=0.9, width = 5, facecolor = 'yellowgreen', edgecolor = 'white', label='one', lw=1)
plt.show()


<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

具体人数显示

import numpy as np
yi = [0,10,20,30,40,50,60,70,80,90,100]
plt.plot(yi,ccc)
plt.show()yii = np.arange(0,100,5)print(yii)plt.plot(yii,cf)
plt.show()x,y=zip(*sorted(zip(x,y)))
for i in range(lenn):print(x[i],":",y[i])

[ 0  5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95]

0 : 1
21 : 1
24 : 1
30 : 1
40 : 1
41 : 1
49 : 1
54 : 1
58 : 1
60 : 2
61 : 4
66 : 1
67 : 3
68 : 1
69 : 4
71 : 3
73 : 1
75 : 1
76 : 1
77 : 1
79 : 1
80 : 1
81 : 1
82 : 2
87 : 1

成绩段分布图

from matplotlib.pyplot import MultipleLocator
x,y = zip(*sorted(zip(x,y)))
x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)
ax=plt.gca()
#ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为1的倍数
ax.yaxis.set_major_locator(y_major_locator)
#把y轴的主刻度设置为10的倍数# plt.plot(x,y)
plt.title('成绩段分布图')
plt.xlabel('分数')
plt.ylabel('人数')
plt.plot(yii,cf)
# plt.plot(x,y)plt.xlim(0,100)
plt.ylim(0,10)plt.show()

flag = 0
fullx = []
fully = []
for i,j in cnt.items():if(flag < i):for number in range(i-flag,3):fullx.append(flag+number)fully.append(0)fullx.append(i)fully.append(j)flag = i+1else:fullx.append(i)fully.append(j)flag = i+1
fullx,fully=zip(*sorted(zip(fullx,fully)))plt.plot(fullx,fully)
x_major_locator=MultipleLocator(10)
y_major_locator=MultipleLocator(1)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
plt.xlim(0,90)
plt.ylim(0,5)
plt.show()

python实现成绩分析并实现可视化相关推荐

  1. python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

    有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...

  2. 合集|Python数据采集、分析挖掘、可视化,看这一篇就够了!

    这几年,"数据分析"是很火啊,在这个数据驱动一切的时代,数据挖掘和数据分析就是这个时代的"淘金",懂数据分析.拥有数据思维,往往成了大厂面试的加分项. 比如通过 ...

  3. Python 灰色关联度分析 与结果可视化

    前言 1.Python 灰色关联度分析 采用一个示例,简单分析一下. 灰色关联度分析是 度量两条曲线的形态和走势是否相近 本文是在前文的基础上,进行结果可视化展示. 程序 读数据 import pan ...

  4. python做成绩表_自学Python笔记:用Python做成绩分析(2)

    #Grade.py import pandas as pd #打开原始表grade.xlsx df = pd.read_excel("grade.xlsx","grade ...

  5. 学生成绩分析报告数据分析可视化python实现源码seaborn、matplotlib

    最终报告见文末资源链接 1.导入包,设置显示 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns imp ...

  6. python制作成绩分析系统_python实现学生成绩测评系统

    本文实例为大家分享了python实现学生成绩测评系统的具体代码,供大家参考,具体内容如下 1.问题描述(功能要求): 根据实验指导书要求,完成相关软件系统的设计,要求内容翔实,条理清晰,图文并茂(流程 ...

  7. python输出成绩分析代码_Python根据成绩分析系统浅析

    案例:该数据集的是一个关于每个学生成绩的数据集,接下来我们对该数据集进行分析,判断学生是否适合继续深造 数据集特征展示 1 gre 成绩 (290 to 340) 2 toefl 成绩(92 to 1 ...

  8. 用python做成绩分析做表格_excel成绩表-懂Excel就能轻松入门Python数据分析包pandas(三):制作成绩条...

    转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的) 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来 ...

  9. 【python数据可视化】成绩分析及可视化实例

    题目要求 综合项目设计2:成绩分析及可视化实例 [已有功能]某班有30名学生的3门课程成绩,请统计每个学生课程的总分.平均分,每门课程的最高分.最低分,并绘制图形,对比各成绩段的成绩人数分布. [教学 ...

最新文章

  1. 公众号留言-2020-4-1
  2. Spring Cloud 服务安全连接
  3. 【深度学习】使用transformer进行图像分类
  4. php http头设置相关信息
  5. python3(十)pickle库
  6. linux查看气质系统文件命令,Linux dumpe2fs命令:查看文件系统信息
  7. Java基础学习总结(151)——Java 8时间处理API再复习
  8. java断点上传分片保存方案_分片上传与断点续传解决方案
  9. 手绘线条一直画不直_板绘线条不流畅怎么办?线稿就得这样练!
  10. python 爬虫3 新浪微博 爬虫 实战
  11. 地推项目大全_地推吧:app线上推广渠道大全(软件app上新地推)
  12. 关于720p和1080p观看距离和效果
  13. 史上最经典的K线买入技巧
  14. cocostudio 1.6
  15. git idea创建新分支,获取/合并主支代码的2个方法
  16. 字节跳动面试必问:大厂程序员35岁后的职业出路在哪?太香了
  17. 对比python字符串函数,学习pandas的str矢量化字符串函数
  18. 真的高品质吗?看声谱鉴别真假音质
  19. android便签工具下载,小鱼便签软件下载-小鱼便签 安卓版v1.01.14-PC6安卓网
  20. 通达OA软件试用地址、泛微OA软件试用地址 movno1

热门文章

  1. android 设置画布大小设置,Android自定义视图:设置画布大小以包装位图
  2. mysql 查找 法语字母,法语撇号字符在mysql数据库?
  3. ios keychain 不被清理_卧槽牛弊了,已完美破姐!支持 安卓、ios、PC端,爽....
  4. 2022年下半年的软考成绩今天可以查询啦!!!
  5. 发红包发过火 发过火
  6. 7-2367 计算职工工资(20 分)
  7. 如何让ajax 延迟加载,jsp ajax 延迟加载..
  8. 计算机应用研究word文档,计算机应用研究论文大纲 计算机应用研究论文提纲怎样写...
  9. java springboot口腔牙齿保健管理系统Vue前后端分离
  10. JS - 导出一个或多个pdf 生成zip压缩包