如何median為泰坦尼克號數(shù)據(jù)集填充類似行的缺失值?我有一Age列有 80 個缺失值,我想通過取其他列的相似行的中位數(shù)來填充這些缺失值。['SibSp', 'Parch', 'Pclass']假設這個例如: Age SibSp Parch Pclass0 28 2 1 21 NaN 2 1 22 30 3 3 13 40 4 3 34 30 2 1 25 40 2 1 2現(xiàn)在我想,以填補NaN在Age考慮其他三列類似的值列。在這種情況下,我有三行樣本值作為第 1 行。 Age SibSp Parch Pclass0 28 2 1 24 30 2 1 25 40 2 1 2Agecol的中位數(shù)是 30。所以用 30 填充 NaN。所需的輸出。 Age SibSp Parch Pclass0 28 2 1 21 30 2 1 2 # Fill with median of those above three rows.2 30 3 3 13 40 4 3 34 30 2 1 25 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或其他東西,但我無法弄清楚。任何人都可以幫忙嗎?謝謝你。
1 回答

繁星淼淼
TA貢獻1775條經(jīng)驗 獲得超11個贊
使用GroupBy.transform退貨median與相同尺寸Series和原版一樣DataFrame,所以有可能使用fillna:
med = df.groupby(['SibSp', 'Parch', 'Pclass'])['Age'].transform('median')
df['Age'] = df['Age'].fillna(med)
或使用 lambda 函數(shù)的類似解決方案:
df['Age'] = (df.groupby(['SibSp', 'Parch', 'Pclass'])['Age']
.transform(lambda x: x.fillna(x.median())))
print (df)
Age SibSp Parch Pclass
0 28.0 2 1 2
1 30.0 2 1 2
2 30.0 3 3 1
3 40.0 4 3 3
4 30.0 2 1 2
5 40.0 2 1 2
添加回答
舉報
0/150
提交
取消