有一组学生学号姓名成绩数据 将前面保存的工作空间文件导入工作空间,统计出各个分数段的人数和百分比,找出各分数段同学的学号和姓名
时间: 2024-05-13 11:17:29 浏览: 74
假设导入的文件名为 `score_data.csv`,包含以下列:学号、姓名、成绩。那么可以按照以下步骤进行统计和查询:
1. 导入 Pandas 库并读取数据:
```python
import pandas as pd
df = pd.read_csv('score_data.csv')
```
2. 确定分数段并将成绩按照分数段分组:
```python
# 将成绩按照分数段分组
bins = [0, 60, 70, 80, 90, 100] # 分数段
labels = ['不及格', '及格', '中等', '良好', '优秀'] # 分数段标签
df['分数段'] = pd.cut(df['成绩'], bins=bins, labels=labels)
```
3. 统计各个分数段的人数和百分比:
```python
# 统计各个分数段的人数和百分比
grouped = df.groupby('分数段')['成绩'].agg(['count', 'mean']) # count为人数,mean为平均分
grouped['百分比'] = grouped['count'] / grouped['count'].sum() * 100
print(grouped)
```
4. 找出各分数段同学的学号和姓名:
```python
# 找出各分数段同学的学号和姓名
for label in labels:
group = df.loc[df['分数段'] == label, ['学号', '姓名']]
print(f'{label}分数段同学的学号和姓名:\n{group}\n')
```
完整代码如下:
```python
import pandas as pd
df = pd.read_csv('score_data.csv')
bins = [0, 60, 70, 80, 90, 100] # 分数段
labels = ['不及格', '及格', '中等', '良好', '优秀'] # 分数段标签
df['分数段'] = pd.cut(df['成绩'], bins=bins, labels=labels)
grouped = df.groupby('分数段')['成绩'].agg(['count', 'mean']) # count为人数,mean为平均分
grouped['百分比'] = grouped['count'] / grouped['count'].sum() * 100
print(grouped)
for label in labels:
group = df.loc[df['分数段'] == label, ['学号', '姓名']]
print(f'{label}分数段同学的学号和姓名:\n{group}\n')
```
阅读全文