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

如何基于列中类别占比填充DataFrame的缺失值?

基于已有占比填充缺失值的实现方法

原始数据准备

先还原数据场景:

import pandas as pd
import numpy as np

col=['black','black','black','grey','white','grey','grey','nan','grey','black','black','red','nan','nan','nan','nan','black','black','white']
dd=pd.DataFrame({'color':col})
dd.replace('nan',np.NaN,inplace=True)

查看颜色占比

通过代码获取各颜色的占比:

color_proportions = dd['color'].value_counts(normalize=True)
print(color_proportions)

输出结果:

black    0.500000
grey     0.285714
white    0.142857
red      0.071429
Name: color, dtype: float64

按占比填充缺失值

利用numpy.random.choice根据占比概率随机填充缺失值,保证填充后的分布与原数据一致:

# 获取所有缺失值的索引标记
na_mask = dd['color'].isna()
# 提取颜色类别和对应的填充概率
color_categories = color_proportions.index
fill_probs = color_proportions.values
# 按概率完成缺失值填充
dd.loc[na_mask, 'color'] = np.random.choice(color_categories, size=na_mask.sum(), p=fill_probs)

填充完成后,可再次使用dd['color'].value_counts(normalize=True)验证分布,结果会与原占比基本一致(随机填充会有微小波动)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:50:31