Подсчитайте количество NAN в каждой группе

#python #pandas

#python #pandas

Вопрос:

В этом фрейме данных я пытаюсь подсчитать, сколько NaN для каждого цвета в color столбце.

Вот как выглядит образец данных. На самом деле, там 100 тысяч строк.

    color     value  
0  blue      10 
1  blue      NaN  
2  red       NaN
3  red       NaN
4  red       8
5  red       NaN
6  yellow    2
  

Я бы хотел, чтобы результат выглядел следующим образом:

    color     count  
0  blue      1 
1  red       3
2  yellow    0
  

Ответ №1:

Вы можете использовать DataFrame.isna , GroupBy столбец color и sum для суммирования всех True строк в каждой группе:

 df.value.isna().groupby(df.color).sum().reset_index()

    color  value
0    blue    1.0
1     red    3.0
2  yellow    0.0
  

Ответ №2:

Также вы можете использовать agg () и isnull() или isna() следующим образом:

 df.groupby('color').agg({'value': lambda x: x.isnull().sum()}).reset_index()
  

Ответ №3:

Используйте isna().sum()

 df.groupby('color').value.apply(lambda x: x.isna().sum())

color
blue      1
red       3
yellow    0
  

Ответ №4:

Использование из size и count

 g=df.groupby('color')['value']
g.size()-g.count()
Out[115]: 
color
blue      1
red       3
yellow    0
Name: value, dtype: int64