Python科学数据分析:随机生成 50 名学生,5 门课程的成绩保存后进行数据分析(平均分、最高分)、数据展示(饼图、直方图)

前言

Python数据分析作业,利用科学计算相关库,随机生成 50 名学生,5 门课程的成绩(成绩为 0 到 100 随机整数),进行数据分析与展示

内容

1、 随机生成上述数据并保存在数组中,并将数组数据保存分别保存到文本文件和 CSV 文件

# 数据生成和保存
# -*- 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=',')

在这里插入图片描述

2、 数据分析,分析每名同学的平均分,每门课的平均分、每门课最高分

# -*- 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)

在这里插入图片描述

3、数据展示,从数组中任取一名同学的成绩,制作饼图并保存;任取一门课的 50 名同学成绩,制作该门课的直方图并保存

# -*- 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()

饼图:
在这里插入图片描述

直方图:
在这里插入图片描述

  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值