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

如何在Pandas中基于已有数据分布随机填充Age category列缺失值?

按现有分布填充Pandas数据框的缺失值

要实现按现有非缺失数据的分布填充Age category列的NaN值,核心思路是按原类别占比随机抽取对应类别进行填充,这样能最大程度保证填充后的整体分布与原数据一致,具体步骤如下:

1. 获取现有数据的类别分布

如果已经明确知道各分类的占比(如36 - 45占29.5%、46 - 55占24.9%),可以直接手动定义分类列表和对应概率;如果需要从数据中自动提取更准确的分布,执行以下代码:

import pandas as pd
import numpy as np

# 从非缺失值中提取类别及对应占比
category_probs = df['Age category'].value_counts(normalize=True)

执行后category_probs会返回每个类别及其对应的占比(如36 - 45 0.295)。

2. 按分布随机填充缺失值

定位所有缺失值的位置,然后根据提取的占比随机选择类别填充:

# 获取所有缺失值的索引
na_indices = df[df['Age category'].isna()].index

# 按原分布随机生成填充值
fill_values = np.random.choice(
    category_probs.index,
    size=len(na_indices),
    p=category_probs.values
)

# 赋值填充
df.loc[na_indices, 'Age category'] = fill_values

如果是手动给定的占比,只需替换category_probs.index和category_probs.values为自定义的分类列表和概率列表即可,示例:

# 手动定义分类和对应概率
custom_categories = ['36 - 45', '46 - 55', '其他类别']
custom_probs = [0.295, 0.249, 0.456]

fill_values = np.random.choice(
    custom_categories,
    size=len(na_indices),
    p=custom_probs
)

3. 验证填充后的分布

填充完成后,可通过以下代码查看新的分布,确认与原数据差异:

print(df['Age category'].value_counts(normalize=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:45:48