通过训练集的均值填充组中测试的缺失值
Filling missing values of test from groupby mean of training set
我有两个数据帧,train
和 test
。 test
集在某列上有缺失值。
import numpy as np
import pandas as pd
train = [[0,1],[0,2],[0,3],[0,7],[0,7],[1,3],[1,5],[1,2],[1,2]]
test = [[0,0],[0,np.nan],[1,0],[1,np.nan]]
train = pd.DataFrame(train, columns = ['A','B'])
test = pd.DataFrame(test, columns = ['A','B'])
测试集在 B
列上有两个缺失值。如果groupby列是A
- 如果插补策略是
mode
,那么缺失值应该用7
和2
来插补。
- 如果插补策略是
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)
我有两个数据帧,train
和 test
。 test
集在某列上有缺失值。
import numpy as np
import pandas as pd
train = [[0,1],[0,2],[0,3],[0,7],[0,7],[1,3],[1,5],[1,2],[1,2]]
test = [[0,0],[0,np.nan],[1,0],[1,np.nan]]
train = pd.DataFrame(train, columns = ['A','B'])
test = pd.DataFrame(test, columns = ['A','B'])
测试集在 B
列上有两个缺失值。如果groupby列是A
- 如果插补策略是
mode
,那么缺失值应该用7
和2
来插补。 - 如果插补策略是
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)