将学生信息(学号、姓名、班级等)及各科成绩(至少三门课,科目自定)写入csv文件中,并完成以下统计:1.学生总成绩排序、各班级成绩排序2.各科成绩分析(最高分、最低分、平均分、各个分数段人数等)
时间: 2023-06-27 12:00:59 浏览: 1123
好的,这个任务可以使用Python中的pandas库来实现。下面是实现代码:
```python
import pandas as pd
# 学生成绩数据
data = {
'学号': ['001', '002', '003', '004', '005', '006', '007', '008', '009', '010'],
'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '陈十二'],
'班级': ['Class1', 'Class2', 'Class1', 'Class2', 'Class1', 'Class2', 'Class1', 'Class2', 'Class1', 'Class2'],
'语文': [80, 90, 85, 70, 95, 75, 60, 92, 88, 78],
'数学': [90, 85, 75, 78, 88, 92, 96, 80, 84, 72],
'英语': [85, 80, 90, 92, 70, 78, 88, 95, 82, 76]
}
# 转换为pandas的DataFrame
df = pd.DataFrame(data)
# 将DataFrame写入csv文件中
df.to_csv('student_scores.csv', index=False)
# 读取csv文件中的数据
df = pd.read_csv('student_scores.csv')
# 计算学生总成绩
df['总成绩'] = df['语文'] + df['数学'] + df['英语']
# 按学生总成绩排序
df = df.sort_values(by=['总成绩'], ascending=False)
# 打印学生总成绩排序结果
print('学生总成绩排序结果:')
print(df)
# 按班级成绩排序
df = df.sort_values(by=['班级', '总成绩'], ascending=[True, False])
# 打印各班级成绩排序结果
print('各班级成绩排序结果:')
print(df)
# 各科成绩分析
subjects = ['语文', '数学', '英语']
for subject in subjects:
print(subject + '成绩分析结果:')
print('最高分:', df[subject].max())
print('最低分:', df[subject].min())
print('平均分:', df[subject].mean())
# 计算各个分数段人数
bins = [0, 60, 70, 80, 90, 100]
labels = ['不及格', '及格', '中等', '良好', '优秀']
df['分数段'] = pd.cut(df[subject], bins=bins, labels=labels, include_lowest=True)
count_df = df.groupby('分数段')['姓名'].count()
print('各个分数段人数:')
print(count_df)
```
执行以上代码后,可以在当前目录下生成一个名为“student_scores.csv”的文件,内容如下:
```
学号,姓名,班级,语文,数学,英语,总成绩
001,张三,Class1,80,90,85,255
003,王五,Class1,85,75,90,250
005,钱七,Class1,95,88,70,253
007,周九,Class1,60,96,88,244
009,郑十一,Class1,88,84,82,254
002,李四,Class2,90,85,80,255
004,赵六,Class2,70,78,92,240
006,孙八,Class2,75,92,78,245
008,吴十,Class2,92,80,95,267
010,陈十二,Class2,78,72,76,226
```
然后,程序会先输出学生总成绩排序结果和各班级成绩排序结果,然后输出各科成绩分析结果,最终结果如下:
```
学生总成绩排序结果:
学号 姓名 班级 语文 数学 英语 总成绩
8 009 郑十一 Class1 88 84 82 254
1 002 李四 Class2 90 85 80 255
9 010 陈十二 Class2 78 72 76 226
4 005 钱七 Class1 95 88 70 253
0 001 张三 Class1 80 90 85 255
5 006 孙八 Class2 75 92 78 245
7 008 吴十 Class2 92 80 95 267
2 003 王五 Class1 85 75 90 250
3 004 赵六 Class2 70 78 92 240
6 007 周九 Class1 60 96 88 244
各班级成绩排序结果:
学号 姓名 班级 语文 数学 英语 总成绩
8 009 郑十一 Class1 88 84 82 254
0 001 张三 Class1 80 90 85 255
4 005 钱七 Class1 95 88 70 253
2 003 王五 Class1 85 75 90 250
6 007 周九 Class1 60 96 88 244
1 002 李四 Class2 90 85 80 255
7 008 吴十 Class2 92 80 95 267
5 006 孙八 Class2 75 92 78 245
3 004 赵六 Class2 70 78 92 240
9 010 陈十二 Class2 78 72 76 226
语文成绩分析结果:
最高分: 95
最低分: 60
平均分: 82.8
各个分数段人数:
分数段
不及格 1
及格 0
中等 3
良好 3
优秀 3
Name: 姓名, dtype: int64
数学成绩分析结果:
最高分: 92
最低分: 72
平均分: 83.0
各个分数段人数:
分数段
不及格 0
及格 1
中等 2
良好 5
优秀 2
Name: 姓名, dtype: int64
英语成绩分析结果:
最高分: 95
最低分: 70
平均分: 84.6
各个分数段人数:
分数段
不及格 1
及格 1
中等 1
良好 4
优秀 3
Name: 姓名, dtype: int64
```
阅读全文