如何用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}%")
代码说明
- 列筛选:先取出所有需要统计的慢性病列,避免无关列干扰
- 患病判断:
eq(1)将每个单元格值和1对比,生成布尔矩阵(True代表患病) - 行级判断:
any(axis=1)检查每行是否有至少一个True,即该患者是否患至少一种病 - 占比计算:布尔值的均值就是患病行的比例,乘以100转为百分比格式
额外提示
- 如果你的数据中患病标记不是1(比如用"Y"或其他值),把
eq(1)改成对应的eq("Y")即可 - 若数据存在缺失值,可添加
fillna(False)处理:df[chronic_cols].eq(1).fillna(False).any(axis=1),防止NaN影响判断
内容的提问来源于stack exchange,提问作者musti
相关产品推荐
相关产品推荐

