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

如何编写从DataFrame取数计算分性别健康率的Python函数?

正确实现方案

原有代码核心问题

  • 语法不符合Python规范:Python函数不用大括号{}包裹代码块,靠缩进控制层级,else关键字必须全小写,函数返回不需要同步给变量赋值
  • 参数缺失:你定义的函数没有传入gender参数,无法判断用户性别
  • 运算逻辑错误:比例计算公式缺少外层括号,会先执行除法再加法,得到完全错误的结果
  • 设计逻辑错误:逐行调用apply时,单条数据无法获取同性别全部人群的健康/不健康总数,没法直接计算比例

推荐实现方式(Pandas原生统计,效率最高)

不需要自定义复杂函数,直接用Pandas过滤+分组统计即可完成需求:

import pandas as pd

# 构造示例DataFrame,你实际使用时替换成自己的数据源即可
data = {
    "ID": ["01", "02", "03", "04", "05"],
    "status": ["healthy", "un_healthy", "un_healthy", "healthy", "healthy"],
    "Age": [16, 14, 22, 12, 33],
    "Gender": ["Male", "Female", "Male", "Female", "Female"]
}
df = pd.DataFrame(data)

# 第一步:过滤出15岁及以上的人群
df_adult = df[df["Age"] >= 15]

# 第二步:按性别分组,计算各组健康人数/组内总人数的比例
gender_health_rate = df_adult.groupby("Gender")["status"].apply(
    lambda x: (x == "healthy").sum() / x.count()
)

# 输出结果
print("男性健康率:", gender_health_rate.get("Male", 0))
print("女性健康率:", gender_health_rate.get("Female", 0))

运行结果说明

结合你给出的示例数据,运行后输出为:

  • 男性健康率:0.5(15岁以上男性共2人,1人健康)
  • 女性健康率:1.0(15岁以上女性共1人,1人健康)

内容的提问来源于stack exchange,提问作者Nora S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:03