【发布时间】:2018-10-30 05:41:12
【问题描述】:
我如何用相似的行median 为 Titanic 数据集填充缺失值?
我有一个Age 列,其中有 80 个缺失值,我想通过取其他列的类似行的中位数来填充这些缺失值。 ['SibSp', 'Parch', 'Pclass']
假设这个例如:
Age SibSp Parch Pclass
0 28 2 1 2
1 NaN 2 1 2
2 30 3 3 1
3 40 4 3 3
4 30 2 1 2
5 40 2 1 2
现在我想通过考虑其他三列中的相似值来填充Age 列中的NaN。在这种情况下,我有三行样本值作为第 1 行。
Age SibSp Parch Pclass
0 28 2 1 2
4 30 2 1 2
5 40 2 1 2
Age col 的中位数是 30。所以用 30 填充 NaN。
需要的输出.
Age SibSp Parch Pclass
0 28 2 1 2
1 30 2 1 2 # Fill with median of those above three rows.
2 30 3 3 1
3 40 4 3 3
4 30 2 1 2
5 40 2 1 2
这是我写的,但它不起作用。
# Filling missing values Of Age.
for i in combined.Age[combined.Age.isna()].index.tolist():
age_med = combined.Age.median()
mask1 = combined.SibSp.eq(combined.iloc[i].SibSp)
mask2 = combined.Parch.eq(combined.iloc[i].Parch)
mask3 = combined.Pclass.eq(combined.iloc[i].Pclass)
age_pred = combined.Age[mask1 & mask2 & mask3].median()
combined.iloc[i]['Age'] = age_pred
我确信有更好的方法可以使用groupby 或其他方式来实现,但我想不通。有人可以帮忙吗?
谢谢。
【问题讨论】:
标签: python python-3.x pandas