Как очистить выборку от выбросов с использованием Python

Вы можете очистить выборку от выбросов в Python, используя различные статистические методы. Один из таких методов - это использование межквартильного размаха (IQR). IQR представляет собой разницу между верхним и нижним квартилями выборки. Выбросы определяются как значения, находящиеся вне диапазона 1.5 * IQR.

Вот пример кода, показывающий, как очистить выборку от выбросов с использованием метода IQR:


import numpy as np

def remove_outliers(data):
    q1 = np.percentile(data, 25)
    q3 = np.percentile(data, 75)
    iqr = q3 - q1
    lower_bound = q1 - 1.5 * iqr
    upper_bound = q3 + 1.5 * iqr
    cleaned_data = [x for x in data if x >= lower_bound and x <= upper_bound]
    return cleaned_data

data = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 100, 200, 300]
cleaned_data = remove_outliers(data)
print(cleaned_data)

В этом примере мы используем библиотеку NumPy для вычисления квартилей и IQR. Функция remove_outliers принимает список значений data и возвращает очищенные данные, исключая выбросы.

Вы можете использовать этот подход для очистки выборки от выбросов в своем собственном проекте на Python. Удачи!

Детальный ответ

Как очистить выборку от выбросов в Python

Выбросы, или аномалии, представляют собой значения данных, которые значительно отличаются от остальных значений в выборке. Они могут вызываться ошибками измерения, случайными или систематическими ошибками, или же наличием необычных условий в данных. Очистка выборки от выбросов является важной задачей для обеспечения точности и надежности анализа данных.

Методы очистки выборки от выбросов

Существует несколько методов, которые можно использовать для очистки выборки от выбросов:

  1. Метод межквартильного расстояния (IQR)

Метод межквартильного расстояния основан на межквартильном расстоянии, которое представляет собой разницу между верхним (75%) и нижним (25%) квартилями выборки. Выбросами считаются значения, которые находятся вне диапазона < Q1 - 1.5 * IQR, Q3 + 1.5 * IQR>, где < Q1> и < Q3> - это первый и третий квартили соответственно, а < IQR> - межквартильное расстояние.


import numpy as np

def remove_outliers_iqr(data):
    Q1 = np.percentile(data, 25)
    Q3 = np.percentile(data, 75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    cleaned_data = [x for x in data if x >= lower_bound and x <= upper_bound]
    return cleaned_data

data = [1, 2, 3, 4, 5, 100]
cleaned_data = remove_outliers_iqr(data)
print(cleaned_data)
    

В этом примере мы создаем функцию < remove_outliers_iqr>, которая принимает на вход массив данных. Мы сначала вычисляем первый (< Q1>) и третий (< Q3>) квартили, а затем вычисляем < IQR>. Затем мы определяем нижнюю границу (< lower_bound>) и верхнюю границу (< upper_bound>), и используем их для фильтрации выборки, оставляя только значения, которые находятся внутри этого диапазона. В результате мы получаем очищенные данные без выбросов.

  1. Метод Z-оценки

Метод Z-оценки основан на стандартной оценке Z-оценки для каждого значения выборки. Значения, которые отклоняются от среднего значения выборки на заданное количество стандартных отклонений, считаются выбросами. Обычно значения, находящиеся вне диапазона < mean - k * std, mean + k * std>, считаются выбросами, где < mean> и < std> - среднее значение и стандартное отклонение выборки соответственно, а < k> - заданное количество стандартных отклонений.


def remove_outliers_zscore(data, k):
    mean = np.mean(data)
    std = np.std(data)
    lower_bound = mean - k * std
    upper_bound = mean + k * std
    cleaned_data = [x for x in data if x >= lower_bound and x <= upper_bound]
    return cleaned_data

data = [1, 2, 3, 4, 5, 100]
cleaned_data = remove_outliers_zscore(data, 2)
print(cleaned_data)
    

В этом примере мы создаем функцию < remove_outliers_zscore>, которая принимает на вход массив данных и количество стандартных отклонений (< k>). Мы сначала вычисляем среднее значение (< mean>) и стандартное отклонение (< std>) выборки. Затем мы определяем нижнюю границу (< lower_bound>) и верхнюю границу (< upper_bound>), и используем их для фильтрации выборки. В результате мы получаем очищенные данные без выбросов.

Выбор метода очистки

Выбор метода очистки выборки от выбросов зависит от контекста и самой выборки. Какой метод использовать, зависит от распределения данных и характера выбросов. Оба метода, описанные выше, являются популярными и применяемыми в разных ситуациях.

Если распределение данных в выборке более или менее нормальное и выбросов не очень много, метод Z-оценки может быть хорошим выбором. Однако, если распределение данных смещено или имеется значительное количество выбросов, метод межквартильного расстояния может быть предпочтительнее.

Заключение

Очистка выборки от выбросов является важным этапом при анализе данных. Методы, такие как межквартильное расстояние и Z-оценка, позволяют исключить значения, которые сильно отклоняются от общей тренда данных. Выбор метода зависит от контекста и распределения данных в выборке. Полагаясь на эти методы, можно повысить точность и надежность анализа данных в Python.

Видео по теме

Методы обнаружения выбросов | Вебинар Яна Пиле | karpov.courses

Фильтрация данных в Pandas | Анатолий Карпов | karpov.courses

Предобработка данных

Похожие статьи:

Как вывести массив без запятых в Python: легкий способ для начинающих

Как изменить версию Python по умолчанию: руководство для всех уровней

как определить список в python: полное руководство для начинающих

Как очистить выборку от выбросов с использованием Python

⚙️ Как включить Python 3 в командной строке: пошаговая инструкция для начинающих

Как проверить, установлен ли Python на Mac OS? Инструкция для начинающих

🔓 Как открыть файл excel в питоне: подробное руководство и код примеры