Pandas: як використовувати groupby з nlargest()


Ви можете використовувати такий синтаксис, щоб відобразити n найбільших значень за групою в pandas DataFrame:

 #display two largest values by group
df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )

І ви можете використовувати такий синтаксис для виконання певних операцій (наприклад, отримання суми) над n найбільшими значеннями на групу в pandas DataFrame:

 #find sum of two largest values by group
df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})

#view DataFrame
print (df)

  team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22

Приклад 1: відображення N найбільших значень за групою

Наступний синтаксис можна використовувати для відображення двох найбільших значень балів , згрупованих за командою :

 #display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )

team   
At 2 34
      1 29
B 7 36
      8 34
Name: points, dtype: int64

Результат відображає два найбільші значення балів для кожної команди разом із їхніми індексними позиціями в оригінальному DataFrame.

Приклад 2: виконати операцію над N найбільшими значеннями на групу

Ми можемо використовувати такий синтаксис, щоб обчислити суму двох найбільших значень балів , згрупованих за командою :

 #calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

team
At 63
B70
Name: points, dtype: int64

Ось як інтерпретувати результат:

  • Сума двох найбільших балів для команди А становить 63 .
  • Сума двох найбільших очок для команди Б дорівнює 70 .

Ми можемо використовувати аналогічний синтаксис для обчислення середнього двох найбільших значень балів , згрупованих за командою :

 #calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())

team
At 31.5
B 35.0
Name: points, dtype: float64

Ось як інтерпретувати результат:

  • Середнє з двох найвищих балів для команди А становить 31,5 .
  • Середнє значення двох найвищих балів для команди B становить 35,0 .

Примітка . Повну документацію щодо функції GroupBy можна знайти тут .

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

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

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

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

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