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

如何用Pandas统计Medicare受益人中患至少一种指定慢性病的占比?

计算Medicare受益人中至少患一种指定慢性病的占比

修正你的代码问题

你之前的代码存在语法和逻辑错误:

  • claimss.loc[:, ["alzheimers","diabetes","arthritis"] == 1] 是把列名列表直接和1比较,完全不符合筛选逻辑
  • filtered_df = df.loc[raw_df] == 1] 多了一个闭合括号,属于语法错误

正确实现代码

假设你已经把数据集加载为df,以下是准确计算占比的代码:

# 定义需要统计的慢性病列
chronic_cols = [
    "alzheimers", "arthritis", "cancer", "copd", 
    "depression", "diabetes", "heart.failure", 
    "ihd", "kidney", "osteoporosis", "stroke"
]

# 标记每行是否至少患有一种慢性病(假设1代表患病)
has_chronic = df[chronic_cols].eq(1).any(axis=1)

# 计算占比并输出
percentage = has_chronic.mean() * 100
print(f"至少患有一种指定慢性病的患者占比: {percentage:.2f}%")

代码说明

  1. 列筛选:先取出所有需要统计的慢性病列,避免无关列干扰
  2. 患病判断:eq(1)将每个单元格值和1对比,生成布尔矩阵(True代表患病)
  3. 行级判断:any(axis=1)检查每行是否有至少一个True,即该患者是否患至少一种病
  4. 占比计算:布尔值的均值就是患病行的比例,乘以100转为百分比格式

额外提示

  • 如果你的数据中患病标记不是1(比如用"Y"或其他值),把eq(1)改成对应的eq("Y")即可
  • 若数据存在缺失值,可添加fillna(False)处理:df[chronic_cols].eq(1).fillna(False).any(axis=1),防止NaN影响判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:45:35