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

如何按男女比例填充DataFrame中sex列缺失值并修改原数据集

Dataset value_counts()

问题原因

你之前代码失效的核心原因是使用了链式索引,pandas对链式索引返回的是数据集副本,所有修改不会作用到原DataFrame。

实现方案

步骤1:计算原数据男女比例&缺失值数量

# 统计非缺失值的男女分布
sex_dist = CleanedDF[CleanedDF['sex'] != 'NA']['sex'].value_counts(normalize=True)
female_pct = sex_dist['Female']
male_pct = sex_dist['Male']

# 统计需要填充的缺失值总数
na_count = CleanedDF['sex'].eq('NA').sum()

步骤2:按比例生成填充值并写入原数据集

import numpy as np

# 提取所有缺失值的行索引
na_idx = CleanedDF[CleanedDF['sex'] == 'NA'].index

# 按原男女比例随机生成填充值,设置随机种子可固定结果方便复现
np.random.seed(42)
fill_data = np.random.choice(['Female', 'Male'], size=na_count, p=[female_pct, male_pct])

# 直接通过loc写入原数据集,无链式索引,修改直接生效
CleanedDF.loc[na_idx, 'sex'] = fill_data

验证修改结果

# 查看剩余缺失值数量,应为0
print(CleanedDF['sex'].eq('NA').sum())
# 查看填充后的男女比例,和原有非缺失值比例一致
print(CleanedDF['sex'].value_counts(normalize=True))

注意事项

如果你的缺失值是pandas原生NaN而非字符串'NA',只需要把所有判断条件CleanedDF['sex'] == 'NA'替换为CleanedDF['sex'].isna()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:03