Pular para o conteúdo principal

Python NaN: Quatro maneiras de verificar valores ausentes no Python

Dá uma olhada em 4 maneiras de detectar valores NaN em Python, usando NumPy e Pandas. Aprenda as principais diferenças entre NaN e None para limpar e analisar dados de forma eficiente.
· 5 min leer

Explore com IA

No mundo da ciência de dados e da análise, encontrar dados ausentes é mais uma regra do que uma exceção. Os valores ausentes podem distorcer a análise, levar a conclusões erradas e, em geral, atrapalhar o fluxo do processamento de dados. Resolver essas lacunas é essencial para manter a integridade da sua análise. Este artigo quer te mostrar diferentes maneiras de identificar valores NaN (Not a Number) em Python.

A resposta curta: Use o NumPy’s isnan() função ou Pandas .isna() método

Quando você tá lidando com valores ausentes no Python, a abordagem depende muito da estrutura de dados com a qual você tá trabalhando.

Para valores únicos ou matrizes: Use o NumPy

A função isnan() do NumPy é perfeita pra identificar NaNs em matrizes numéricas ou valores únicos, oferecendo uma solução direta e eficiente. Aqui está ele em ação!

import numpy as np

# Single value check
my_missing_value = np.nan
print(np.isnan(my_missing_value))

# Output: True

# Array check
my_missing_array = np.array([1, np.nan, 3])
nan_array = np.isnan(my_missing_array)
print(nan_array)

# Output: [False  True False]

Para DataFrames: Use Pandas

O Pandas oferece métodos completos, como .isna() e .isnull(), para detectar valores ausentes em objetos DataFrame ou Series, integrando-se perfeitamente aos fluxos de trabalho de análise de dados.

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())

#    Column1  Column2
# 0    False    False
# 1    False     True
# 2     True    False

Quando você rodar esse código, o resultado vai mostrar a presença de valores NaN num contexto mais interessante, como mostrado acima.

A diferença entre NaN e None

Entender a diferença entre NaN e None é super importante em Python. NaN é uma representação em ponto flutuante de “Not a Number” (Não é um número), usada principalmente em cálculos numéricos. Já None é um objeto do Python que representa a ausência de um valor, tipo o null em outras linguagens. Enquanto NaN é usado em cálculos matemáticos ou científicos, “None” é mais genérico, indicando a falta de dados.

4 maneiras de verificar se tem NaN no Python

Navegar pelos conjuntos de dados para identificar valores ausentes é uma etapa crítica no pré-processamento de dados. Vamos ver quatro jeitos práticos de checar valores de NaN no Python, continuando com os exemplos legais que já usamos.

1. Verificando se há NaN usando np.isnan()

Como vimos antes, o NumPy oferece uma maneira simples de identificar valores e NaN es tanto em valores únicos quanto em matrizes, o que é essencial para a análise de dados numéricos.

import numpy as np

# Checking a single value
print(np.isnan(np.nan))

# Output: True

# Checking an array
my_array = np.array([1, 5, np.nan])
print(np.isnan(my_array))

# Output: [False False  True]

2. Verificando se NaN usando pd.isna()

O Pandas facilita a detecção de valores NaN em estruturas de dados, desde escalares até DataFrame complexos, o que o torna super útil para tarefas de manipulação de dados.

import numpy as np
import pandas as pd

# Checking a single value
print(pd.isna(np.nan))

# Output: True

# Checking a pandas Series
my_series = pd.Series(["Python", np.nan, "The Best"])
print(my_series.isna())

# Output:
# 0    False
# 1     True
# 2    False

# Checking a pandas DataFrame
my_dataframe = pd.DataFrame({
    'Column1': ["I", "Love", np.nan], 
    'Column2': ["Python", np.nan, "The Best"]
})

print(pd.isna(my_dataframe)) # Output a DataFrame with True for missing values

3. Verificando se NaN em DataFrames usando Pandas .isna() ou .isnull() métodos

Os DataFrame do Pandas também têm os métodos .isna() e .isnull() pra achar facilmente os valores que estão faltando nos conjuntos de dados, dando uma visão geral clara da integridade dos dados.

import numpy as np
import pandas as pd

# Create a dataframe with missing values
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. Verificando se NaN em DataFrames usando math.isnan()

Para verificações individuais de números, a função math.isnan() oferece uma solução simples, mas eficaz, especialmente quando se trata de tipos de dados Python puros.

import math

# Assuming my_number is a float or can be converted to one
my_number = float('nan')
print(math.isnan(my_number))

# Output: True

Considerações finais e recursos adicionais

Identificar e gerenciar valores NaN é uma etapa fundamental na limpeza e preparação dos seus dados para análise. Se você está trabalhando com matrizes, séries ou estruturas de dados, é essencial entender as ferramentas e métodos disponíveis no Python para lidar com dados ausentes. Para saber mais, dá uma olhada nesses recursos:

Adel Nehme

Autor

Adel Nehme

Adel é educador de ciência de dados, palestrante e evangelista da DataCamp, onde lançou vários cursos e treinamentos ao vivo sobre análise de dados, aprendizado de máquina e engenharia de dados. Ele é apaixonado pela disseminação das habilidades e da alfabetização de dados nas organizações e pela interseção entre tecnologia e sociedade. Ele tem um mestrado em ciência de dados e análise de negócios. Em seu tempo livre, você pode encontrá-lo passeando com seu gato Louis.

Temas

Relacionado

Tutorial

Matrizes Python

Tutorial

Tratamento de exceções e erros em Python