Выбросы могут существенно повлиять на результаты анализа и моделирования данных. При работе с несколькими столбцами в DataFrame pandas важно выявлять и удалять выбросы, чтобы обеспечить точную и надежную информацию. В этой статье мы рассмотрим несколько методов удаления выбросов в нескольких столбцах с помощью pandas, а также приведем примеры кода для каждого подхода.
Метод 1: Метод Z-показателя
Метод Z-показателя основан на стандартном отклонении точек данных. Он идентифицирует выбросы как точки данных, которые выходят за пределы указанного количества стандартных отклонений от среднего значения. Вот пример использования метода Z-score для удаления выбросов:
from scipy import stats
def remove_outliers_zscore(df, columns, threshold=3):
z_scores = stats.zscore(df[columns])
mask = (z_scores < -threshold) | (z_scores > threshold)
return df[~mask]
# Usage example
columns_to_check = ['column1', 'column2', 'column3']
df_cleaned = remove_outliers_zscore(df, columns_to_check)
Метод 2: Метод процентилей
Метод процентилей предполагает выявление выбросов на основе их положения в распределении данных. Он удаляет точки данных, которые находятся ниже указанного нижнего процентиля или выше указанного верхнего процентиля. Вот пример использования метода процентиля:
def remove_outliers_percentile(df, columns, lower_percentile=5, upper_percentile=95):
lower_bound = np.percentile(df[columns], lower_percentile, axis=0)
upper_bound = np.percentile(df[columns], upper_percentile, axis=0)
mask = (df[columns] >= lower_bound) & (df[columns] <= upper_bound)
return df[mask]
# Usage example
df_cleaned = remove_outliers_percentile(df, columns_to_check)
Метод 3: Метод межквартильного размаха (IQR)
Метод IQR использует межквартильный размах для выявления выбросов. Он рассчитывает диапазон между первым квартилем (25-й процентиль) и третьим квартилем (75-й процентиль) данных. Точки данных за пределами указанного диапазона считаются выбросами и могут быть удалены. Вот пример использования метода IQR:
def remove_outliers_iqr(df, columns, multiplier=1.5):
q1 = df[columns].quantile(0.25)
q3 = df[columns].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - (multiplier * iqr)
upper_bound = q3 + (multiplier * iqr)
mask = (df[columns] >= lower_bound) & (df[columns] <= upper_bound)
return df[mask]
# Usage example
df_cleaned = remove_outliers_iqr(df, columns_to_check)
Метод 4: Надежный метод Z-показателя
Надежный метод Z-показателя аналогичен методу Z-показателя, но он использует медиану и медианное абсолютное отклонение (MAD) вместо среднего и стандартного отклонения. Этот метод более устойчив к выбросам в данных. Вот пример использования надежного метода Z-score:
def remove_outliers_robust_zscore(df, columns, threshold=3):
median = df[columns].median()
mad = stats.median_abs_deviation(df[columns])
z_scores = 0.6745 * (df[columns] - median) / mad
mask = (z_scores < -threshold) | (z_scores > threshold)
return df[~mask]
# Usage example
df_cleaned = remove_outliers_robust_zscore(df, columns_to_check)
В этой статье мы рассмотрели четыре различных метода удаления выбросов в нескольких столбцах с помощью pandas. Метод Z-показателя, метод процентиля, метод IQR и надежный метод Z-показателя предоставляют различные подходы к обработке выбросов на основе статистических показателей. В зависимости от характеристик данных и конкретных требований вашего анализа вы можете выбрать наиболее подходящий метод очистки данных. Удаление выбросов – важный этап предварительной обработки данных, обеспечивающий более точные и надежные результаты в задачах анализа и моделирования данных.
Не забывайте всегда оценивать влияние удаления выбросов на ваш конкретный анализ и принимать обоснованные решения на основе контекста ваших данных.
Используя эти методы, вы можете повысить качество своих данных и получить более значимую информацию из вашего DataFrame pandas.