一、问题描述
数学专业2021级4个班120名同学的C语言程序设计课程的成绩存放在成绩表.csv文件中,成绩分为平时成绩和期末成绩两列,最终成绩为:平时成绩*0.2+期末成绩*0.8,现编程处理成绩,得到最终成绩相应信息。
二、问题要求
1.现已知成绩分为平时成绩和期末成绩两列,最终成绩为:平时成绩*0.2+期末成绩*0.8,利用已知条件和编程语言给出数学专业2021级4个班所有学生的最终C语言成绩。
2.求出4个班学生成绩的平均值,最高分,最低分,中位数及标准差。
3.统计每个分数阶段的人数占比 [A率(优秀),B率(良好),C率(中等),D率(及格),E率(不及格)]。并将所有成绩由高到低排序,并绘制成绩分布图,并将结果输出到out.txt文件中。
三、算法思想
1.基本统计值计算
一组数据表示为,其算术平均值、标准差分别表示如下:
算术平均值
标准差
中位数是指S中所有数按照从小到大/从大到小的顺序排列后,处于最中间位置的数据值。如果n是奇数,则序列S的最中间的一个位置是一个数据,可以表示为 ;如果n为偶数,序列S不存在一个最中间的位置,则中位数可以表示成最中间两个位置数据的平均值,即
,这个问题的IPO描述如下:
输入:从用户输入、文件、网格等途径获取一组数据
处理:适当的数据结构和算法
输出:平均值,标准差和中位数
2.Matplotlib作图
Matplotlib是Python中最基本的作图库,是一个最基础的Python可视化库,一般都是从 Matplotlib上手的Python数据可视化,然后开始做纵向与横向拓展。根据Matplotlib图像的四层图像结构,pyplot模块绘制图形基本都遵循一个流程,用这个流程可以完成大部分图形的绘制。步骤如下:
第一步,导入模块。绘图之前,需要先导入包含相应函数的模块,对于pyplot模块,一般使用如下风格导入
import numpy as np
import matplotlib.pylot as plt
第二步,创建画布与创建子图。第一部分主要是构建出一张空白的画布,如果需要同时展示几个图形,可以将画布划分为多个部分。然后使用对象方法来完成其余的工作,示例如下:
pic=plt.figure(figsize=(8,7),dpi=80) #创建画布,尺寸为8*7,像素值为80
axl=pic.add_subplot(2,1,1) #划分为2*1的图形阵,选择第一张图片
第三步,添加画布内容。第二部分是绘图的主体部分,添加标题,坐标轴名称等步骤与绘制图形是并列的,没有先后顺序,但是添加图例一定要在绘制图形之后。
第四步,图形保存与展示
3.Pandas处理数据
Pandas是一款开放源码的BSD许可的Python库。它提供了众多类,可满足不同的使用需求,其中常用的类如表所示。
表1 pandas常用的类
类 |
说明 |
Series |
基本数据结构,一维标签数组,能够保存任何数据类型 |
DataFrame |
基本数据结构,一般为二维数组,是一组有序的列 |
Index |
索引对象,负责管理轴标签和其他元数据 |
groupby |