2016-11-22 5 views
1

Fehlende Werte sind ein häufiges Problem bei der Datenanalyse. Eine gemeinsame Strategie scheint zu sein, dass fehlende Werte durch Werte ersetzt werden, die zufällig aus der Verteilung bestehender Werte entnommen werden.Fehlende Werte durch Stichproben von der Verteilung bestehender Werte ableiten

Gibt es Python-Bibliothekscode, der diesen Vorverarbeitungsschritt auf einem Datenrahmen bequem durchführt? Soweit ich sehe, bietet das sklearn.preprocessing Modul diese Strategie nicht an.

+0

Sie können ['Beispiel'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sample.html) verwenden, um dies zu tun – EdChum

+2

statsmodels hat MICE (in Master und 0.8 rc), das die Vorhersage der mittleren Übereinstimmung implementiert, die imputierte Beobachtungen von Nachbarn auswählt, deren Nachbarschaft durch prädiktive Nähe definiert ist. – user333700

Antwort

2

Um aus einer Verteilung von vorhandenen Werten zu probieren, müssen Sie die Verteilung kennen. Wenn die Verteilung nicht bekannt ist, können Sie die Kerndichte-Schätzung verwenden, um sie anzupassen. Dieser Blog-Post hat einen schönen Überblick über Kernel-Density-Schätzungen für Python: http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/.

Es gibt eine Implementierung in scikit-lernen (siehe http://scikit-learn.org/stable/modules/density.html#kernel-density); sklearn's KernelDensity hat die .sample() Methode. Es gibt auch einen Kernel Density Estimator in statsmodels (http://statsmodels.sourceforge.net/devel/generated/statsmodels.nonparametric.kernel_density.KDEMultivariate.html); Es unterstützt kategorische Funktionen.

Eine andere Methode besteht darin, zufällig vorhandene Werte zu wählen, ohne zu versuchen, Werte zu erzeugen, die in einem Datensatz nicht zu sehen sind. Das Problem bei dieser Lösung ist, dass der Wert von anderen Werten in derselben Zeile abhängen kann, und "random.sample", ohne dies zu berücksichtigen, unrealistische Beispiele liefern kann.

Verwandte Themen