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

如何基于人群占比为DataFrame未就诊观测值分配随机填充病症

基于指定概率填充DataFrame缺失病症值

实现步骤

  1. 保留原始数据:创建新列imputed_problem,完全复制原problem列内容,确保原始观测值不受修改。
  2. 定位待填充行:筛选出imputed_problem值为left before being seen的目标行。
  3. 按概率生成填充值:利用numpy的随机抽样工具,按照给定的病症占比生成对应数量的填充内容。
  4. 替换目标行:将生成的填充值替换到对应的待填充行中。

代码实现

import pandas as pd
import numpy as np

# 定义病症及对应的人群占比
conditions = ['sprain', 'cut', 'infection']
probabilities = [0.3, 0.5, 0.2]

# 复制原列生成新列,保留所有原始数据
df['imputed_problem'] = df['problem'].copy()

# 筛选出需要填充的行
fill_mask = df['imputed_problem'] == 'left before being seen'
num_to_fill = fill_mask.sum()

# 按指定概率随机生成填充值
# 若需要固定随机结果(可复现),添加 np.random.seed(自定义数字)
filled_conditions = np.random.choice(conditions, size=num_to_fill, p=probabilities)

# 替换目标行的内容
df.loc[fill_mask, 'imputed_problem'] = filled_conditions

关键说明

  • np.random.choice的p参数可精准指定每个选项的抽样概率,当待填充样本量足够大时,实际分配比例会趋近于设定的0.3/0.5/0.2,适配全量人群数据的需求。
  • 新列imputed_problem仅修改未就诊的观测值,其余原始病症数据会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:54:30