### **题目 2:数据清洗与可视化**python代码 **要求**: 1. 用 NumPy 生成包含 100 个学生成绩的随机数组(范围 0-100)。 2. 使用 Pandas 将数据转换为 DataFrame,列名为 `Scores`。 3. 过滤出成绩大于 60 分的数据,并绘制直方图(Matplotlib),标注及格率。
时间: 2025-05-12 13:43:25 浏览: 26
### 数据清洗与可视化流程
以下是基于问题需求的完整解决方案,涵盖了 NumPy 随机数组生成、Pandas 创建 DataFrame、数据过滤以及 Matplotlib 可视化。
#### 使用 NumPy 生成随机成绩数组
可以通过 `numpy.random.randint` 函数生成指定范围内的随机整数作为学生成绩。假设我们需要生成 10 名学生的两门课程的成绩:
```python
import numpy as np
np.random.seed(42) # 设置随机种子以便结果可重复
scores = np.random.randint(0, 101, (10, 2)) # 生成10名学生两科成绩(0到100)
print(scores)
```
此代码片段会生成一个形状为 `(10, 2)` 的二维数组,表示每名学生的两门课成绩[^1]。
---
#### 将随机数组转换为 Pandas DataFrame
利用上述生成的 `scores` 数组,将其转化为 Pandas DataFrame 并设置合适的列名和索引:
```python
import pandas as pd
df_scores = pd.DataFrame(scores, columns=['Math', 'English'], index=[f'Student_{i}' for i in range(1, 11)])
print(df_scores)
```
这里定义了两个科目名称 `'Math'` 和 `'English'`,并为每位学生分配了一个唯一的索引标签[^2]。
---
#### 过滤成绩大于 60 分的数据
为了筛选出所有成绩高于 60 分的学生记录,可以使用布尔索引技术:
```python
filtered_df = df_scores[(df_scores['Math'] > 60) & (df_scores['English'] > 60)]
print(filtered_df)
```
这段代码实现了对原始 DataFrame 中满足条件的部分进行提取操作[^3]。
---
#### 利用 Matplotlib 绘制带及格率标注的直方图
最后一步是展示各学科分数分布情况,并计算总体及格比例(即至少一门课超过 60 分)。具体实现如下所示:
```python
import matplotlib.pyplot as plt
# 计算总人数及其对应的及格人数
total_students = len(df_scores)
passing_students = ((df_scores['Math'] >= 60) | (df_scores['English'] >= 60)).sum()
pass_rate = passing_students / total_students * 100
# 绘制直方图
fig, ax = plt.subplots(figsize=(8, 5))
ax.hist(df_scores.values.flatten(), bins=range(0, 101, 10), edgecolor='black')
# 添加及格线与文字说明
plt.axvline(x=60, color='red', linestyle='--')
plt.text(60, max(ax.get_yticks()), f'Pass Rate: {pass_rate:.2f}%', fontsize=12)
# 图形美化
plt.title('Score Distribution with Passing Line at 60 Marks')
plt.xlabel('Scores')
plt.ylabel('Number of Students')
plt.grid(True, alpha=0.3)
plt.show()
```
该部分不仅展示了成绩频次统计图表,还特别突出了合格分数线位置以及整体达标百分比信息[^4]。
---
### 总结
整个过程综合运用了 NumPy 提供的基础数值运算能力[Pandas 处理结构化数据的优势](https://pandas.pydata.org/),再加上 Matplotlib 实现图形表达的功能特性,共同完成了从原始数据采集到最后呈现效果的一系列任务。
阅读全文
相关推荐


















