Como encontrar o valor máximo por grupo no pandas


Freqüentemente, você pode querer encontrar o valor máximo por grupo em um DataFrame do pandas.

Felizmente, isso é fácil de fazer usando as funções groupby() e max() com a seguinte sintaxe:

 df. groupby (' column_name '). max ()

Este tutorial explica vários exemplos de uso prático desta função usando o seguinte DataFrame do pandas:

 import pandas as pd

#create pandas DataFrame
df = pd. DataFrame ({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   'points':[24, 23, 27, 11, 14, 8, 13],
                   'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print (df)

  team points rebounds
0 to 24 11
1 to 23 8
2 B 27 7
3 B 11 6
4 B 14 6
5 C 8 5
6 C 13 12

Exemplo 1: valor máximo de diversas colunas agrupadas por uma variável

O código a seguir mostra como encontrar o valor máximo de múltiplas colunas, agrupadas por uma variável em um DataFrame:

 #find max values of points and rebounds, grouped by team
df. groupby (' team '). max (). reset_index ()


        team points rebounds
0 to 24 11
1 B 27 7
2 C 13 12

Pelo resultado podemos ver que:

  • A equipe A tem um valor máximo de pontos de 24 e um valor máximo de rebotes de 11.
  • A equipe B tem um valor máximo de pontos de 27 e um valor máximo de rebotes de 7.
  • A equipe C tem um valor máximo de pontos de 13 e um valor máximo de rebotes de 12.

Observe que usamos a função reset_index() para garantir que o índice corresponda ao índice do DataFrame original.

Exemplo 2: Valor máximo de uma única coluna agrupada por uma variável

O código a seguir mostra como encontrar o valor máximo de uma única coluna, agrupada em uma única variável:

 #find max value of points, grouped by team
df. groupby (' team ')[' points ']. max (). reset_index ()

        team points
0 to 24
1 B 27
2 C 13

Exemplo 3: Classificar por valores máximos

Também podemos usar a função sort_values() para classificar os valores máximos.

Podemos especificar ascendente=Falso para classificar do maior para o menor:

 #find max value by team, sort descending
df. groupby (' team ')[' points ']. max (). reset_index (). sort_values ([' points '], ascending= False )


        team points
1 B 27
0 to 24
2 C 13

Ou podemos especificar ascendente=True para classificar do menor para o maior:

 #find max value by team, sort ascending 
df. groupby (' team ')[' points ']. max (). reset_index (). sort_values ([' points '], ascending= True ) 

        team points
2 C 13
0 to 24
1 B 27

Recursos adicionais

Como calcular a soma das colunas no Pandas
Como calcular a média das colunas no Pandas
Como encontrar o valor máximo das colunas no Pandas

Add a Comment

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