winsorize#
- scipy.stats.mstats.winsorize(a, пределы=None, inclusive=(True, True), inplace=False, ось=None, nan_policy='propagate')[источник]#
Возвращает уинсоризованную версию входного массива.
Наименьшие (limits[0])-е значения устанавливаются в (limits[0])-й процентиль, а наибольшие (limits[1])-е значения устанавливаются в (1 - limits[1])-й процентиль. Маскированные значения пропускаются.
- Параметры:
- aпоследовательность
Входной массив.
- пределы{None, tuple of float}, опционально
Кортеж процентов для обрезки с каждой стороны массива относительно количества немаркированных данных, в виде чисел с плавающей точкой от 0. до 1. Обозначив n количество немаркированных данных до обрезки, (n*limits[0])-е наименьшее значение и (n*limits[1])-е наибольшее значение маркируются, а общее количество немаркированных данных после обрезки составляет n*(1.-sum(limits)). Значение одного предела может быть установлено в None, чтобы указать открытый интервал.
- inclusive{(True, True) кортеж}, опционально
Кортеж, указывающий, должно ли количество маскируемых данных с каждой стороны быть усечённым (True) или округлённым (False).
- inplace{False, True}, опционально
Производить ли винсоризацию на месте (True) или использовать копию (False)
- ось{None, int}, необязательно
Ось, вдоль которой производится обрезка. Если None, обрезается весь массив, но его форма сохраняется.
- nan_policy{'propagate', 'raise', 'omit'}, опционально
Определяет, как обрабатывать входные данные, содержащие nan. Доступны следующие варианты (по умолчанию 'propagate'):
‘propagate’: разрешает значения nan и может перезаписывать или распространять их
‘raise’: вызывает ошибку
'omit': выполняет вычисления, игнорируя значения nan
Примечания
Эта функция применяется для уменьшения влияния возможных ложных выбросов путем ограничения экстремальных значений.
Примеры
>>> import numpy as np >>> from scipy.stats.mstats import winsorize
Перемешанный массив содержит целые числа от 1 до 10.
>>> a = np.array([10, 4, 9, 8, 5, 3, 7, 2, 1, 6])
10% наименьших значений (т.е.,
1) и 20% самых высоких значений (т.е.,9и10) заменяются.>>> 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)