python柱状图、直方图和饼状图统计学生成绩 您所在的位置:网站首页 成绩分析excel柱状图 python柱状图、直方图和饼状图统计学生成绩

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

2024-05-30 19:59| 来源: 网络整理| 查看: 265

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.score2022100161202210026820221003742022100470202210055320221006662022100766202210087120221009672022101084202210117920221012732022101364202210149020221015812022101682202210177720221018512022101978202210207520221021692022102283202210235620221024732022102593202210266320221027802022102876202210298020221030742022103172202210328820221033622022103485202210358620221036582022103772202210387220221039702022104091

二、统计分析的方法

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

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=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() 四、实现效果

(全文结束)

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有