Como Obter o Agregado de Pandas Group-By e Sum
- Soma cumulativa com
agg()
-
pivot()
para reordenar os dados em uma tabela de Nice - Aplicar
function
agroupby
em Pandas -
agg()
para obter a Soma Agregada da Coluna

Demonstraremos como obter o agregado em Pandas utilizando groupby
e sum
. Também analisaremos a funcionalidade pivot
para organizar os dados em uma bela tabela e definir nossa função personalizada e executá-la no DataFrame
. Também obteremos a soma agregada utilizando o agg()
.
Soma cumulativa com agg()
Podemos obter a soma cumulativa utilizando o método groupby
. Considere o seguinte quadro de dados com as colunas Date
, Fruit
e Sale
:
import pandas as pd df = pd.DataFrame( { "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"], "Fruit": [ "Apple", "Apple", "Banana", "Banana", ], "Sale": [34, 12, 22, 27], } )
Se quisermos calcular a soma cumulativa de Venda por Fruta e para cada data, podemos fazer:
import pandas as pd df = pd.DataFrame( { "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"], "Fruit": [ "Apple", "Apple", "Banana", "Banana", ], "Sale": [34, 12, 22, 27], } ) print(df.groupby(by=["Fruit", "Date"]).sum().groupby(level=[0]).cumsum())
Resultado:
Fruit Date Sale Apple 08/09/2018 34 10/09/2018 46 Banana 08/09/2018 22 10/09/2018 49
pivot()
para reordenar os dados em uma tabela de Nice
O método pivot()
poderia definir o atributo de linha e coluna da tabela. Vamos mudar o código acima e aplicar o método pivot()
para reorganizar os dados em uma bela tabela:
import pandas as pd df = pd.DataFrame( { "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"], "Fruit": [ "Apple", "Apple", "Banana", "Banana", ], "Sale": [34, 12, 22, 27], } ) print( df.groupby(["Fruit", "Date"], as_index=False).sum().pivot("Fruit", "Date").fillna(0) )
Resultado:
Sale Date 08/09/2018 10/09/2018 Fruit Apple 34 12 Banana 22 27
Aplicar function
a groupby
em Pandas
Vamos criar um método simples para obter a contagem de valores em series
ou array 1d
e utilizar groupby
para obter a contagem agregada de cada valor:
from pandas import * d = {"series": Series(["1", "2", "1", "1", "4", "4", "5"])} df = DataFrame(d) def get_count(values): return len(values) grouped_count = df.groupby("series").series.agg(get_count) print(grouped_count)
Depois de executar o código, obteremos a seguinte saída, que fornece a ocorrência de cada valor na série.
Resultado:
series 1 3 2 1 4 2 5 1 Name: series, dtype: int64
agg()
para obter a Soma Agregada da Coluna
Podemos utilizar agg()
para aplicar a operação de soma na coluna. Códigos de exemplo:
import pandas as pd df = pd.DataFrame( { "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"], "Fruit": [ "Apple", "Apple", "Banana", "Banana", ], "Sale": [34, 12, 22, 27], } ) print(df.groupby(["Fruit"])["Sale"].agg("sum"))
Resultado:
Fruit Apple 46 Banana 49 Name: Sale, dtype: int64