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 functionagroupbyem 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