python用matplot绘制柱形图数据统计班级的平均分

导入csv库、matplotlib库

import csv
import matplotlib.pyplot as plt

定义文件路径

path = r"score.csv"

以只读的形式打开文件

stream = open(path, 'r')

读取文件内容

data = csv.reader(stream)

将读取的数据存放在list中

list = []
i = 0

使用for循环进行读取

for row in data:
if i != 0:
list.append(row)
i = i + 1

打印数据

"""
for row in list:
print(row)
"""

x = ['大数据32101', '大数据32102', '大数据32103']

大数据32101班总分

s01 = 0

大数据32101班人数

d01 = 0

大数据32102班总分

s02 = 0

大数据32102班人数

d02 = 0

大数据32103班总分

s03 = 0

大数据32103班人数

d03 = 0

for row in list:
if row[3] == '大数据32101':
print(row[4])
s01 = s01 + int(row[4])
d01 += 1
elif row[3] == '大数据32102':
print(row[4])
s02 = s02 + int(row[4])
d02 += 1
elif row[3] == '大数据32103':
print(row[4])
s03 = s03 + int(row[4])
d03 += 1
else:
break

算出平均分

p01 = s01 / d01
p02 = s02 / d02
p03 = s03 / d03

num = [p01, p02, p03]
plt.subplot(1, 2, 1)

绘制柱形图(横,纵)数据

plt.bar(x, num)

设置可支持中文

plt.rcParams['font.sans-serif'] = ['SimHei']

设置横轴、纵轴的标题

plt.xlabel("班级")
plt.ylabel("平均成绩")

设置总标题

plt.title("21级成绩表")

在柱形图显示具体数据--plt.text(柱形图x下标,数据显示位置,数据)

plt.text(0, 85.5, 85.5)

画折线图

plt.subplot(1, 2, 2)
"""
for i in range(3):
plt.text(i, num[i], num[i])
"""
plt.plot(x, num)

显示图标

plt.show()

posted @ 2022-05-15 15:34  N暖阳_李维宁  阅读(746)  评论(0编辑  收藏  举报