1
resposta

Dúvida Aggregate - Estatística Descritiva

Olá, boa tarde!

Estava fazendo alguns exercícios para praticar a aula e surgiu uma dúvida.

Caso eu queira relacionar um percentual em aggregate como eu faria? Aparentemente os argumentos do aggregate não permitem números (visualizei em Pandas API Reference e não encontrei).

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigada!

Juliana Silva

1 resposta

Olá, Juliana, tudo bem?

Gostei bastante da sua pergunta, ela é bem interessante.

Então, existem algumas formas de fazer essa relação seja ela usando apenas o describe() (1ª solução) ou dentro do aggregate() (2ª e 3ª solução). Logo abaixo, descrevemos três soluções possíveis de conseguir tal funcionalidade

 

1ª Solução: Usando apenas o describe()

 

Usando apenas o describe() podemos selecionar as colunas que desejamos apresentar na tela. Seguindo o exemplo da aula em que o professor agrupava os bairros pelo Valor, o código dessa abordagem seria o seguinte:

# Solução 1 - Sem usar o aggregate e escolhendo as colunas desejadas do describe
grupo_bairro['Valor'].describe()[['count', 'mean', '50%']]

 

Saída:

countmean50%
Bairro
Barra da Tijuca3863.07069.5529384500.0
Botafogo873.08791.8281793000.0
Copacabana2644.04126.6770053000.0
Flamengo714.04113.5266112900.0
Ipanema1764.09352.0011347000.0
Leblon1258.08746.3449927000.0
Tijuca1100.02043.5200001800.0

 

2ª Solução: Usando o aggregate() unido ao describe()

 

Outra solução para esta funcionalidade é passando o describe como um parâmetro doaggregate() , assim, é possível selecionar dentro das colunas existentes do describe quais serão as escolhidas para exibição. Continuando no exemplo da aula em que o professor agrupava os bairros pelo Valor, o código dessa abordagem apresentaria a seguinte forma:

# Solução 2 - Usando o aggregate unido ao describe e escolhendo as colunas desejadas
grupo_bairro['Valor'].aggregate('describe')[['count', 'mean', '50%']]

 

Saída: Igual à 1 ª solução

 

3ª Solução: Usando a estatística descritiva do numpy junto ao aggregate()

 

Essa abordagem, apesar de necessitar da importação da biblioteca numpy, nos permite não só usar os valores da estatística descritiva presente no describe(), como também diversas outras que tivermos interesse em agregar ao nosso código (como por exemplo, os percentis e decis). Para tal, precisamos definir as funções que vão chamar o método que queremos adotar e exibir em nossa tabela. Logo abaixo, descrevemos dois exemplos de utilização dessa solução de acordo com o exemplo da aula em que o professor agrupava os bairros pelo Valor:

# Solução 3 - Importando numpy e definindo os percentuais desejados para a função aggregate
import numpy as np

# Exemplo 1 - Descrevendo a função do 1º quartil
def primeiro_quartil (x):
        # Calcula o primeiro quartil de nossos dados (25%)
        # Para mudar para percentil ou decil usar: np.percentile(x, q= numero_entre_0_e_100)  
    return np.quantile(x, q=.25)

grupo_bairro['Valor'].aggregate(['count', 'mean', primeiro_quartil]).rename(columns = {'primeiro_quartil': '25%'})

 

Saída:

countmean25%
Bairro
Barra da Tijuca38637069.5529382500.0
Botafogo8738791.8281792200.0
Copacabana26444126.6770052000.0
Flamengo7144113.5266111900.0
Ipanema17649352.0011344500.0
Leblon12588746.3449924500.0
Tijuca11002043.5200001500.0

 

Extra: Calculando mediana, 2º quartil ou 50%

# Solução 3 - Importando numpy e definindo a mediana direto no aggregate
import numpy as np

grupo_bairro['Valor'].aggregate(['count', 'mean', np.median]).rename(columns = {'median': '50%'})

 

Saída: Igual à 1 ª solução

 

Espero que tenhamos ajudado a compreender um pouco mais sobre esse assunto.

Abraços e bons estudos!