Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Simplificando a criação da tabela sumarizada com `.agg()` e extração de valores

Olá pessoal,

No curso, temos esse trecho de código para criar uma tabela com o setor mais poluente por tipo de gás e sua respectiva emissão:

valores_max = gas_por_setor.groupby(level=0).max().values
tabela_sumarizada = gas_por_setor.groupby(level=0).idxmax()
tabela_sumarizada.insert(1, 'Quantidade de emissão', valores_max)

Resolvi explorar uma alternativa mais concisa e direta, usando o método .agg():

tabela_sumarizada = gas_por_setor.groupby(level=0, observed=True).agg(['idxmax', 'max'])
tabela_sumarizada.columns = ['Setor mais poluente', 'Emissão']

Até aqui, a saída ficava assim:

                                      Setor mais poluente       Emissão
Gás                                                                      
CO2 (t)                (CO2 (t), Mudança de Uso da Terra e Floresta)  3.733930e+10
CH4 (t)                               (CH4 (t), Agropecuária)          5.928481e+08
...

Minha abordagem

Percebi que a coluna 'Setor mais poluente' estava trazendo uma tupla completa com o índice original — ou seja, incluía tanto o nome do gás quanto o setor.

Para limpar isso, usei .str[1], que acessa o segundo elemento da tupla, correspondente ao setor:

tabela_sumarizada['Setor mais poluente'] = tabela_sumarizada['Setor mais poluente'].str[1]

Resultado final:

                                  Setor mais poluente       Emissão
Gás                                                                  
CO2 (t)                  Mudança de Uso da Terra e Floresta  3.733930e+10
CH4 (t)                                 Agropecuária        5.928481e+08
...

Ficou mais limpo e fácil de ler.

Qual a utilidade?

  • O .agg(['idxmax', 'max']) permite obter os dois resultados em uma única operação.
  • O .str[1] é uma forma simples e eficiente de extrair parte de uma tupla armazenada em células do DataFrame.
  • A legibilidade da tabela melhora com essa abordagem.

Abraço.

2 respostas
solução!

Bom dia! Como está?

Muito bom, Carlos! Gostei demais da sua abordagem e de como explicou cada detalhe no final.

Você utilizou o método .agg() para aplicar múltiplas funções de agregação de forma eficiente, aplicou de forma eficaz o acesso com .str[1] para limpar os dados retornados em tuplas e compreendeu a importância da legibilidade ao organizar sua tabela final com clareza.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá, Daniel.

Muito obrigado pelo retorno tão positivo e por destacar os pontos que considerei importantes na solução — fico feliz que tenha ficado clara a intenção por trás de cada etapa.

Sua sugestão de mergulhar mais fundo na documentação do .agg() veio em boa hora. Já aproveitei para dar uma olhada (e sim, uso bastante a tradução automática mesmo).

Abraço.