В мире науки о данных и аналитики встреча с отсутствующими данными — скорее правило, чем исключение. Отсутствующие значения могут исказить анализ, привести к неверным выводам и в целом нарушить ход обработки данных. Устранение таких пробелов имеет решающее значение для сохранения целостности вашего анализа. Цель этой статьи — познакомить вас с различными способами определения значений NaN (Not a Number) в Python.
Если лень читать всю статью: для работы с пропущенными значениями используйте либо функцию isnan() из NumPy, либо метод .isna() из Pandas.
isnan() и .isna()
При работе с пропущенными значениями подход во многом зависит от структуры данных, с которой вы работаете.
Для одиночных значений или массивов используйте NumPy
Функция isnan() от NumPy идеально подходит для определения NaN в числовых массивах или одиночных значениях, предлагая простое и эффективное решение.
import numpy as np # Проверка одиночного значения my_missing_value = np.nan print(np.isnan(my_missing_value)) # Output: True # Проверка массива my_missing_array = np.array([1, np.nan, 3]) nan_array = np.isnan(my_missing_array) print(nan_array) # Output: [False True False]
Для датафреймов используйте Pandas
Для определения отсутствующих значений в объектах DataFrame или Series Pandas предоставляет такие методы, как .isna() и .isnull(). Их можно легко интегрировать в рабочие процессы анализа данных.
import pandas as pd
import numpy as np
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(my_dataframe.isna())
Когда вы запустите этот код, вывод покажет наличие NaN-значений в более интересном контексте:
Column1 Column2 0 False False 1 False True 2 True False
Разница между NaN и None
Понимание разницы между NaN и None очень важно в Python. NaN расшифровывается как «Not a Number» — «Не число». Это представление «не числа» с плавающей точкой, используемое в основном в числовых вычислениях.
None, в свою очередь, является объектом Python, представляющим отсутствие значения, сродни null в других языках. В то время как NaN используется в математических или научных вычислениях, None имеет более общее назначение, указывая на отсутствие данных.
4 способа проверить наличие NaN в Python
Навигация по набору данных для выявления отсутствующих значений — важный шаг в предварительной обработке данных. Давайте рассмотрим четыре практических метода проверки значений NaN в Python, продолжая уже использованные нами увлекательные примеры.
1. Проверка наличия NaN с помощью np.isnan()
Как мы видели ранее, NumPy предоставляет простой подход к определению NaN-значений как в одиночных значениях, так и в массивах, что очень важно для анализа числовых данных.
import numpy as np # Проверка одиночного значения print(np.isnan(np.nan)) # Output: True # Проверка массива my_array = np.array([1, 5, np.nan]) print(np.isnan(my_array)) # Output: [False False True]
2. Проверка наличия NaN с помощью pd.isna()
Pandas упрощает обнаружение значений NaN в структурах данных, от скаляров до сложных датафреймов, что делает ее неоценимой для задач манипулирования данными.
import pandas as pd
# Проверка одиночного значения
print(pd.isna(np.nan)) # Output: True
# Проверка pandas Series
my_series = pd.Series(["Python", np.nan, "The Best"])
print(my_series.isna()) # Output: [False True False]
# Проверка pandas DataFrame
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(pd.isna(my_dataframe)) # Выводит DataFrame с True для отсутствующих значений
3. Проверка наличия NaN в датафреймах с помощью методов Pandas .isna() или .isnull()
В датафреймах Pandas также имеются методы .isna() и .isnull(), позволяющие без труда определять отсутствующие значения в наборах данных, обеспечивая четкое представление о полноте данных.
import pandas as pd
# Создать датафрейм с отсутствующими значениями
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(my_dataframe.isna())
# Output:
# Column1 Column2
# 0 False False
# 1 False True
# 2 True False
print(my_dataframe.isnull())
# Output:
# Column1 Column2
# 0 False False
# 1 False True
# 2 True False
4. Проверка наличия NaN в датафреймах с помощью math.isnan()
Функция math.isnan() предлагает простое, но эффективное решение для проверки отдельных чисел. Она особенно полезна при работе с чистыми типами данных Python.
import math
# Предположим, значение my_number - это float или может быть конвертировано во float
my_number = float('nan')
print(math.isnan(my_number)) # Output: True
Заключение
Выявление и обработка значений NaN — это фундаментальный шаг в очистке и подготовке данных к анализу. Независимо от того, имеете ли вы дело с массивами, сериями или фреймами данных, очень важно знать инструменты и методы для работы с отсутствующими данными, доступные в Python.
Перевод статьи «Python NaN: 4 Ways to Check for Missing Values in Python».

