Анализ данных часто предполагает работу с пропущенными значениями, обычно представленными как NaN (не число). Однако бывают ситуации, когда нам нужно вычислить среднее значение только для ненулевых значений в наборе данных. В этой статье блога мы рассмотрим пять простых способов добиться этого с помощью Python и попутно предоставим примеры кода.
Метод 1: использование NumPy
NumPy — популярная библиотека для научных вычислений на Python. Он предоставляет удобную функцию под названием nanmean(), которая вычисляет среднее значение массива, игнорируя значения NaN. Вот пример:
import numpy as np
data = np.array([1, 2, np.nan, 4, 5])
mean = np.nanmean(data)
print(mean)
Выход: 3,0
Метод 2: использование Pandas
Pandas — это мощная библиотека для работы с данными, основанная на NumPy. Он предлагает простой способ вычисления среднего значения ненулевых значений с помощью функции mean(). Вот пример:
import pandas as pd
data = pd.Series([1, 2, np.nan, 4, 5])
mean = data.mean()
print(mean)
Выход: 3,0
Метод 3: использование понимания списка
Если вы предпочитаете более краткий подход, вы можете использовать понимание списка, чтобы отфильтровать значения NaN и вычислить среднее значение оставшихся значений. Вот пример:
data = [1, 2, np.nan, 4, 5]
filtered_data = [x for x in data if not np.isnan(x)]
mean = sum(filtered_data) / len(filtered_data)
print(mean)
Выход: 3,0
Метод 4: использование модуля статистики
Встроенный модуль статистики Python предоставляет различные статистические функции, включая mean(). Однако он не обрабатывает значения NaN напрямую. Мы можем использовать упомянутую ранее технику понимания списка, чтобы отфильтровать значения NaN перед вычислением среднего значения. Вот пример:
import statistics as stats
data = [1, 2, float('nan'), 4, 5]
filtered_data = [x for x in data if not math.isnan(x)]
mean = stats.mean(filtered_data)
print(mean)
Выход: 3,0
Метод 5: использование пользовательской функции
Если вам нужен больший контроль над процессом расчета среднего значения, вы можете создать пользовательскую функцию, которая обрабатывает значения NaN. Вот пример:
def mean_without_nan(data):
total = 0
count = 0
for value in data:
if not np.isnan(value):
total += value
count += 1
return total / count
data = [1, 2, np.nan, 4, 5]
mean = mean_without_nan(data)
print(mean)
Выход: 3,0
Вычисление среднего значения ненулевых значений в наборе данных — распространенная задача при анализе данных. В этой статье мы рассмотрели пять различных подходов к использованию Python, включая такие библиотеки, как NumPy и Pandas, а также пользовательские функции. Применяя эти методы, вы можете легко обрабатывать значения NaN и получать точные средние значения ваших данных.