Изучение методов обнаружения выбросов для кадров данных Pandas

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

  1. Метод Z-показателя:
    Метод Z-показателя рассчитывает стандартный показатель (Z-показатель) для каждой точки данных путем вычитания среднего значения и деления его на стандартное отклонение данных. Точки данных с Z-показателями выше определенного порога считаются выбросами.
import pandas as pd
import numpy as np
def detect_outliers_zscore(data, threshold=3):
    z_scores = (data - data.mean()) / data.std()
    outliers = data[np.abs(z_scores) > threshold]
    return outliers
# Usage example
df = pd.DataFrame({'col1': [1, 2, 3, 4, 20, 21, 22, 23]})
outliers = detect_outliers_zscore(df['col1'])
print(outliers)
  1. Метод IQR.
    Метод межквартильного диапазона (IQR) использует разницу между 75-м и 25-м процентилями данных для выявления выбросов. Точки данных, выходящие за пределы определенного кратного IQR, считаются выбросами.
def detect_outliers_iqr(data, threshold=1.5):
    q25, q75 = np.percentile(data, [25, 75])
    iqr = q75 - q25
    lower_bound = q25 - (threshold * iqr)
    upper_bound = q75 + (threshold * iqr)
    outliers = data[(data < lower_bound) | (data > upper_bound)]
    return outliers
# Usage example
df = pd.DataFrame({'col1': [1, 2, 3, 4, 20, 21, 22, 23]})
outliers = detect_outliers_iqr(df['col1'])
print(outliers)
  1. Ограждения Тьюки.
    Метод ограждений Тьюки аналогичен методу IQR, но использует другой расчет порога. Точки данных за пределами нижнего и верхнего пределов считаются выбросами.
def detect_outliers_tukey(data):
    q25, q75 = np.percentile(data, [25, 75])
    iqr = q75 - q25
    lower_fence = q25 - (1.5 * iqr)
    upper_fence = q75 + (1.5 * iqr)
    outliers = data[(data < lower_fence) | (data > upper_fence)]
    return outliers
# Usage example
df = pd.DataFrame({'col1': [1, 2, 3, 4, 20, 21, 22, 23]})
outliers = detect_outliers_tukey(df['col1'])
print(outliers)
  1. Модифицированный метод Z-показателя.
    Модифицированный метод Z-показателя является надежной альтернативой стандартному методу Z-показателя. В расчетах используется медианное абсолютное отклонение (MAD) вместо стандартного отклонения.
def detect_outliers_modified_zscore(data, threshold=3.5):
    median = np.median(data)
    mad = np.median(np.abs(data - median))
    modified_z_scores = 0.6745 * (data - median) / mad
    outliers = data[np.abs(modified_z_scores) > threshold]
    return outliers
# Usage example
df = pd.DataFrame({'col1': [1, 2, 3, 4, 20, 21, 22, 23]})
outliers = detect_outliers_modified_zscore(df['col1'])
print(outliers)

В этой статье мы рассмотрели несколько методов обнаружения выбросов с помощью Pandas, включая методы Z-Score, IQR, заборы Тьюки и модифицированный Z-Score. Каждый метод имеет свои преимущества и ограничения, а выбор метода зависит от конкретных характеристик данных и решаемой проблемы. Применяя эти методы обнаружения выбросов, вы можете эффективно выявлять и обрабатывать выбросы в своих данных, что приводит к более точному анализу и моделям машинного обучения.

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