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