В этом руководстве по Python мы изучим несколько способов удаления значений NaN из списка, используя встроенные методы и разные способы.

В Python NaN означает «не число». Значение NaN указывает на отсутствующие или неопределенные значения набора данных. Давайте посмотрим, как мы будем удалять значения NaN, используя цикл, понимание списка, метод filter(), isnan() из математической библиотеки и встроенный метод библиотек Numpy и Pandas.

Содержание

С помощью цикла For

Цикл for в Python — это распространенный и эффективный способ удаления значений NaN из списка.

Пример:

original_data = [1, 2, 3, 4, float('nan'), 6]
cleaned_data = []
for x in original_data:
    if x == x:
        cleaned_data.append(x)
print(cleaned_data)

В этом коде мы перебираем каждый элемент списка original_data в Python. Условие if x == x проверяет, не является ли элемент NaN (поскольку NaN не равен самому себе).

Если условие истинно, мы добавляем элемент в список cleaned_data в Python.

# When it iterates to NaN == NaN, then it will return False 
if x == x:
        cleaned_data.append(x)

Выход:

[1, 2, 3, 4, 6]

Ниже приведен снимок экрана, на котором запечатлен результат после реализации кода в редакторе Python.

С помощью цикла For

С помощью List Comprehension

Понимание списков — это краткий и элегантный способ создания списков в Python. Он предлагает более компактный синтаксис по сравнению с циклами в контексте удаления значений NaN из списка.

Код:

employee_age = [42, 35, float('nan'), 26, float('nan'), 28]
filtered_list = [x for x in employee_age if x == x]
print(filtered_list)

Мы используем ту же логику, что и в предыдущем примере, используя понимание списков в Python с меньшим количеством строк кода и более быстрым подходом.

Выход:

[42, 35, 26, 28]

Полученный результат показан на снимке экрана ниже после запуска кода в редакторе Python.

С помощью List Comprehension 

Используя метод filter()

Метод filter() — это встроенная функция Python, которая применяет указанную функцию к каждому элементу коллекции и возвращает итератор, содержащий только те элементы, для которых функция возвращает значение True.

Код:

week_sales = [5000, 8000, float('nan'), 2000, float('nan'), 3000, 9000]
filtered_list = list(filter(lambda x: x == x, week_sales ))
print(filtered_list)

Метод filter() в Python удаляет значения NaN из списка Week_sales, применяя лямбда-функцию, которая проверяет каждый элемент на равенство самому себе.

Поскольку NaN не равно самому себе, лямбда-функция в Python отфильтровывает значения NaN. Затем filtered_list преобразуется обратно в список для дальнейшей обработки.

Выход:

[5000, 8000, 2000, 3000, 9000]

Ниже приведен снимок экрана, на котором показаны выходные данные после реализации кода в редакторе Python.

С помощью функции filter()

С помощью математического модуля isnan()

Чтобы удалить значения NaN из списка Python, мы можем использовать функцию isnan(), которая является встроенным методом математического модуля.

Он проверит все элементы и вернет True, где найдет NaN. Давайте создадим программу для удаления значений nan с помощью метода isnan() в Python.

from math import isnan

original_list = [1, 2, float('nan'), 4, float('nan'), 6]
cleaned_list = []
for i in original_list:
    if not isnan(i):
        cleaned_list+=[i]

print(cleaned_list)

Я инициализировал список original_list в Python числовыми значениями, включая значения NaN, которые представляет float (‘nan’).

Затем выполните итерацию по каждому элементу i в original_list. Функция isnan() в Python используется для проверки того, не является ли i значением NaN.

Выход:

[1, 2, 4, 6]

На снимке экрана ниже представлен результат, полученный после выполнения кода в редакторе Python.

С помощью математического модуля isnan() 

Удаление значения NaN из массива Numpy

Чтобы удалить значения NaN из списка в Python из массива NumPy, мы будем использовать метод isnan() библиотеки numpy, чтобы проверить, является ли элемент NaN или нет, и вернем True или False в зависимости от того, является ли элемент NaN.

Если элемент массива имеет значение NaN, он вернет значение True.

Код:

import numpy as np
from numpy import nan
data = np.array([5, 12, nan, 7,nan,9])
 
filtered_data = data[np.logical_not(np.isnan(data))]
print(filtered_data)

Мы использовали функцию isnan() NumPy в Python для идентификации значений NaN в данных массива. Функция np.ologic_not() используется для отрицания этого результата.

Выход:

[ 5. 12.  7.  9.]

Примечание. Чтобы использовать встроенные функции, в вашей системе должна быть установлена библиотека Python NumPy.

Удаление значения NaN из массива Numpy

Как удалить из списка в Pandas

Чтобы удалить NaN из списка с помощью Pandas Python, существует встроенная функция dropna(), которая напрямую удаляет значения NaN из серии, а затем вы можете преобразовать их в список с помощью метода tolist().

Код:

import pandas as pd
original_list = [1, 2, float('nan'), 4, float('nan'), 6]
series = pd.Series(original_list)
cleaned_list = series.dropna().tolist()
print(cleaned_list)

Мы использовали функцию dropna() в Pandas для удаления любых значений NaN из серии исходных списков, в результате чего получался cleaned_list. Наконец, функция tolist() в Python преобразует очищенную серию в формат списка.

Выход:

[1.0, 2.0, 4.0, 6.0]

Вот скриншот, сделанный после выполнения кода в редакторе Python.

Как удалить из списка в Pandas

Заключение

Здесь мы рассмотрели все различные способы удаления значения NaN из списка в Python с использованием цикла for, понимания списка, метода filter(), функции isnan() из математического модуля, метода isnan() из numpy и метода dropna() из Pandas. Каждый метод имеет свои преимущества и может быть выбран в зависимости от конкретных требований.

Добавить комментарий