winsorize#
- scipy.stats.mstats.winsorize(a, limits=None, inclusive=(True, True), inplace=False, axis=None, nan_policy='propagate')[Quelle]#
Gibt eine Winsorizierte Version des Eingabearrays zurück.
Die (limits[0])-t-kleinsten Werte werden auf das (limits[0])-te Perzentil gesetzt, und die (limits[1])-t-größten Werte werden auf das (1 - limits[1])-te Perzentil gesetzt. Maskierte Werte werden übersprungen.
- Parameter:
- aSequenz
Eingabearray.
- limits{None, Tupel aus float}, optional
Tupel der Prozentsätze, die auf jeder Seite des Arrays abgeschnitten werden sollen, bezogen auf die Anzahl der unmaskierten Daten. Wenn n die Anzahl der unmaskierten Daten vor dem Trimmen ist, werden die (n*limits[0])-t-kleinsten und die (n*limits[1])-t-größten Daten maskiert, und die Gesamtzahl der unmaskierten Daten nach dem Trimmen beträgt n*(1.-sum(limits)). Der Wert eines Limits kann auf None gesetzt werden, um ein offenes Intervall anzuzeigen.
- inclusive{(True, True) Tupel}, optional
Tupel, das angibt, ob die Anzahl der auf jeder Seite maskierten Daten abgeschnitten (True) oder gerundet (False) werden soll.
- inplace{False, True}, optional
Ob in place (True) winsorisiert werden soll oder eine Kopie verwendet werden soll (False).
- axis{None, int}, optional
Achse, entlang derer getrimmt werden soll. Wenn None, wird das gesamte Array getrimmt, aber seine Form wird beibehalten.
- nan_policy{‘propagate’, ‘raise’, ‘omit’}, optional
Definiert, wie mit NaN-Werten im Input umgegangen wird. Die folgenden Optionen sind verfügbar (Standard ist ‘propagate’)
‘propagate’: erlaubt NaN-Werte und kann diese überschreiben oder weitergeben.
‘raise’: löst einen Fehler aus
‘omit’: führt die Berechnungen unter Ignorierung von NaN-Werten durch
Hinweise
Diese Funktion wird angewendet, um die Auswirkungen möglicherweise fehlerhafter Ausreißer zu reduzieren, indem extreme Werte begrenzt werden.
Beispiele
>>> import numpy as np >>> from scipy.stats.mstats import winsorize
Ein gemischtes Array enthält ganze Zahlen von 1 bis 10.
>>> a = np.array([10, 4, 9, 8, 5, 3, 7, 2, 1, 6])
Die 10% der niedrigsten Werte (d. h.
1) und die 20% der höchsten Werte (d. h.9und10) werden ersetzt.>>> winsorize(a, limits=[0.1, 0.2]) masked_array(data=[8, 4, 8, 8, 5, 3, 7, 2, 2, 6], mask=False, fill_value=999999)