Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Aula 2: Análise exploratória dos dados

Desafio 1
Calcular a média de quartos por apartamento

df_quartos = df.groupby("Tipo")['Quartos'].mean(numeric_only=True)
df_quartos

Desafio 2
Conferir quantos bairros únicos existem na nossa base de dados

df_bairros_unicos = df['Bairro'].unique()
df_bairros_unicos
df_bairros_unicos.shape

df['Bairro'].nunique()

Desafio 3
Analisar quais bairros possuem a média de valor de aluguel mais elevadas

df_bairros_media_elevada = dados.groupby('Bairro')[['Valor']].mean().sort_values('Valor') 
df_bairros_media_elevada

Desafio 4
Criar um gráfico de barras verticais que apresente os 5 bairros com a média de valor de aluguel mais elevadas

top_5 = df_bairros_media_elevada.tail(5)
top_5

df_bairros = top_5.groupby("Bairro")[["Valor"]].mean().sort_values("Valor")

df_bairros.plot(kind='bar', figsize=(14, 10), color ='purple');
2 respostas
solução!

Olá, Marcelo. Como vai?

Mais uma entrega de altíssimo nível para a comunidade do fórum! Você resolveu com maestria os quatro desafios propostos para a análise exploratória. O uso correto de agrupamentos com .groupby(), contagens de valores únicos e a manipulação dos métodos do Pandas mostram que você está assimilando o conteúdo com uma base técnica muito sólida.

O seu código está excelente e atinge perfeitamente os objetivos do exercício. Para enriquecer o seu post no fórum e trazer alguns insights sobre otimização de código e boas práticas visuais no Pandas, analisei detalhadamente cada um dos seus desafios:


Análise das suas Soluções

Desafio 1 e 2: Precisão Técnica

  • No Desafio 1, usar o numeric_only=True dentro do cálculo da média é uma excelente prática para evitar quebras em versões futuras da biblioteca.
  • No Desafio 2, você foi além e mostrou três formas complementares de olhar para o problema: listar os nomes com .unique(), ver o tamanho do array com .shape e obter o número exato diretamente com .nunique(). Essa versatilidade com os dados é excelente!

Desafio 3 e 4: Otimização de Código

No Desafio 3, reparei que você usou a variável dados em vez de df:

df_bairros_media_elevada = dados.groupby('Bairro')[['Valor']].mean().sort_values('Valor')

Como o seu DataFrame principal se chama df nos outros blocos, certifique-se de que a variável dados foi definida anteriormente para não gerar um erro de NameError caso alguém tente replicar o seu código sequencialmente.

No Desafio 4, você teve uma sacada ótima: usou o .tail(5) para pegar as 5 maiores médias, já que a sua lista estava ordenada de forma crescente.

Contudo, repare que logo na sequência você realizou um novo agrupamento desnecessário:

# Esse passo abaixo repete o agrupamento que você já tinha feito no Desafio 3
df_bairros = top_5.groupby("Bairro")[["Valor"]].mean().sort_values("Valor")

Como a variável top_5 já nasceu grifada, agrupada e calculada a partir do DataFrame df_bairros_media_elevada, você pode fazer o plot diretamente a partir dela, economizando processamento da máquina.


O Código Mais Limpo e Direto

Veja como as etapas 3 e 4 podem ser unificadas de forma limpa e elegante, mantendo exatamente o mesmo gráfico roxo que você planejou:

# 1. Agrupa por Bairro, calcula a média do Valor e ordena do MAIOR para o MENOR
df_bairros_media_elevada = df.groupby('Bairro')[['Valor']].mean().sort_values('Valor', ascending=False)

# 2. Captura os 5 primeiros usando .head() (como ordenamos decrescente, os maiores estão no topo)
top_5 = df_bairros_media_elevada.head(5)

# 3. Plota o gráfico direto, sem necessidade de re-agrupar
top_5.plot(kind='bar', figsize=(14, 10), color='purple', edgecolor='black',
           xlabel='Bairros', ylabel='Média do Valor de Aluguel', legend=False);

Detalhe de Acabamento Visual:

No código acima, adicionei o parâmetro legend=False. Como o seu gráfico analisa apenas uma variável univariada (Média do Valor), a legenda que o Pandas gera automaticamente fica redundante e polui o layout. Retirá-la deixa o visual do seu dashboard muito mais profissional.

Parabéns pelo empenho contínuo em postar soluções limpas e bem pensadas aqui na comunidade! Você está evoluindo muito rápido na trilha de Data Science.

Espero que possa ter lhe ajudado!

Obrigado pelas observações Evandro, abs