使用来自不同数据集的组均值填充一个数据集的缺失值

时间:2019-08-28 20:27:19

标签: python pandas pandas-groupby

我正在尝试在测试集上估算缺失值,并希望使用熊猫request()->route()->getName() 语句对从训练集中得出的组均值使用相同的估算。

我熟悉groupby方法,但是不知道如何在不同数据集中使用其输出。

现在,这就是我的训练集:

transform

transformer = train.groupby('BldgType')['LotFrontage'].transform('mean') train['LotFrontage'] = train['LotFrontage'].fillna(transformer) 的结果如下:

enter image description here

这些是我想用来估算测试集上缺失值的结果。

以下内容不起作用,因为它使用训练集中的索引来推断值应该是什么,而不是测试集:

groupby statement

1 个答案:

答案 0 :(得分:1)

一个技巧是将已分组的对象变成一个数据框,然后将其合并到测试数据框中:

设置数据:

train_data = [     
['A', 1],          
['A', 2],        
['A',2],        
['B',3],       
['B', 4],
['B', 4]
]
train_df = pd.DataFrame(train_data, columns=['group', 'value'])

test_data = [     
['A', 1],          
['A', np.nan],        
['A',np.nan],        
['B',3],       
['B', np.nan],
['B', np.nan]
]
test_df = pd.DataFrame(test_data, columns=['group', 'value'])

对训练数据进行分组:

group_mean_df = pd.DataFrame(train_df.groupby('group').value.mean()).rename(columns={'value':'group_mean'})

现在合并测试数据和组均值数据并填写na:

test_merged = test_df.merge(group_mean_df, left_on='group', right_on='group')
test_merged['value'] = test_merged['value'].fillna(test_merged['group_mean'])

然后,您可以根据需要删除“ group_mean”列。