通过从现有分布中抽样来估算缺失值

时间:2016-11-22 08:30:47

标签: python pandas machine-learning scikit-learn data-science

缺少值是数据分析中的常见问题。一种常见的策略似乎是缺失值被从现有值分布中随机抽样的值所取代。

是否有Python库代码可以方便地在数据框上执行此预处理步骤?据我所知,sklearn.preprocessing模块不提供此策略。

1 个答案:

答案 0 :(得分: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不考虑这个可能会产生不切实际的例子。