5 умных способов заполнить значения NaN в столбце, используя данные из другого столбца

Обработка пропущенных значений — распространенная проблема при анализе данных. Один из эффективных подходов — заполнить эти пропущенные значения (NaN) значениями из других столбцов набора данных. В этой статье блога мы рассмотрим пять умных методов выполнения этой задачи. Мы предоставим простые для понимания примеры кода и объясним каждый метод на разговорном языке. Итак, приступим!

Метод 1: использование функции fillna()
Функция fillna() в pandas — это удобный инструмент для замены пропущенных значений. Чтобы заполнить значения NaN в определенном столбце, используя данные из другого столбца, вы можете просто передать в функцию столбец, который хотите использовать в качестве замены. Вот пример:

import pandas as pd
# Load the dataset
df = pd.read_csv('your_dataset.csv')
# Fill NaN values in 'column1' with values from 'column2'
df['column1'].fillna(df['column2'], inplace=True)

Метод 2: применение метода fillna() со словарем
Вы также можете использовать словарь, чтобы указать разные значения замены для разных столбцов. Этот метод позволяет настроить значения заполнения для каждого столбца. Вот как это можно сделать:

# Specify replacement values using a dictionary
fill_values = {'column1': df['column3'], 'column2': df['column4']}
# Fill NaN values using the dictionary
df.fillna(fill_values, inplace=True)

Метод 3: прямое или обратное заполнение с помощью ffill() или bfill()
Если у вас есть столбец, в котором значения NaN встречаются после ненулевых значений, вы можете использовать прямое заполнение (ffill) или обратное заполнение (bfill). для распространения последнего известного значения вперед или назад соответственно. Вот пример:

# Forward fill NaN values in 'column1'
df['column1'].fillna(method='ffill', inplace=True)
# Backward fill NaN values in 'column2'
df['column2'].fillna(method='bfill', inplace=True)

Метод 4: Интерполяция с помощью interpolate()
Интерполяция – это метод, который оценивает недостающие значения на основе существующих точек данных. В pandas вы можете использовать метод interpolate() для выполнения линейной интерполяции. Вот как это можно применить:

# Perform linear interpolation on 'column1'
df['column1'].interpolate(method='linear', inplace=True)

Метод 5: индивидуальная замена с использованием функции
Для более сложных сценариев вы можете определить пользовательскую функцию для определения значений замены на основе конкретных условий. Вот пример замены значений NaN в «столбце 1» на значения в «столбце 2»:

# Define a custom function for replacement
def custom_fill(row):
    if pd.isna(row['column1']):
        return row['column2']
    else:
        return row['column1']
# Apply the custom function to fill NaN values
df['column1'] = df.apply(custom_fill, axis=1)

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