Pandas: як знайти унікальні значення і ігнорувати nan


Ви можете визначити наступну спеціальну функцію для пошуку унікальних значень у пандах і ігнорування значень NaN:

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

Ця функція поверне серію pandas, яка містить усі унікальні значення, крім значень NaN.

У наведених нижче прикладах показано, як використовувати цю функцію в різних сценаріях із такими pandas DataFrame:

 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

Приклад 1: знайдіть унікальні значення в стовпці Pandas і ігноруйте значення NaN

Припустимо, ми використовуємо функцію pandas unique() для відображення всіх унікальних значень у стовпці точок DataFrame:

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

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

Зауважте, що функція unique() включає nan у результати за замовчуванням.

Однак припустімо, що замість цього ми використовуємо нашу спеціальну функцію unique_no_nan() для відображення унікальних значень у стовпці балів :

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

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

Наша функція повертає кожне унікальне значення в стовпці балів , за винятком NaN.

Приклад 2: знайдіть унікальні значення в Pandas Groupby і ігноруйте значення NaN

Припустимо, ми використовуємо функції pandas groupby() і agg() для відображення всіх унікальних значень у стовпці балів , згрупованих за стовпцем team :

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

Зауважте, що функція unique() включає nan у результати за замовчуванням.

Однак припустімо, що замість цього ми використовуємо нашу спеціальну функцію unique_no_nan() для відображення унікальних значень у стовпці балів , згрупованих за стовпцем команди :

 #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

Наша функція повертає кожне унікальне значення в стовпці очок для кожної команди , не враховуючи значення NaN.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові функції в pandas:

Pandas: Як вибрати окремі рядки в DataFrame
Pandas: Як отримати унікальні значення зі стовпця індексу
Панди: як підрахувати унікальні комбінації двох стовпців

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *