Выбросы – это неприятные данные, которые значительно отличаются от большей части вашего набора данных и могут нанести ущерб вашему анализу данных. К счастью, Python и мощная библиотека Pandas предоставляют различные методы для эффективного выявления и обработки выбросов. В этой статье блога мы рассмотрим несколько разговорных методов на примерах кода, которые помогут вам профессионально удалить выбросы из ваших данных.
Метод 1: использование Z-показателя
Z-показатель — это статистическая мера, которая количественно определяет, насколько далека точка данных от среднего значения распределения. Установив порог, мы можем идентифицировать выбросы на основе их Z-показателя. Давайте посмотрим, как это сделать с помощью Python и Pandas:
import pandas as pd
from scipy import stats
# Assuming 'df' is your DataFrame
z_scores = stats.zscore(df['column_name'])
threshold = 3 # Adjust as needed
df_no_outliers = df[(z_scores < threshold)]
Метод 2: Межквартильный размах (IQR)
IQR — еще один надежный статистический показатель, который определяет диапазон между первым квартилем (25-й процентиль) и третьим квартилем (75-й процентиль). Любая точка данных, превышающая определенное значение, кратное IQR, считается выбросом. Вот как это можно реализовать:
import pandas as pd
# Assuming 'df' is your DataFrame
Q1 = df['column_name'].quantile(0.25)
Q3 = df['column_name'].quantile(0.75)
IQR = Q3 - Q1
threshold = 1.5 # Adjust as needed
df_no_outliers = df[(df['column_name'] < (Q1 - threshold * IQR)) | (df['column_name'] > (Q3 + threshold * IQR))]
Метод 3: Винсоризация
Винсоризация — это метод, при котором экстремальные значения заменяются значениями, близкими к среднему значению или указанным процентилям. Это помогает смягчить влияние выбросов, не удаляя их полностью. Вот пример того, как Winsorize ваши данные:
import pandas as pd
from scipy.stats.mstats import winsorize
# Assuming 'df' is your DataFrame
winsorized_data = winsorize(df['column_name'], limits=[0.05, 0.05])
df['column_name'] = winsorized_data
Метод 4: Надежный Z-показатель
Надежный Z-показатель — это вариант Z-показателя, в котором используется робастная оценка среднего и стандартного отклонения. Он менее чувствителен к выбросам и может быть полезен в определенных сценариях. Давайте посмотрим, как это применить:
import pandas as pd
from statsmodels import robust
# Assuming 'df' is your DataFrame
median = df['column_name'].median()
median_absolute_deviation = robust.mad(df['column_name'])
threshold = 3 # Adjust as needed
df_no_outliers = df[abs(df['column_name'] - median) / median_absolute_deviation < threshold]
В этой статье мы рассмотрели несколько методов удаления выбросов из ваших данных с помощью Python и Pandas. Используя такие методы, как Z-показатель, межквартильный размах, винсоризация и устойчивый Z-показатель, вы можете эффективно выявлять выбросы в своих наборах данных и управлять ими. Помните, что очистка данных от выбросов имеет решающее значение для точного анализа и моделирования. Так что вперед, применяйте эти методы к своим наборам данных и раскройте потенциал чистых данных без выбросов в своих проектах по науке о данных.