巴西女性谋杀数据集缺失值填充求助:按年份取均值
按年份均值填充quantity缺失值的高效思路指引
思路1:groupby+矢量化映射填充(优先测试)
- 核心逻辑:通过
groupby('year')计算各年份quantity的均值,再用矢量化方法(比如transform)直接将对应年份的均值匹配到缺失行 - 效率优势:pandas的groupby基于底层优化的矢量化运算,完全避开Python层面的循环,大数据集下速度远快于循环写法
- 关键提示:默认
mean()会自动忽略NaN,刚好契合需求;可以参考df['quantity'] = df.groupby('year')['quantity'].transform(lambda x: x.fillna(x.mean()))这类写法的核心逻辑
思路2:for循环遍历年份填充
- 核心逻辑:提取所有唯一年份,逐个筛选对应年份的数据,计算均值后填充该年份的缺失值
- 效率局限:Python循环在处理大样本时性能损耗明显,每次循环都要执行数据筛选、赋值等操作,远不如矢量化运算高效
- 适用场景:仅适合小数据集调试,或需要在填充时加入复杂自定义逻辑的场景(你的需求无需此操作)
额外优化考量
- 先验证各年份有效样本量:若某年份有效数据极少(比如仅1-2个非缺失值),均值填充偏差可能较大,可考虑结合
state等多维度分组(需结合业务逻辑判断) - 填充前统计缺失值分布:明确哪些年份缺失值占比高,评估均值填充的合理性
内容的提问来源于stack exchange,提问作者Gabriela Fernanda Kilpp
相关产品推荐
相关产品推荐

