Pandas: como usar groupby com contagem de bin


Você pode usar a seguinte sintaxe para calcular o número de caixas de uma variável agrupada por outra variável no pandas:

 #define bins
groups = df. groupby ([' group_var ', pd. cut (df. value_var , bins)])

#display bin count by group variable
groups. size (). unstack ()

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

Exemplo: Use GroupBy com número de caixas no Pandas

Suponha que temos o seguinte DataFrame do pandas que mostra os pontos marcados por jogadores de basquete de diferentes times:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                            'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [4, 7, 7, 11, 12, 15, 19, 19,
                             5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print (df)

   team points
0 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

Podemos usar a seguinte sintaxe para calcular a frequência de pontos de cada equipe, agrupados em categorias específicas:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 15] (15, 20]
  team			
     A 3 3 2
     B 2 6 0

Veja como interpretar o resultado:

  • No total, 3 jogadores da equipe A marcaram entre 0 e 10 pontos.
  • No total, 3 jogadores da equipe A marcaram entre 10 e 15 pontos.
  • No total, 2 jogadores da equipe A marcaram entre 15 e 20 pontos.

E assim por diante.

Observe que podemos especificar quais compartimentos queremos na função pd.cut() .

Por exemplo, poderíamos definir apenas dois compartimentos:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 20]
  team		
     At 3 5
     B 2 6

Veja como interpretar o resultado:

  • No total, 3 jogadores da equipe A marcaram entre 0 e 10 pontos.
  • No total, 5 jogadores do Time A marcaram entre 10 e 20 pontos.
  • No total, 2 jogadores da equipe B marcaram entre 0 e 10 pontos.
  • No total, 6 jogadores do Time B marcaram entre 10 e 20 pontos.

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

Nota 2 : Você pode encontrar a documentação completa da função cut 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 *