2016-11-22 35 views
1

缺失值是數據分析中的常見問題。一種常見的策略似乎是缺失值被從現有值的分佈中隨機抽取的值所取代。通過從現有分佈的分佈抽樣來推斷缺失值

是否有Python庫代碼可以方便地在數據框上執行此預處理步驟?據我看到sklearn.preprocessing模塊不提供這種策略。

+0

你可以使用['sample'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sample.html)來做到這一點 – EdChum

+2

statsmodels有MICE(master和0.8 rc)實現預測平均匹配,該算法選擇鄰域由預測親密度定義的鄰域估計觀測值。 – user333700

回答

2

要從現有值的分佈中抽樣,您需要知道分佈。如果分佈未知,可以使用內核密度估計來適應它。本博客文章對Python的內核密度估計實現進行了很好的概述:http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/

在scikit-learn中有一個實現(請參閱http://scikit-learn.org/stable/modules/density.html#kernel-density); sklearn的KernelDensity有.sample()方法。 statsmodels中還有一個核密度估計器(http://statsmodels.sourceforge.net/devel/generated/statsmodels.nonparametric.kernel_density.KDEMultivariate.html);它支持分類功能。

另一種方法是選擇隨機存在的值,而不嘗試生成未在數據集中看到的值。這個解決方案的問題在於,值可能取決於同一行中的其他值,而random.sample沒有考慮到這一點,可能會產生不切實際的例子。