python柱状图、直方图和饼状图统计学生成绩

这篇具有很好参考价值的文章主要介绍了python柱状图、直方图和饼状图统计学生成绩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python的matplotlib库具有很强大的绘图功能,可以利用这个库函数来进行学生成绩统计。假如有一个班的某科学生成绩如表1所示,可以用柱状图、直方图和饼状图三种方式来进行统计分析。下边介绍一下操作步骤。

表1 学生成绩表

学号

分数

20221001

61

20221002

68

20221003

74

20221004

70

20221005

53

20221006

66

20221007

66

20221008

71

20221009

67

20221010

84

20221011

79

20221012

73

20221013

64

20221014

90

20221015

81

20221016

82

20221017

77

20221018

51

20221019

78

20221020

75

20221021

69

20221022

83

20221023

56

20221024

73

20221025

93

20221026

63

20221027

80

20221028

76

20221029

80

20221030

74

20221031

72

20221032

88

20221033

62

20221034

85

20221035

86

20221036

58

20221037

72

20221038

72

20221039

70

20221040

91

目录

一、把成绩表转成csv格式

二、统计分析的方法

1、柱状图

2、直方图

3、饼状图

三、实现代码

四、实现效果


一、把成绩表转成csv格式

学号用字段“No.”表示,成绩用“score”,表格名称为“score”。

表2 成绩表转化为csv格式
No. score
20221001 61
20221002 68
20221003 74
20221004 70
20221005 53
20221006 66
20221007 66
20221008 71
20221009 67
20221010 84
20221011 79
20221012 73
20221013 64
20221014 90
20221015 81
20221016 82
20221017 77
20221018 51
20221019 78
20221020 75
20221021 69
20221022 83
20221023 56
20221024 73
20221025 93
20221026 63
20221027 80
20221028 76
20221029 80
20221030 74
20221031 72
20221032 88
20221033 62
20221034 85
20221035 86
20221036 58
20221037 72
20221038 72
20221039 70
20221040 91

二、统计分析的方法

在课程成绩情况统计分析时,可以选则柱状图、直方图和饼状图三种图形。

1、柱状图

使用柱状图分析全班平均分数、最高分数和最低分数。

2、直方图

使用直方图和正态分布曲线分析全班成绩的正态分布情况。

3、饼状图

使用饼状图分析60分以下、60-70分、70-80分、80-90分和90分以上几个分数区间的人数所占比例。

三、实现代码

import pandas as pd  # 引入panda工具集
import numpy as np  # 引入numpy核心库
import matplotlib.pyplot as plt  #引入matplotlib数据可视化库

#声明变量
a=0     #90分以上数量
b=0     #80-90分以上数量
c=0     #70-80分以上数量
d=0     #60-70分以上数量
e=0     #60分以下数量
score_max=0
score_min=100
score_avg=0
score_sum=0

# 正态分布的概率密度函数
#   x      数据集中的某一具体测量值
#   mu     数据集的平均值,反映测量值分布的集中趋势
#   sigma  数据集的标准差,反映测量值分布的分散程度
def normfun(x, mu, sigma):
    pdf = np.exp(-((x - mu) ** 2) / (2 * sigma ** 2)) / (sigma * np.sqrt(2 * np.pi))
    return pdf

if __name__ == '__main__':
    
    data = pd.read_csv('score.csv') # 载入分数数据文件
    score = data['score'] # 获得分数数据集
    student_no = data['No.'] # 获得学号数据集
    mean = score.mean() # 获得分数数据集的平均值
    std = score.std()   # 获得分数数据集的标准差

   #计算分数总和、各分数区间数量统计
    for i in range(0,len(score)):
        score0=int(score[i])
                
        #print(student_no[i],score0)
        score_sum=score_sum+score0  #计算分数之和,为求平均数做准备

        #计算最大值
        if score0>score_max:
            score_max=score0

        #计算最小值
        if score0<score_min:
            score_min=score0

        
        if score0>=90:              #统计90分以上数量
            a=a+1
        elif score0>=80:            #统计80分以上数量
            b=b+1
        elif score0>=70:            #统计70分以上数量
            c=c+1
        elif score0>=60:            #统计60分以上数量
            d=d+1
        else:                       #统计60分以下数量
            e=e+1

    score_avg=score_sum/len(score)  #平均分
    scores=[a,b,c,d,e]              #分数区间统计
    
    

    # 柱形图柱形的宽度
    bar_width = 0.3
    

    # 设定X轴:前两个数字是x轴的起止范围,第三个数字表示步长,步长设定得越小,画出来的正态分布曲线越平滑
    x = np.arange(0, 100, 1)

    # 设定Y轴,正态分布函数
    y = normfun(x, mean, std)

    # 设定柱状图x轴、Y轴数组
    x3 = np.arange(3)
    y3 = np.array([score_avg,score_max,score_min])
    

    # 绘制分数数据集的正态分布曲线和直方图(5分档)
    plt.subplot(221)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title('分数分布(5档)')
    plt.plot(x, y)
    plt.hist(score, bins=5, rwidth=0.9, density=True)
    plt.xlabel('分数')
    plt.ylabel('概率')
    

    # 绘制分数数据集的正态分布曲线和直方图(10分档)
    plt.subplot(222)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title('分数分布(10档)')
    plt.plot(x, y)   
    plt.hist(score, bins=10, rwidth=0.9, density=True)
    plt.xlabel('分数')
    plt.ylabel('概论')


    # 绘制柱形图
    plt.subplot(223)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title('分数统计')
    plt.bar(x3, y3, tick_label=['平均分', '最高分', '最低分'], width=bar_width)

    # 绘制饼状图
    plt.subplot(224)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.title('分数段饼图')
    plt.pie(scores,labels=['90分以上','80-90分','70-80分','60-70分','60分以下'])
    # 输出四幅图
plt.show()

四、实现效果

python柱状图、直方图和饼状图统计学生成绩

(全文结束)

 文章来源地址https://www.toymoban.com/news/detail-502072.html

到了这里,关于python柱状图、直方图和饼状图统计学生成绩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 直方图统计增强方法

    直方图统计增强方法的原理:   直方图统计增强是一种基于像素值分布的图像增强技术,通过调整像素值的分布来增强图像的对比度和细节。其原理是根据图像的直方图信息,将原始像素值映射到一个新的像素值域,从而改变图像的亮度和对比度。 直方图统计增强方法的

    2024年02月09日
    浏览(28)
  • 描述性统计图表——直方图

    概念:直方图是频数直方图的简称,通常用来描述类别数据。它是用一系列宽度相等、高度不等的长方形表示数据的图。长方形的宽度表示数据范围的间隔,长方形的高度表示在给定间隔内的数据数。一般横轴表示数据类型,纵轴表示分布情况。直方图也可以被归一化以显示

    2024年02月06日
    浏览(47)
  • Matlab遍历文件及直方图统计

    参考链接: 使用MATLAB遍历文件 strtrim用法 strsplit用法 cell单元数据使用{}

    2024年02月15日
    浏览(47)
  • Matlab之统计数据分布并绘制直方图函数histogram

    直方图是一种将数据分组到条柱中的条形图。该函数可以统计数据在划分区间内的数量分布,同时以直方图的形式展示统计结果。 创建直方图X的图。该函数使用 一种自动分箱算法,返回具有统一宽度的分箱, 选择以涵盖元素范围并揭示 分布的基础形状。 将条柱显示为矩形

    2024年04月14日
    浏览(32)
  • Python图像增强之直方图均衡化(全局直方图均衡、局部直方图均衡)

    图像增强是有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。 图像增强通常划分

    2024年02月13日
    浏览(28)
  • 【数学建模】matlab正态拟合直方图 | 获取一组数据的统计特征(平均值,方差等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 首先给出一组数据样例: 1.1.1 平均值(期望) 获得结果: 1.1.2 中值 1.1.3 方差和标准差 A.方差 B.标准差(一般也是正态分布里面的西格玛) 1.1.4 排序 依然用之前的数据画图 从数据分布上来看大概就是个正

    2024年02月04日
    浏览(44)
  • Python绘制直方图

    对于大量样本来说,如果想快速获知其分布特征,最方便的可视化方案就是直方图,即统计落入不同区间中的样本个数。 以正态分布为例 其中 bins 参数用于调控区间个数,出图结果如下 直方图函数的定义如下 除了 x 和 bins 之外,其他参数含义为 range 绘图区间,默认将样本

    2024年02月05日
    浏览(29)
  • python 画 直方图

    2024年02月13日
    浏览(67)
  • 若依项目制作饼状图和柱状图

    echarts+vue 先写一个实体类,将查到的数据放在实体类中,写一个mapper-mapper.xml-controller 这里为了方便测试没有写service 实体类 mapper mapper.xml 这里的SQL查到的值一定要和实体类定义的相同,要不然会报错, SQL里的where del_flag = 0这里我是判断是否删除,可以不写 controller 这里的

    2023年04月21日
    浏览(28)
  • 基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)

    线性变换 假设输入图像为I,宽为W,高为H,输出图像为O,图像的线性变换可以用以下公式定义: O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W O(r, c) = a × I(r, c) + b, 0 ≤ r H, 0 ≤ c W O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W 当a=1,b=0时,O为I的一个副本;如果a1,则输出图像

    2024年02月06日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包