Pandas: como usar groupby e contar condicionalmente


Você pode usar a seguinte sintaxe básica para executar uma condição groupby e count with em um DataFrame do pandas:

 df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')

Esta sintaxe específica agrupa as linhas do DataFrame com base em var1 e depois conta o número de linhas onde var2 é igual a “val”.

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

Exemplo: Groupby e Count com Condição em 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', 'B', 'B', 'B', 'B'],
                   ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team pos points
0 A Gu 18
1 A Fo 22
2 A Fo 19
3 A Fo 14
4 B Gu 14
5 B Gu 11
6 B Fo 20
7 B Fo 28

O código a seguir mostra como agrupar o DataFrame pela variável team e contar o número de linhas onde a variável pos é igual a “Gu”:

 #groupby team and count number of 'pos' equal to 'Gu'
df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 1
1 B 2

Pelo resultado podemos ver:

  • O time A tem 1 linha onde a coluna pos é igual a “Gu”
  • O time B tem 2 linhas onde a coluna pos é igual a “Gu”

Podemos usar sintaxe semelhante para realizar um groupby e contar com uma condição numérica.

Por exemplo, o código a seguir mostra como agrupar por variável de equipe e contar o número de linhas onde a variável points é maior que 15:

 #groupby team and count number of 'points' greater than 15
df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 3
1 B 2

Pelo resultado podemos ver:

  • A equipe A tem 3 linhas onde a coluna de pontos é maior que 15
  • A equipe B tem 2 linhas onde a coluna de pontos é maior que 15

Você pode usar sintaxe semelhante para realizar um agrupamento e contar com qualquer condição específica desejada.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:

Como contar valores únicos usando Pandas GroupBy
Como aplicar uma função ao Pandas Groupby
Como criar um gráfico de barras do Pandas GroupBy

Add a Comment

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