Python数据分析作业,利用科学计算相关库,随机生成 50 名学生,5 门课程的成绩(成绩为 0 到 100 随机整数),进行数据分析与展示
# 数据生成和保存
# -*- coding: utf-8 -*-
import numpy as np
x = np.empty(shape=[0, 5], dtype=int) # 生成一个0行5列的空数组
# print(x)
for i in range(50):
y = np.random.randint(0, 101, 5)
x = np.append(x, [y], axis=0) # 添加整行元素,axis=1添加整列元素
print(x)
data = x
# 保存到txt文件中
np.savetxt('data_txt.txt', data, fmt='%d')
# 保存到csv文件中
np.savetxt('data_csv.csv', data, fmt='%d', delimiter=',')
# -*- coding: utf-8 -*-
import numpy as np
data = np.loadtxt('data_txt.txt')
print(data)
# 每位同学的平均分
avgEach = data.mean(axis=1) # 计算完之后array的长度等于行数
print("每位同学的平均分:")
print(avgEach)
# 每门课的平均分
avgEachCourse = data.mean(axis=0) # 计算完之后array的长度等于列数
print("每门课的平均分:")
print(avgEachCourse)
# 求每门课的最高分
max_f = data.max(axis=0)
print("求每门课的最高分:")
print(max_f)
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 制作饼图
data = np.loadtxt('data_txt.txt') # 加载数据
Labels = 'Class-A', 'Class-B', 'Class-C', 'Class-D', 'Class-E' # 饼块标签
Explode = (0, 0, 0, 0, 0)
plt.pie(data[1], explode=Explode, labels=Labels, autopct='%.2f%%')
plt.figure(1)
plt.show()
# 选一门课制作直方图
matplotlib.rcParams['font.family'] = 'SimHei'
plt.suptitle("课程成绩分布直方图") # 为当前绘图区添加标题
# 绘制Class-A成绩直方图
plt.subplot(3, 1, 1)
plt.hist(data[:, 1], bins=10, range=(0, 100), color='red') # 绘制直方图,从0到100分成10段
plt.xlabel("Class-A 成绩分数段") # 设置x轴标签
plt.ylabel("人数") # 设置y轴标签
plt.xlim(0, 100) # 设置x轴区间
plt.xticks([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) # 设置x轴刻度
plt.yticks([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]) # 设置y轴刻度
plt.grid() # 设置网格线
plt.figure(2)
plt.show()
饼图:
直方图: