scipy.stats.mstats.

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. 9 und 10) 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)