Pandas Groupby Aggregate

Pandas Groupby Aggregate



A técnica groupby é essencial por causa de quão bem ela agrega dados em termos de desempenho e tamanho de código. O termo “groupby” normalmente descreve um procedimento que inclui as seguintes etapas:

  • Divisão : Ao aplicar certas condições aos conjuntos de dados, podemos dividir os dados em grupos.
  • Aplicando : Um processo em que aplicamos individualmente um método a cada grupo.
  • Combinando : Um procedimento para combinar vários conjuntos de dados para formar uma estrutura de dados após usar o método groupby().

No processo de agregação, uma estatística resumida para cada grupo é calculada. Para cada grupo, o método agregado retorna um valor agregado (valor único). Podemos realizar várias operações de agregação em dados agrupados depois de dividir os dados em grupos usando a função groupby.







Por que os Pandas fornecem uma variedade de métodos de agregação de dados?

O Pandas oferece uma ampla variedade de recursos e funções para ajudar na análise e agregação de dados. O uso dos métodos pivot(), groupby() e pivot_table(), por exemplo, oferece uma perspectiva diferente de como os dados seriam agregados. Eles fornecem abordagens práticas para a realização de várias tarefas, em vez de serem simplesmente reembalados.



Como usar a função .agg() em Pandas

Uma média simples ou soma de valores é a função de agregação usada com mais frequência. Você pode usar a coluna de um dataframe ou várias colunas para chamar uma função agregada. Você verá muitas maneiras de agregar dados usando o método groupby do Pandas. Para demonstrar o quanto o procedimento é mais fácil, vejamos alguns exemplos abaixo. Operações matemáticas básicas como soma, mínimo, máximo, desvio absoluto médio, desvio padrão, média, mediana, variância e produto estão entre as funções de agregação incorporadas mais usadas. Para resumir os dados, podemos combinar groupby e a função agg().



Exemplo # 01: Determine a Soma das Colunas Agrupando os Dados Usando a Função groupby.agg()

Vamos primeiro criar um dataframe usando a função pd.DataFrame() para que possamos agrupar os dados da coluna ou colunas do dataframe e então determinar seu valor médio. Devemos importar os módulos de pandas e a biblioteca numpy antes de criarmos o dataframe.





Como você pode ver, usamos o dicionário pandas para criar nosso dataframe. Nosso dataframe df tem quatro colunas: “paciente”, “grupo”, “idade” e “garrafas de sangue”. Os valores de dados ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') estão contidos na coluna “paciente”, enquanto os valores de dados ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) e ( 2, 3, 1, 1, 2, 3, 2, 1) estão contidos nas colunas “group”, “age” e “blood_bottles”, respectivamente. Vamos supor que temos que determinar a soma dos valores na coluna 'blood_bottles' agrupando os valores na coluna 'grupo'.



Para os dados do grupo 'A', a soma dos valores de 'blood_bottles' é 7. Para os valores do grupo 'B' e 'C', a soma dos valores de 'blood_bottles' é 2 e 6, respectivamente. Também podemos agrupar várias colunas para determinar a soma de cada grupo.

Como pode ser observado, passamos uma lista de rótulos de coluna, ou seja, [‘paciente’, ‘grupo’] dentro da função groupby() para criar os grupos de categorias em cada coluna especificada. Para cada grupo de colunas especificadas, determinamos a soma dos valores em ‘blood_bottles’. Por exemplo, 'Ali' está nos valores da coluna 'grupo' A e C. No grupo A, a soma dos valores de 'blood_bottles' para Ali é 2 e 5 no grupo 'C'.

Exemplo # 02: Aplicando várias funções em uma única coluna de dataframe usando a função groupby.agg()

Várias agregações podem ser aplicadas com o método 'groupby()' usando a função pandas agg(). Uma lista chamável pode ser passada para o método. Vamos ver como podemos agregar nossos dados usando os métodos internos da biblioteca numpy. Ao contrário do exemplo anterior, aplicaremos várias funções a uma única coluna do dataframe. A função pd.DataFrame() será usada para criar um dataframe para isso com pelo menos uma coluna contendo valores numéricos.


O dataframe necessário foi criado com uma coluna numérica, ou seja, 'marcas' com valores 41, 40, 35, 39, 49, 31, 34 e 42. Existem mais 3 colunas 'aluno', 'assuntos' e 'grau' em nosso dataframe que pode ser dividido em grupos usando a função groupby(). Os valores na coluna 'alunos' e 'assuntos' são ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') e ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Enquanto o grau da coluna contém os valores dos dados como strings, ou seja, ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Suponha que tenhamos que agrupar os dados da coluna ‘sujeitos’ e determinar a média e a soma das ‘marcas’ da coluna para cada dado agrupado.

Especificamos o nome da coluna ‘assuntos’ como uma string dentro da função groupby() para converter os dados em grupos de categorias. Para a coluna de marcas, usamos o método agg(), e dentro da função agg() especificamos as funções numpy np.sum e np.mean para encontrar a soma e a média das notas de cada grupo de dados nos assuntos da coluna. A soma e o valor médio para o valor do grupo 'AI' são 91 e 45,5, respectivamente. A soma das notas para o valor ‘C++’ é 75 e o valor médio é 37,5. Para o grupo JAVA, a soma das notas é 71 e o valor médio é 35,5, enquanto a soma e o valor médio para Python são 74 e 37, respectivamente.

Exemplo # 03: Aplicando Múltiplas Funções nas Múltiplas Colunas do Dataframe Usando a Função groupby.agg()

Em vez de aplicar diferentes funções a uma única coluna de dataframe, podemos aplicar várias funções a diferentes colunas numéricas. Podemos usar um dicionário na função agg() como entrada para aplicar um método de agregação específico a diferentes colunas do dataframe. Vamos importar as bibliotecas pandas e numpy antes de criar um dataframe com várias colunas numéricas.

Existem quatro colunas no dataframe recém-criado com os nomes “player”, “least_score”, ‘highest_score’ e “location”. Na coluna 'player', armazenamos os nomes de alguns jogadores como valores de dados de string ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), na coluna 'least_score' há pontuações mais baixas de jogadores para algumas partidas (12, 34, 2, 21, 9, 1, 0, 34), enquanto na coluna 'highest_score' temos as pontuações mais altas dos jogadores (12, 34, 2, 21, 9, 1, 0, 34) e na coluna 'local' estão os nomes dos locais onde os jogadores jogaram suas partidas ('França', 'Inglaterra', 'Dubai', ' Dubai', 'Inglaterra', 'França', 'Dubai', 'França').

Vamos supor que depois de agrupar os dados na coluna 'jogadores', temos que encontrar a média dos valores da coluna 'least_score' e a soma dos valores de dados 'hightest_score' para cada grupo.

Dentro da função agg(), passamos um dicionário python {'highest_score' : 'sum', 'least_score' : 'mean'} para encontrar a soma e o valor médio para uma coluna especificada em cada grupo. Pode-se observar que o valor agrupado Alex tem a soma do valor 'highest_score' 132 e a média do valor 'least_score' 17,5. Para 'Fin' a soma dos valores é 199 e a média é 18,3333333 nas colunas 'highest_score' e 'least_score' respectivamente. O valor do grupo Leo tem um valor de soma de 180 em 'highest_score' e um valor médio de 7,666667 em 'least_score'.

Conclusão

Neste tutorial, discutimos as funções groupby() e de agregação em pandas. Também discutimos como usar a função groupby.agg(). Implementamos três exemplos neste artigo para ensiná-lo a usar uma única função de agregação em uma coluna de dataframe agrupando os dados de uma e várias colunas, como aplicar várias funções de agregação em uma única coluna de um dataframe e como aplicar várias funções de agregação nas várias colunas do dataframe usando a função groupby.agg().