Pandas: como usar group by com a condição where


A maneira mais fácil de usar group by com uma condição Where no pandas é usar a função query() :

 df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

Este exemplo específico calcula o valor médio de points , agrupados por position , onde team é igual a “A” em alguns DataFrame do pandas.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: como usar Group By com a condição Where no Pandas

Suponha que temos o seguinte DataFrame do pandas que contém informações sobre vários jogadores de basquete:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [22, 14, 15, 10, 8, 29, 33, 18]})

#view DataFrame
print (df)

  team position points
0 AG 22
1 AG 14
2 AF15
3 AF 10
4 AF 8
5 BG 29
6 BG 33
7 BF 18

Podemos usar o seguinte código para calcular o valor médio dos pontos , agrupados por posição , onde o time é igual a “A”:

 #calculate mean value of points, grouped by position, where team == 'A'
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

        position points
0 F 11.0
1G 18.0

Pelo resultado podemos ver:

  • O valor médio de pontos para jogadores na posição “F” do time A é 11 .
  • O valor médio de pontos para jogadores na posição “G” do Time A é 18 .

Observe que também podemos usar o operador & na função query() para encontrar linhas onde múltiplas condições são atendidas.

Por exemplo, o código a seguir mostra como calcular o valor médio de pontos , agrupados por posição , onde equipe é igual a “A” e posição é igual a “G”:

 #calculate mean value of points by position where team is 'A' and position is 'G'
df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index ()

	position points
0G 18.0

Pelo resultado, podemos perceber que a média de pontos dos jogadores da posição “G” do time A é 18 .

Como especificamos duas condições na função query() , apenas as linhas que atendessem a ambas as condições foram usadas.

Recursos adicionais

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

Como realizar uma soma GroupBy no Pandas
Como usar Groupby e Plot no Pandas
Como contar valores únicos usando GroupBy no Pandas

Add a Comment

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