Как я могу заполнить пропущенные значения похожими строками median
для титанового набора данных?
У меня есть столбец 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
Теперь я хочу заполнить столбец NaN
в Age
, учитывая аналогичное значение в других трех столбцах. В этом случае у меня есть три строки с примерами значений в качестве строки 1.
Age SibSp Parch Pclass
0 28 2 1 2
4 30 2 1 2
5 40 2 1 2
Медиана здесь для Age
col равна 30. Так что заполните NaN 30.
Требуемый выход .
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
или что-то еще, но я не мог понять это. Кто-нибудь может помочь?
Спасибо.