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

如何使用Pandas DataFrame按现有比例插补分类列的缺失值?

如何用Pandas按现有类别比例填充分类列的缺失值?

当然可以!Pandas完全能轻松实现你的需求——在保留Refferer列已有字符串类别比例的前提下,自动填充所有NaN值,完美维持原数据的分布特征。下面是具体的实现步骤:

  • 第一步:先确认现有类别的占比
    首先我们需要提取Refferer列各分类的相对比例,用value_counts(normalize=True)就能直接获取:

    # 计算Refferer列每个类别的占比
    referrer_proportions = df['Refferer'].value_counts(normalize=True)
    # 打印出来确认比例是否符合预期
    print(referrer_proportions)
    

    这个操作会返回每个类别在非缺失数据中的相对频率,也就是你需要的比例基准。

  • 第二步:按比例生成填充值并填充
    接下来我们用numpy.random.choice根据刚才得到的比例,生成和缺失值数量匹配的填充值,再把这些值填入对应的NaN单元格:

    import numpy as np
    
    # 定位所有Refferer列缺失值的索引
    missing_indices = df[df['Refferer'].isna()].index
    
    # 按照原类别比例随机抽取对应数量的填充值
    fill_values = np.random.choice(
        referrer_proportions.index,  # 可选的类别列表
        size=len(missing_indices),   # 需要填充的缺失值数量
        p=referrer_proportions.values  # 每个类别的抽取概率(即原比例)
    )
    
    # 将生成的填充值填入缺失位置
    df.loc[missing_indices, 'Refferer'] = fill_values
    
  • 第三步:验证填充结果
    填充完成后,你可以再检查一下类别比例,确认和原数据的分布一致(因为是随机抽样,可能会有极微小的误差,但样本量越大越接近原比例):

    # 查看填充后的类别比例
    print(df['Refferer'].value_counts(normalize=True))
    

这个方法既简单又高效,完全能满足你保留类别比例的要求。

内容的提问来源于stack exchange,提问作者Víctor Mouriño

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:18:11