1)学生成绩信息相关操作 学生成绩表以 score . csv 的形式存储 其数据信息如下: Name , Chinese , Maths , English 张三,88,87,85 李四,93,88,90 王五,82,99,96 周六,77,94,84 徐七,80,94,76 ( 1)通过探素数据的基本信息,能够洞票数据的整体分布、数据的类属关系,从而发现数据间的关联。 2)读取文件 score . csv 中的成绩数据,计算平均分并统计其中语文成绩大于等于80,英语成绩大于等于85的学生的每门课程的成绩(结果按平均分从大到小排序),将结果输出至文件 result . csv 中 3)绘制满足条件的学生平均成绩的柱状图(选做)。
时间: 2023-06-19 21:05:38 浏览: 82
1)数据的整体分布:共有5个学生,每个学生有中文、数学、英语三门成绩,成绩范围分别为77-93,87-99,76-96。数据类属关系:每个学生对应三门成绩,每门成绩都是数字类型数据。数据间的关联:同一个学生的三门成绩之间存在关联。
2)代码实现如下:
```python
import csv
# 读取成绩数据
with open('score.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
next(reader) # 跳过表头
scores = [line for line in reader]
# 计算平均分并统计符合条件的学生的每门课程成绩
result = [['Name', 'Chinese', 'Maths', 'English', 'Average']]
for s in scores:
name, chinese, maths, english = s
chinese, maths, english = int(chinese), int(maths), int(english)
average = (chinese + maths + english) / 3
if chinese >= 80 and english >= 85:
result.append([name, chinese, maths, english, average])
# 按平均分从大到小排序
result = sorted(result[1:], key=lambda x: x[-1], reverse=True)
result.insert(0, ['Name', 'Chinese', 'Maths', 'English', 'Average'])
# 将结果输出至文件 result.csv 中
with open('result.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
for line in result:
writer.writerow(line)
```
3)绘制学生平均成绩的柱状图的代码如下:
```python
import matplotlib.pyplot as plt
# 读取成绩数据
with open('score.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
next(reader) # 跳过表头
scores = [line for line in reader]
# 计算平均分并统计符合条件的学生的每门课程成绩
average_scores = []
for s in scores:
name, chinese, maths, english = s
chinese, maths, english = int(chinese), int(maths), int(english)
average = (chinese + maths + english) / 3
if chinese >= 80 and english >= 85:
average_scores.append(average)
# 绘制柱状图
plt.bar(range(len(average_scores)), average_scores)
plt.show()
```