В мире науки о данных и аналитики встреча с отсутствующими данными — скорее правило, чем исключение. Отсутствующие значения могут исказить анализ, привести к неверным выводам и в целом нарушить ход обработки данных. Устранение таких пробелов имеет решающее значение для сохранения целостности вашего анализа. Цель этой статьи — познакомить вас с различными способами определения значений NaN (Not a Number) в Python.
Если лень читать всю статью: для работы с пропущенными значениями используйте либо функцию isnan() из NumPy, либо метод .isna() из Pandas.
При работе с пропущенными значениями подход во многом зависит от структуры данных, с которой вы работаете.
Функция 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]
Для определения отсутствующих значений в объектах 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 очень важно в Python. NaN расшифровывается как «Not a Number» — «Не число». Это представление «не числа» с плавающей точкой, используемое в основном в числовых вычислениях.
None, в свою очередь, является объектом Python, представляющим отсутствие значения, сродни null в других языках. В то время как NaN используется в математических или научных вычислениях, None имеет более общее назначение, указывая на отсутствие данных.
Навигация по набору данных для выявления отсутствующих значений — важный шаг в предварительной обработке данных. Давайте рассмотрим четыре практических метода проверки значений NaN в Python, продолжая уже использованные нами увлекательные примеры.
Как мы видели ранее, 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]
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 для отсутствующих значений
В датафреймах 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
Функция 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».
Управление памятью - важный, но часто упускаемый из виду аспект программирования. При неправильном подходе оно…
Как возникает круговой импорт? Эта ошибка импорта обычно возникает, когда два или более модуля, зависящих…
Вы когда-нибудь оказывались в ситуации, когда скрипт на Python выполняется очень долго и вы задаетесь…
В этом руководстве мы разберем все, что нужно знать о символах перехода на новую строку…
Блок if __name__ == "__main__" в Python позволяет определить код, который будет выполняться только при…
Давайте разберем, как настроить модульные тесты для экземпляров классов. Мы напишем тесты для проверки функциональности…