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


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

Якщо натомість ви хочете відобразити NaN , якщо в стовпці присутні значення NaN , ви можете використати такий базовий синтаксис:

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

У цьому конкретному прикладі буде згруповано рядки стовпця DataFrame за групою , а потім обчислено середнє значення стовпця балів , не ігноруючи значення NaN .

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: використовуйте pandas groupby() і не ігноруйте NaN

Припустімо, що у нас є такий фрейм даних 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

Зауважте, що повертається середнє значення балів для кожної команди , навіть якщо в стовпці балів є значення NaN для команди A.

За замовчуванням 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 повертається як середнє значення балів для команди A.

Використовуючи аргумент skipna=False , ми сказали пандам не ігнорувати значення NaN під час обчислення середнього.

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

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

Як підрахувати унікальні значення за допомогою Pandas GroupBy
Як застосувати функцію до Pandas Groupby
Як створити стовпчасту діаграму з Pandas GroupBy

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

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