Освоение очистки данных в Python: заполните пробелы массивами NumPy!

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

Метод 1. Заполните определенное значение
Самый простой способ обработки пропущенных значений — заполнить их определенным значением по вашему выбору. Например, если вы хотите заменить все пропущенные значения нулями, вы можете использовать метод numpy.fill:

import numpy as np
# Create a sample NumPy array
arr = np.array([1, 2, np.nan, 4, np.nan, 6])
# Fill missing values with zero
filled_arr = np.nan_to_num(arr, nan=0)
print(filled_arr)

Выход:

[1. 2. 0. 4. 0. 6.]

Метод 2. Заполнение средним значением или медианой
Другой распространенный подход — замена пропущенных значений средним или медианой непропущенных значений в массиве. Для этой цели в NumPy предусмотрены функции nanmeanи nanmedian:

import numpy as np
# Create a sample NumPy array
arr = np.array([1, 2, np.nan, 4, np.nan, 6])
# Fill missing values with the mean
mean_filled_arr = np.nanmean(arr)
# Fill missing values with the median
median_filled_arr = np.nanmedian(arr)
print(mean_filled_arr)
print(median_filled_arr)

Выход:

3.25
3.0

Метод 3: прямое или обратное заполнение
Иногда бывает полезно заполнить пропущенные значения предыдущим или следующим непропущенным значением в массиве. Этот метод известен как прямое заполнение (ffill) и обратное заполнение (bfill). Мы можем добиться этого, используя функцию numpy.nan_to_numвместе с библиотекой pandas:

import numpy as np
import pandas as pd
# Create a sample NumPy array
arr = np.array([1, np.nan, 3, np.nan, 5])
# Create a pandas DataFrame
df = pd.DataFrame(arr)
# Forward fill missing values
forward_filled_arr = df.fillna(method='ffill').values.flatten()
# Backward fill missing values
backward_filled_arr = df.fillna(method='bfill').values.flatten()
print(forward_filled_arr)
print(backward_filled_arr)

Выход:

[1. 1. 3. 3. 5.]
[1. 3. 3. 5. 5.]

Метод 4: Интерполяция
Интерполяция – это метод, при котором пропущенные значения заполняются на основе существующих вокруг них значений. NumPy предоставляет функцию numpy.interp, которая позволяет нам выполнять линейную или полиномиальную интерполяцию:

import numpy as np
# Create a sample NumPy array
arr = np.array([1, np.nan, 3, np.nan, 5])
# Perform linear interpolation
linear_interpolated_arr = np.interp(np.arange(len(arr)), np.where(~np.isnan(arr))[0], arr[~np.isnan(arr)])
print(linear_interpolated_arr)

Выход:

[1. 2. 3. 4. 5.]

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

Теперь, когда вы изучили различные способы заполнения пропущенных значений в массивах NumPy, вы можете уверенно решать проблемы очистки данных и получать ценную информацию из своих наборов данных. Приятного кодирования!