Pandas: используйте groupby для расчета среднего значения и не игнорируйте nan.


При использовании функции pandas groupby() для группировки по одному столбцу и вычисления среднего значения другого столбца панды по умолчанию игнорируют значения NaN .

Если вместо этого вы хотите отображать NaN , если в столбце присутствуют значения NaN , вы можете использовать следующий базовый синтаксис:

 df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

В этом конкретном примере строки столбца DataFrame по команде группируются, а затем вычисляется среднее значение столбца точек , не игнорируя значения NaN .

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: используйте pandas groupby() и не игнорируйте NaN.

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о различных баскетболистах:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [15, np.nan, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team points
0 to 15.0
1 A NaN
2 A 24.0
3 A 25.0
4 A 20.0
5 B 35.0
6 B 34.0
7B 19.0
8B 14.0
9B 12.0

Предположим, мы используем следующий синтаксис для расчета среднего значения очков , сгруппированного по командам :

 #calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()

team
At 21.0
B 22.8
Name: points, dtype: float64

Обратите внимание, что возвращается среднее значение очков для каждой команды , даже если в столбце очков для команды A указано значение NaN .

По умолчанию pandas просто игнорирует значение NaN при вычислении среднего значения.

Если вместо этого вы хотите отображать NaN как среднее значение, если NaN действительно присутствуют, вы можете использовать следующий синтаксис:

 #calculate mean points value grouped by team and don't ignore NaNs
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

      points
team	
To NaN
B 22.8

Обратите внимание, что на этот раз значение NaN возвращается как среднее значение балла для команды А.

Используя аргумент Skipna=False , мы сказали пандам не игнорировать значения NaN при вычислении среднего значения.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Как посчитать уникальные значения с помощью Pandas GroupBy
Как применить функцию к Pandas Groupby
Как создать гистограмму из Pandas GroupBy

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *