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

如何用Pandas编写函数,按性别计算成绩均值并返回字典

解决方案:按性别计算学生成绩均值的Pandas函数

嘿,这需求很清晰,咱们可以通过合并Series为DataFrame,再借助Pandas的分组功能轻松实现目标。下面是完整的函数实现:

import pandas as pd

def calculate_gender_grade_mean(grades, genders):
    # 将成绩和性别Series合并为DataFrame,建立对应关系
    student_df = pd.DataFrame({'grades': grades, 'genders': genders})
    # 按性别分组,计算每组的成绩均值,最后转换为字典格式
    gender_grade_mean = student_df.groupby('genders')['grades'].mean().to_dict()
    return gender_grade_mean

代码解释:

  • 第一步:把传入的两个Series合并成一个DataFrame,这样每个学生的成绩和性别就一一对应起来了,方便后续分组操作;
  • 第二步:使用groupby('genders')按性别对数据分组,然后针对grades列调用mean()方法,计算出每个性别的平均成绩;
  • 第三步:用to_dict()方法把分组后的结果转换成你需要的字典格式,键为性别("male"/"female"),值为对应性别的成绩均值。

测试示例:

咱们用你给出的示例数据来验证一下:

# 示例数据
grades = pd.Series([5, 4, 3, 5, 2])
genders = pd.Series(["female", "male", "male", "female", "male"])

# 调用函数
result = calculate_gender_grade_mean(grades, genders)
print(result)

运行后会输出:{'male': 3.0, 'female': 5.0},完全符合你的预期。

小提示:

如果你的数据中存在缺失值(比如部分学生没有成绩或性别记录),可以在分组前加上dropna()来清理无效数据,避免影响均值计算,修改后的代码如下:

def calculate_gender_grade_mean(grades, genders):
    student_df = pd.DataFrame({'grades': grades, 'genders': genders})
    # 先清理缺失值再分组计算
    gender_grade_mean = student_df.dropna().groupby('genders')['grades'].mean().to_dict()
    return gender_grade_mean

内容的提问来源于stack exchange,提问作者John P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:21:18