Pandas: como usar groupby com nlargest()


Você pode usar a seguinte sintaxe para exibir os n maiores valores por grupo em um DataFrame do pandas:

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

E você pode usar a seguinte sintaxe para realizar certas operações (como calcular a soma) nos n maiores valores por grupo em um DataFrame do pandas:

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

Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas:

 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

Exemplo 1: Exibir os N maiores valores por grupo

A seguinte sintaxe pode ser usada para exibir os dois maiores valores de pontos agrupados por equipe :

 #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

O resultado exibe os dois maiores valores de pontos de cada equipe , juntamente com suas posições de índice no DataFrame original.

Exemplo 2: execute uma operação nos N maiores valores por grupo

Podemos usar a seguinte sintaxe para calcular a soma dos dois maiores valores de pontos agrupados por equipe :

 #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

Veja como interpretar o resultado:

  • A soma dos dois maiores valores de pontos do Time A é 63 .
  • A soma dos dois maiores valores de pontos do Time B é 70 .

Podemos usar sintaxe semelhante para calcular a média dos dois maiores valores de pontos agrupados por equipe :

 #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

Veja como interpretar o resultado:

  • A média dos dois maiores valores de pontuação do Time A é 31,5 .
  • A média dos dois maiores valores de pontuação do Time B é 35,0 .

Nota : Você pode encontrar a documentação completa da função GroupBy aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Pandas: como calcular a soma acumulada por grupo
Pandas: como contar valores únicos por grupo
Pandas: como calcular o modo por grupo
Pandas: como calcular a correlação por grupo

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *