You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas的groupby()和mean()计算学生平均成绩并升序排列

计算学生平均成绩并排序的实现步骤

1. 修正原始数据结构

原代码生成的DataFrame是按班级分列的非标准格式,无法直接用于分组计算,需要先重构为包含班级、姓名、各科成绩的扁平结构:

import pandas as pd

# 原始成绩数据
data = {
        'S4A': {
                'Name': ['Amy', 'Mandy', 'Daisy', 'Ben', 'Peter', 'John'],
                'Maths': [99, 87, 88, 70, 88, 76],
                'Chemistry': [89, 90, 90, 90, 89, 82],
                'Physics': [79, 97, 68, 80, 72, 95],
                'English': [90, 65, 56, 67, 86, 82],
                'Biology': [79, 89, 59, 70, 79, 78],
                'History': [75, 81, 78, 55, 68, 84]
               },

       'S4B': {
                'Name': ['Allen', 'Gordon', 'Jimmy', 'Nancy', 'Sammy', 'William'],
                'Maths': [90, 86, 88, 80, 85, 86],
                'Chemistry': [89, 78, 88, 90, 79, 82],
                'Physics': [89, 97, 78, 81, 82, 55],
                'English': [80, 85, 86, 77, 86, 82],
                'Biology': [75, 89, 69, 70, 79, 78],
                'History': [79, 81, 80, 65, 68, 84]
               }
       }

# 重构为标准DataFrame
df_list = []
for class_name, class_data in data.items():
    temp_df = pd.DataFrame(class_data)
    temp_df['Class'] = class_name
    df_list.append(temp_df)

df = pd.concat(df_list, ignore_index=True)
subjects = ['Maths', 'Chemistry', 'Physics', 'English', 'Biology', 'History']

2. 使用groupby()和mean()计算平均成绩

通过groupby('Name')按学生姓名分组(每个学生对应唯一分组),再对分组内的各科成绩调用mean()计算平均值:

# 分组计算每位学生的平均成绩
student_avg = df.groupby('Name')[subjects].mean(axis=1).reset_index(name='Average Score')

3. 按平均成绩升序排列

利用sort_values()方法对结果按平均成绩列升序排序:

# 升序排序
sorted_avg = student_avg.sort_values(by='Average Score', ascending=True)

# 输出结果
print(sorted_avg)

最终输出示例

运行后会得到按平均成绩从低到高排列的结果,示例如下:

Name  Average Score
3       Ben      72.000000
2     Daisy      73.166667
9     Nancy      77.166667
10     Sammy      81.000000
5      John      81.166667
8      Jimmy      81.500000
11  William      79.666667
4     Peter      80.333333
0       Amy      85.166667
6     Allen      83.666667
1     Mandy      84.833333
7    Gordon      86.000000

内容的提问来源于stack exchange,提问作者aunt wu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:35:22