Como calcular quantis por grupo no pandas


Você pode usar a seguinte sintaxe básica para calcular quantis por grupo no Pandas:

 df. groupby (' grouping_variable '). quantile ( .5 )

Os exemplos a seguir mostram como usar essa sintaxe na prática.

Exemplo 1: calcule o quantil por grupo

Suponha que temos o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame 
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#view first five rows
df. head ()

team score
0 1 3
1 1 4
2 1 4
3 1 5
4 1 5 

O código a seguir mostra como calcular o percentil 90 dos valores da coluna “pontos”, agrupados pela coluna “equipe”:

 df. groupby (' team '). quantile ( .90 )

	score
team	
1 6.5
2 4.0

Veja como interpretar o resultado:

  • O 90º percentil de “pontos” para a Equipe 1 é 6,5 .
  • O 90º percentil de “pontos” para a Equipe 2 é 4,0 .

Exemplo 2: Calcular múltiplos quantis por grupo

O código a seguir mostra como calcular vários quantis de uma vez por grupo:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#create functions to calculate 1st and 3rd quartiles
def q1(x):
    return x. quantile ( 0.25 )

def q3(x):
    return x. quantile ( 0.75 )

#calculate 1st and 3rd quartiles by group
vals = {' score ': [q1, q3]}

df. groupby (' team '). agg (vals)

	score
        q1 q3
team		
1 4.0 5.0
2 2.0 3.0

Veja como interpretar o resultado:

  • O primeiro e terceiro quartis das pontuações da Equipe 1 são 4,0 e 5,0, respectivamente.
  • O primeiro e terceiro quartis das pontuações da Equipe 2 são 2,0 e 3,0, respectivamente.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras funções comuns em pandas:

Como encontrar o valor máximo por grupo no Pandas
Como contar avistamentos de grupos em pandas
Como calcular a média das colunas no Pandas

Add a Comment

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