Эффективные методы удаления квазипостоянных столбцов в кадре данных Pandas

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

Метод 1: Порог отклонения
Метод порога отклонения — это простой подход к идентификации и удалению квазипостоянных столбцов. Он вычисляет дисперсию для каждого столбца и удаляет те, у которых дисперсия ниже определенного порога.

import pandas as pd
from sklearn.feature_selection import VarianceThreshold
def remove_quasi_constant(df, threshold):
    selector = VarianceThreshold(threshold=threshold)
    selector.fit(df)
    quasi_constant_mask = selector.get_support()
    quasi_constant_columns = df.columns[~quasi_constant_mask]
    df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.01)

Метод 2: подсчет уникальных значений
Другой подход заключается в подсчете количества уникальных значений в каждом столбце и удалении тех, у которых их мало. Низкое значение указывает на то, что в столбце преобладает одно значение или небольшой набор значений.

def remove_quasi_constant(df, threshold):
    quasi_constant_columns = []
    total_rows = df.shape[0]

    for column in df.columns:
        value_counts = df[column].value_counts()
        dominant_value_count = value_counts.iloc[0]
        dominant_value_ratio = dominant_value_count / total_rows

        if dominant_value_ratio >= threshold:
            quasi_constant_columns.append(column)

    df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.95)

Метод 3: Корреляция с целевой переменной
Если у вас есть целевая переменная, вы можете вычислить корреляцию между каждым признаком и целевой переменной. Если столбец имеет низкую корреляцию, вероятно, он содержит мало прогнозной информации и его можно удалить.

def remove_quasi_constant(df, threshold):
    target_variable = 'target'  # Replace with the actual name of your target variable
    quasi_constant_columns = []

    for column in df.columns:
        correlation = df[column].corr(df[target_variable])

        if abs(correlation) < threshold:
            quasi_constant_columns.append(column)

    df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.1)

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