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

基于Python计算人口出生率、老年死亡率及代码排错咨询

问题排查与实现代码

现有代码逻辑错误

  • 所有筛选条件没有做**与逻辑(&)**组合,单独的布尔Series只能判断单条件是否符合,无法筛选出同时满足性别、年龄要求的人群
  • 对布尔Series调用count()统计的是所有非空值的总数量,不会只统计符合条件(值为True)的行数,统计符合条件的人数需要调用sum()
  • 年龄筛选逻辑和需求不符:需求要求统计25-29岁女性,现有代码里的30-35岁范围完全不对
  • 缺少核心统计字段的筛选:没有加入「过去一年是否生育」的判断条件,无法统计出生人口数

需求1:计算25-29岁女性每10万人出生数

前提假设:你的DataFrame中存在is_birth_last_year字段,取值为1/0或布尔值,代表该个体过去一年是否生育

# 筛选25-29岁女性的布尔条件
woman_25to29 = (df["Gender"] == "Female") & (df["Age"] >=25) & (df["Age"] <=29)
# 统计25-29岁女性总人数
total_woman = woman_25to29.sum()
# 统计该人群中过去一年生育的总人数(即出生人口数)
total_birth = (woman_25to29 & (df["is_birth_last_year"] == 1)).sum()
# 计算每10万人出生数
birth_per_100k = (total_birth / total_woman) * 100000
print(f"25-29岁女性每10万人出生数:{birth_per_100k:.2f}")

需求2:对比两个老年年龄段死亡率

前提假设:你的DataFrame中存在is_death_last_year字段,取值为1/0或布尔值,代表该个体过去一年是否死亡

def calc_death_rate(age_min, age_max):
    # 筛选对应年龄段人群
    age_group = (df["Age"] >= age_min) & (df["Age"] <= age_max)
    total_people = age_group.sum()
    dead_people = (age_group & (df["is_death_last_year"] ==1)).sum()
    return dead_people / total_people

# 计算两个年龄段的死亡率
rate_65to70 = calc_death_rate(65,70)
rate_70to75 = calc_death_rate(70,75)

print(f"65-70岁群体死亡率:{rate_65to70:.4%}")
print(f"70-75岁群体死亡率:{rate_70to75:.4%}")
print(f"70-75岁群体死亡率是65-70岁群体的{rate_70to75/rate_65to70:.2f}倍")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:03