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