Group By no Python + Group By com Base Filtrada

O termo group by é muito popular para quem trabalha com base de dados. Quando temos repetições para o elemento chave e queremos fazer um resumo, um agrupamento, é esse o comando a ser utilizado. Um exemplo clássico é quando você tem os dados dos gastos feitos por clientes de uma loja e sua base contém um gasto por linha. Para obter o total gasto por cada cliente, você irá recorrer ao group by.

No Python, quando temos um dataframe da biblioteca Pandas, podemos chamar o comando pelo seu nome e utilizando a sintaxe mais clássica da linguagem que é o nome do objeto (o dataframe) seguido de group by e da função que deve ser aplicada (como a média ou a soma). Vejamos o exemplo da base com os gastos de cada cliente:

# carrega biblioteca pandas

import pandas as pd

# cria dataset
compras = {'Id': ['AA2930','AA2930','CC2139','CC2139','CC9999','AA2930'],
'Data': ['2019-01-01','2019-01-30','2019-01-30','2019-02-01','2019-02-20','2019-03-15'],
'Valor': [200,100,400,150,10,25]
}

compras = pd.DataFrame(compras, columns = ['Id','Data','Valor'])

# traz a soma de gastos de cada cliente (Id)

compras.groupby(['Id'])['Valor'].sum()

Veja que primeiro carregamos a biblioteca pandas a qual vamos nos referir com a abreviação pd, criamos um dataframe e, em seguida, somamos o campo Valor, agrupando-o por cada Id. Poderíamos ter obtido o gasto médio de cada cliente trocando mean() por sum():

compras.groupby(['Id'])['Valor'].mean()
# cria um novo dataframe só com compras acima de 30 reais

compras_v2 = compras[compras['Valor'] > 30]

compras_v2.groupby(['Id'])['Valor'].sum()
compras[compras['Valor'] > 30].groupby(['Id'])['Valor'].sum()
compras[compras.groupby('Id')['Valor'].transform('size') > 1].groupby(['Id'])['Valor'].sum()

nlargest()

# traz as 3 maiores somas
compras.groupby(['Id'])['Valor'].sum().nlargest(3)

sum()mean() count()BÔNUS: EVITANDO QUE O PYTHON OCULTE COLUNAS NO DESCRIBEgroupby() groupby()

# Retira limite de colunas a serem mostradas

pd.options.display.max_columns = None

# exemplo de describe com todas variáveis

print(df.groupby('agrupamento_qualquer').describe(include='all'))

Sobre o Estatsite@EstatSite

Deixe um comentário

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