【matplotlib与pandas库】利用matplotlib库根据CSV文件中的成绩数据绘制折线图、柱状图和饼状图,对同学们的成绩进行处理和分析

matplotlib是提供数据绘图的第三方库,熟悉并掌握了matplotlib库的基本使用,为一组数据绘制出直观的图形。下面利用matplotlib库根据CSV文件中的数据绘制折线图、柱状图和饼状图,并以图片格式保存在电脑磁盘中。

问题描述如下:

打开学生成绩文件test.csv(或者其他文件),提取数据,建立四个子图,分别为姓名和计算机成绩数据绘制柱状图和折线图,然后统计各个同学总成绩和平均成绩,绘制总成绩柱状图和平均成绩饼图。在进行数据处理计算时需要利用pandas库进行,pandas库用来处理CSV文件十分的方便。

程序代码如下: 

#提取成绩文件数据绘制图形
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
fr =pd.read_csv("test.csv",header=0,encoding='gbk')
xm=fr['姓名']
ji=fr['计算机']
zc=fr['总成绩']=fr['计算机']+fr['英语']+fr['数学']
fr['平均成绩']=fr['总成绩']/(fr.shape[1]-2)
fr['平均成绩'] = fr['平均成绩'].apply(lambda x: format(x, '.2f'))
pj=fr['平均成绩']
fr.to_csv('testf1.csv',index=None)
plt.figure()
plt.subplots_adjust(wspace=0.4,hspace=0.5)#调整子图之间的位置,防止子图之间覆盖
plt.subplot(221)
plt.bar(xm,ji)
for a,b,i in zip(xm,ji,range(len(xm))):
    plt.text(a,b+0.01,ji[i],ha='center',fontsize=10)
plt.ylabel('计算机成绩')
plt.xlabel('姓名')
plt.title('计算机成绩柱状图')
plt.subplot(222)
plt.plot(xm,ji)
plt.ylabel('计算机成绩')
plt.xlabel('姓名')
plt.title('计算机成绩折线图')
plt.subplot(223)
plt.bar(xm,zc,color='purple')
for a,b,i in zip(xm,zc,range(len(xm))):
    plt.text(a,b+0.01,zc[i],ha='center',fontsize=10)
plt.ylabel('总成绩')
plt.xlabel('姓名')
plt.title('总成绩柱状图')
plt.subplot(224)
plt.pie(pj,labels=xm,autopct='%2.2f%%')#显示的百分比保留两位小数
plt.title('平均成绩饼状图')
plt.savefig('成绩分析.png')
plt.show()

程序运行结果如下:

 

如有疑问欢迎留言提问,博主将尽快回复。 

 看到这里的小伙伴们别忘了给博主点个赞哦!

关注博主学习更多有用的python程序设计知识!

猜你喜欢

转载自blog.csdn.net/qq_59049513/article/details/122557372