Pandy: jak znaleźć unikalne wartości i zignorować nan


Możesz zdefiniować następującą funkcję niestandardową, aby wyszukiwać pandy pod kątem unikalnych wartości i ignorować wartości NaN:

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

Ta funkcja zwróci serię pand zawierającą wszystkie unikalne wartości z wyjątkiem wartości NaN.

Poniższe przykłady pokazują, jak używać tej funkcji w różnych scenariuszach z następującą ramką DataFrame pand:

 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

Przykład 1: Znajdź unikalne wartości w kolumnie Pandy i zignoruj wartości NaN

Załóżmy, że użyjemy funkcji pandas Unique() do wyświetlenia wszystkich unikalnych wartości w kolumnie punktów DataFrame:

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

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

Należy pamiętać, że funkcja Unique() domyślnie uwzględnia w wynikach nan .

Załóżmy jednak, że zamiast tego użyjemy naszej niestandardowej funkcji Unique_no_nan() do wyświetlenia unikalnych wartości w kolumnie punktów :

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

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

Nasza funkcja zwraca każdą unikalną wartość w kolumnie punktów , nie licząc NaN.

Przykład 2: Znajdź unikalne wartości w Pandas Groupby i zignoruj wartości NaN

Załóżmy, że użyjemy funkcji pand groupby() i agg() do wyświetlenia wszystkich unikalnych wartości w kolumnie punktów , pogrupowanych według kolumny zespołu :

 #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]

Należy pamiętać, że funkcja Unique() domyślnie uwzględnia w wynikach nan .

Załóżmy jednak, że zamiast tego użyjemy naszej niestandardowej funkcji Unique_no_nan() do wyświetlenia unikalnych wartości w kolumnie punktów , pogrupowanych według kolumny zespołu :

 #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

Nasza funkcja zwraca każdą unikalną wartość w kolumnie punktów dla każdej drużyny , nie licząc wartości NaN.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w pandach:

Pandy: Jak wybrać pojedyncze wiersze w DataFrame
Pandy: Jak uzyskać unikalne wartości z kolumny indeksu
Pandy: jak liczyć unikalne kombinacje dwóch kolumn

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *