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