Pandas: como encontrar valores únicos e ignorar nan


Você pode definir a seguinte função personalizada para pesquisar valores exclusivos em pandas e ignorar valores NaN:

 def unique_no_nan(x):
    return x. dropna (). single ()

Esta função retornará uma série de pandas que contém todos os valores exclusivos, exceto valores NaN.

Os exemplos a seguir mostram como usar esta função em diferentes cenários com o seguinte DataFrame do pandas:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Mavs', 'Mavs', 'Celtics', 'Celtics', 'Celtics'],
                   ' points ': [95, 95, 100, 113, 100, np.nan]})

#view DataFrame
print (df)

      team points
0 Mavs 95.0
1 Mavs 95.0
2 Mavs 100.0
3 Celtics 113.0
4 Celtics 100.0
5 Celtics NaN

Exemplo 1: Encontre valores exclusivos na coluna Pandas e ignore os valores NaN

Suponha que usemos a função pandas unique() para exibir todos os valores exclusivos na coluna de pontos do DataFrame:

 #display unique values in 'points' column
df[' points ']. single ()

array([ 95., 100., 113., no])

Observe que a função unique() inclui nan nos resultados por padrão.

No entanto, suponha que usemos nossa função customizada unique_no_nan() para exibir os valores exclusivos na coluna de pontos :

 #display unique values in 'points' column and ignore NaN
unique_no_nan(df[' points '])

array([ 95., 100., 113.])

Nossa função retorna todos os valores únicos na coluna de pontos , sem incluir NaN.

Exemplo 2: Encontre valores únicos no Pandas Groupby e ignore os valores NaN

Suponha que usemos as funções groupby() e agg() do pandas para exibir todos os valores exclusivos na coluna de pontos , agrupados pela coluna da equipe :

 #display unique values in 'points' column grouped by team
df. groupby (' team ')[' points ']. agg ([' single '])

	unique
team	
Celtics [113.0, 100.0, nah]
Mavs [95.0, 100.0]

Observe que a função unique() inclui nan nos resultados por padrão.

No entanto, suponha que usemos nossa função customizada unique_no_nan() para exibir os valores exclusivos na coluna de pontos , agrupados pela coluna da equipe :

 #display unique values in 'points' column grouped by team and ignore NaN
df. groupby (' team ')[' points ']. apply ( lambda x: unique_no_nan(x))

team
Celtics [113.0, 100.0]
Mavs [95.0, 100.0]
Name: points, dtype: object

Nossa função retorna cada valor único na coluna de pontos para cada equipe , sem contar os valores NaN.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras funções comuns em pandas:

Pandas: Como selecionar linhas únicas no DataFrame
Pandas: Como obter valores únicos da coluna do índice
Pandas: como contar combinações únicas de duas colunas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *