读取名为 score.csv 的数据文件,文件中包含某班 60 位同学的期末成绩。针对这些成绩进行分段计数统计,即统计’0-40分’、‘40-60分’、‘60-70分’、‘70-80分’、‘80-90分’、'90-100分’的学生人数,然后使用 matplotlib 绘制直方图和饼图分别表示各个分数段的人数分布情况。使用 Python 中的 matplotlib 库和open打开文件方式读取 score.csv 文件并绘制直方图和饼图
时间: 2023-06-19 16:06:22 浏览: 340
以下是实现该功能的 Python 代码:
```python
import csv
import matplotlib.pyplot as plt
# 读取 score.csv 文件
with open('score.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
# 跳过文件头
next(reader)
# 初始化分数段计数器
range_count = {'0-40分': 0, '40-60分': 0, '60-70分': 0, '70-80分': 0, '80-90分': 0, '90-100分': 0}
for row in reader:
# 将成绩转换为浮点数
score = float(row[1])
# 根据分数段计数
if score < 40:
range_count['0-40分'] += 1
elif score < 60:
range_count['40-60分'] += 1
elif score < 70:
range_count['60-70分'] += 1
elif score < 80:
range_count['70-80分'] += 1
elif score < 90:
range_count['80-90分'] += 1
else:
range_count['90-100分'] += 1
# 绘制直方图
plt.bar(range(len(range_count)), list(range_count.values()), align='center')
plt.xticks(range(len(range_count)), list(range_count.keys()))
plt.xlabel('分数段')
plt.ylabel('人数')
plt.title('分数段人数分布直方图')
plt.show()
# 绘制饼图
plt.pie(list(range_count.values()), labels=list(range_count.keys()), autopct='%1.1f%%')
plt.title('分数段人数分布饼图')
plt.show()
```
其中,该代码首先使用 `csv` 模块读取名为 `score.csv` 的数据文件,然后针对这些成绩进行分段计数统计,将结果保存在 `range_count` 字典中。接着,使用 `matplotlib` 库绘制直方图和饼图分别表示各个分数段的人数分布情况。最后,调用 `plt.show()` 方法显示图形。
阅读全文