按地区分组统计糖尿病患者数与CGM处方量并计算占比
计算各地区CGM开具占糖尿病患者总数的比例
原始数据
| Location | Diabetes present | CGM prescribed |
|---|---|---|
| CA | 1 | 1 |
| TX | 1 | 0 |
| TX | 1 | 1 |
| CA | 1 | 0 |
| AZ | 1 | 1 |
| AZ | 1 | 0 |
| AZ | 1 | 1 |
| TX | 1 | 0 |
期望输出
| location | TotalDiabetes | total CGM | proportion (total cgm/ total diabetes) |
|---|---|---|---|
| CA | 2 | 1 | 0.5 |
| TX | 3 | 1 | 0.33 |
| AZ | 3 | 2 | 0.66 |
解决方案
方法1:Excel操作
分类汇总法
- 选中原始数据全部区域
- 点击「数据」选项卡 → 「分类汇总」
- 在对话框中设置:
- 分类字段:
Location - 汇总方式:
求和 - 选定汇总项:勾选
Diabetes present和CGM prescribed
- 分类字段:
- 提取生成的汇总行数据,新增列输入公式
=CGM求和单元格/Diabetes求和单元格,设置单元格格式保留两位小数。
数据透视表法(更灵活)
- 选中原始数据,点击「插入」选项卡 → 「数据透视表」
- 在透视表字段面板中:
- 将
Location拖入「行」区域 - 将
Diabetes present和CGM prescribed拖入「值」区域,修改汇总方式为「求和」
- 将
- 在透视表旁新增列,计算比例:
=对应CGM求和单元格/对应Diabetes求和单元格,调整小数位数至两位。
方法2:Python Pandas代码
使用Pandas分组求和并计算比例,代码如下:
import pandas as pd # 构建原始数据DataFrame df = pd.DataFrame({ 'Location': ['CA', 'TX', 'TX', 'CA', 'AZ', 'AZ', 'AZ', 'TX'], 'Diabetes present': [1]*8, 'CGM prescribed': [1, 0, 1, 0, 1, 0, 1, 0] }) # 按地区分组求和并重置索引 summary = df.groupby('Location').sum().reset_index() # 重命名列名匹配期望输出 summary.columns = ['location', 'TotalDiabetes', 'total CGM'] # 计算比例并保留两位小数 summary['proportion (total cgm/ total diabetes)'] = (summary['total CGM'] / summary['TotalDiabetes']).round(2) # 输出结果 print(summary)
运行后输出结果与期望一致。
内容的提问来源于stack exchange,提问作者Sharon Macwan
相关产品推荐
相关产品推荐

