我正在尝试在测试集上估算缺失值,并希望使用熊猫request()->route()->getName()
语句对从训练集中得出的组均值使用相同的估算。
我熟悉groupby
方法,但是不知道如何在不同数据集中使用其输出。
现在,这就是我的训练集:
transform
transformer = train.groupby('BldgType')['LotFrontage'].transform('mean')
train['LotFrontage'] = train['LotFrontage'].fillna(transformer)
的结果如下:
这些是我想用来估算测试集上缺失值的结果。
以下内容不起作用,因为它使用训练集中的索引来推断值应该是什么,而不是测试集:
groupby statement
答案 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”列。