Эффективные методы заполнения строк менее часто встречающимися записями с использованием Pandas

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

Метод 1: использование вменения режима
Пример кода:

import pandas as pd
# Create a DataFrame with missing values
data = {'A': [1, 1, 2, None, None],
        'B': [2, None, 2, 3, 3],
        'C': [1, 2, 1, None, None]}
df = pd.DataFrame(data)
# Fill missing values with the mode of each column
df = df.apply(lambda x: x.fillna(x.mode()[0]))

Объяснение:
Этот метод заменяет пропущенные значения режимом (наиболее часто встречающимся значением) каждого столбца в DataFrame. Функция fillna()используется вместе с функцией mode()для расчета режима для каждого столбца и соответствующего заполнения пропущенных значений.

Метод 2: использование случайной выборки
Пример кода:

import pandas as pd
import numpy as np
# Create a DataFrame with missing values
data = {'A': [1, 1, 2, None, None],
        'B': [2, None, 2, 3, 3],
        'C': [1, 2, 1, None, None]}
df = pd.DataFrame(data)
# Get the least frequently occurring value in each column
least_frequent = df.apply(lambda x: x.value_counts().idxmin())
# Fill missing values with random sampling from the least frequent value
for column in df.columns:
    df[column].fillna(pd.Series(np.random.choice(least_frequent[column], size=len(df))), inplace=True)

Объяснение:
Этот метод определяет наименее часто встречающееся значение в каждом столбце с помощью функции value_counts(). Затем он заполняет недостающие значения случайной выборкой из наименее частого значения. Функция np.random.choice()используется для генерации случайных выборок наименее частого значения, а функция fillna()используется для замены пропущенных значений этими выборками.

Метод 3: использование пользовательского вменения
Пример кода:

import pandas as pd
# Create a DataFrame with missing values
data = {'A': [1, 1, 2, None, None],
        'B': [2, None, 2, 3, 3],
        'C': [1, 2, 1, None, None]}
df = pd.DataFrame(data)
# Define a custom imputation function
def custom_impute(column):
    unique_values = column.dropna().unique()
    least_frequent = min(unique_values, key=list(column.dropna()).count)
    return column.fillna(least_frequent)
# Apply the custom imputation function to each column
df = df.apply(custom_impute)

Объяснение:
Этот метод предполагает определение пользовательской функции вменения, которая определяет наименее часто встречающееся значение в каждом столбце путем подсчета вхождений каждого уникального значения. Затем функция заполняет пропущенные значения наименее частым значением с помощью функции fillna(). Наконец, к каждому столбцу применяется пользовательская функция вменения с помощью функции apply().

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