如何使用Ibis用均值填充缺失值?含整体与分组填充场景
使用Ibis填充缺失值的两种方法
基于你提供的初始数据,以下是两种均值填充缺失值的实现方案:
1. 用列的整体均值填充NA
通过Ibis的fillna方法结合avg聚合函数,计算weight列的整体均值并填充缺失值:
# 计算weight列的整体均值 overall_mean = t.weight.avg() # 填充weight列的NA值 t_filled_overall = t.mutate(weight=_.weight.fillna(overall_mean))
填充后,NA值会被替换为所有非缺失值的均值((134+158+142+96)/4 = 132.5)。
2. 按fruit分组的均值填充NA
先按fruit分组计算每组的weight均值,再通过关联操作将分组均值匹配到原表,最后填充缺失值:
# 按fruit分组计算每组的weight均值 fruit_mean = t.group_by("fruit").agg(mean_weight=_.weight.avg()) # 关联原表与分组均值,填充NA后移除临时列 t_filled_grouped = t.left_join(fruit_mean, on="fruit").mutate( weight=_.weight.fillna(_.mean_weight) ).drop("mean_weight")
填充后,苹果组的NA会被替换为苹果组均值((134+158)/2 = 146),橙子组的NA会被替换为橙子组均值((142+96)/2 = 119)。
内容的提问来源于stack exchange,提问作者ianmcook
相关产品推荐
相关产品推荐

