微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过训练集的平均值填充组中测试的缺失值

如何解决通过训练集的平均值填充组中测试的缺失值

我有两个数据框,traintesttest 集的列上有缺失值。

import numpy as np
import pandas as pd

train = [[0,1],[0,2],3],7],[1,5],2]]
test = [[0,0],np.nan],np.nan]]

train = pd.DataFrame(train,columns = ['A','B'])
test = pd.DataFrame(test,'B'])

测试集在 B 列上有两个缺失值。如果 groupby 列是 A

  • 如果插补策略为 mode,则应使用 72 对缺失值进行插补。
  • 如果插补策略为 mean,则缺失值应为 (1+2+3+7+7)/5 = 4(3+5+2+2)/4 = 3

这样做的好方法是什么?

question 是相关的,但仅使用一个数据帧而不是两个。

解决方法

IIUC,这是一种方法:

from statistics import mode

test_mode = test.set_index('A').fillna(train.groupby('A').agg(mode)).reset_index()
test_mean = test.set_index('A').fillna(train.groupby('A').mean()).reset_index()

如果你想要一个函数:

from statistics import mode

def evaluate_nan(strategy= 'mean'):
    return test.set_index('A').fillna(train.groupby('A').agg(strategy)).reset_index()

test_mean = evaluate_nan()
test_mode = evaluate_nan(strategy = mode)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。