如何按年周性别维度汇总英国分地区指标并保留其余国家数据
解决方案
用Python的pandas库处理即可,核心逻辑是拆分英国子区域数据聚合后,和其余原数据拼接,不会改动非英国区域的任何原有记录:
- 先把数据拆为两部分:英国三个下属统计单元(苏格兰
GBR_SCO、英格兰威尔士GBR_WAL、北爱尔兰GBR_NIR)的数据,以及其余所有国家/地区的原数据(后者完全保留不做修改) - 对英国三个子单元的数据,按需要对齐的维度(年份、周、性别、年龄组等所有分类维度)分组,对死亡数、死亡率等所有数值字段求和,统一将国家代码赋值为
GBR - 将聚合后的英国合计数据,和之前保留的非英国原数据纵向拼接,得到最终结果
可直接运行的代码
假设你已经把HMD导出的原始数据读入pandas DataFrame,变量名为df:
import pandas as pd # 英国下属三个独立统计单元的代码 gbr_sub_codes = ["GBR_SCO", "GBR_WAL", "GBR_NIR"] # 提取所有非英国子单元的原数据,不做任何修改 df_non_gbr = df[~df["Country"].isin(gbr_sub_codes)].copy() # 聚合英国三个子单元的数据 df_gbr_raw = df[df["Country"].isin(gbr_sub_codes)].copy() # 分组维度:把所有不需要求和的分类列都放这里,根据实际数据调整即可,比如有年龄组就加"Age" group_dimensions = ["Year", "Week", "Sex"] # 自动对所有数值列(死亡人口、死亡率等)按分组维度求和 df_gbr_agg = df_gbr_raw.groupby(group_dimensions, as_index=False).sum(numeric_only=True) # 赋值统一国家代码 df_gbr_agg["Country"] = "GBR" # 拼接得到最终结果 df_final = pd.concat([df_non_gbr, df_gbr_agg], ignore_index=True)
注意事项
- 如果数据里还有其他分类维度(比如分年龄组、死亡原因等),直接把对应列名加到
group_dimensions列表里即可,不需要修改聚合逻辑,会自动按维度匹配后计算合计值 - 用给出的样例数据验证:2000年第1周苏格兰率为0.01、英格兰威尔士为0.19,聚合后正好为0.20,和预期结果完全匹配
- 该逻辑会完整保留所有原有国家、年份、周度的记录,不会出现数据丢失
内容的提问来源于stack exchange,提问作者Bibi
相关产品推荐
相关产品推荐

