NaN в Python

В мире науки о данных и аналитики встреча с отсутствующими данными — скорее правило, чем исключение. Отсутствующие значения могут исказить анализ, привести к неверным выводам и в целом нарушить ход обработки данных. Устранение таких пробелов имеет решающее значение для сохранения целостности вашего анализа. Цель этой статьи — познакомить вас с различными способами определения значений 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».