1
resposta

Pandas - Bora praticar

1) Calcular a média de quartos dos imóveis:

round(df['Quartos'].mean(), 2)

Saída:

np.float64(2.48)

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


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

df['Bairro'].nunique()

Saída:

149

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


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

df.groupby('Bairro')[['Valor']].mean().sort_values('Valor', ascending=False)

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


4) Criar um gráfico de barras horizontais que apresente os 5 bairros com as médias de valores de aluguel mais elevadas:

df_bairros = df.groupby('Bairro')[['Valor']].mean().sort_values('Valor', ascending=False).head()
df_bairros.plot(kind='barh', figsize=(14,10), color='blue'); 

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

1 resposta

Olá, Aristóteles! Como vai?

Parabéns pela resolução primorosa de toda a sequência de desafios da biblioteca Pandas! Seus códigos rodam perfeitamente no Google Colab, e os resultados encontrados fazem total sentido analítico.

Gostaria de destacar alguns pontos excelentes do seu trabalho e trazer um detalhe muito importante sobre a interpretação do seu gráfico de barras que vai te ajudar a evitar bugs visuais nos seus próximos projetos de Data Science.


Análise dos Acertos Tecnológicos

  • Desafio 1 (Média): Você mandou muito bem ao utilizar a função round(..., 2) no seu post de texto. Arredondar valores de ponto flutuante com muitas casas decimais é uma ótima prática para deixar relatórios amigáveis.
  • Desafio 2 (Dados Únicos): O método .nunique() é perfeito para entender a cardinalidade da sua variável categórica (Bairro), confirmando que existem 149 regiões diferentes mapeadas.
  • Desafio 3 (Agrupamento): Sua lógica combinando .groupby(), .mean() e .sort_values() com o parâmetro ascending=False isolou e ordenou com precisão os aluguéis do maior para o menor.

Um Detalhe Importante: A Pegadinha do kind='barh'

Ao olhar para o código e para o resultado visual do seu Desafio 4, você executou exatamente o que foi proposto na aula. Porém, repare em um comportamento curioso do Pandas ao plotar gráficos de barras horizontais (barh):

Se você olhar a tabela do seu Desafio 3, o bairro com a maior média é Joá (R$ 15.500,00), seguido por Arpoador e Cidade Jardim. No entanto, quando plotamos um gráfico de barras horizontais utilizando diretamente o .head(), o Pandas começa a desenhar as barras de baixo para cima.

Por isso, na sua imagem, o bairro Cidade Jardim aparece na base da plotagem com a maior barra, enquanto Joá e Arpoador ficaram "escondidos" na parte superior que acabou sendo cortada pelo tamanho da figura (figsize).

Como ajustar isso para o gráfico ficar perfeito?

Para que o seu gráfico de barras horizontais exiba o topo do ranking corretamente no topo do gráfico, basta aplicar o método .invert_yaxis() do Matplotlib ou utilizar o método .sort_values() de forma crescente antes do .head(). Veja como corrigir a lógica do plot:

# Invertemos para ordem crescente antes do head para que os maiores fiquem por último na tabela...
df_bairros = df.groupby('Bairro')[['Valor']].mean().sort_values('Valor', ascending=True).tail(5)

# ...e ao plotar horizontalmente, o Pandas colocará o maior valor no topo do gráfico!
df_bairros.plot(kind='barh', figsize=(14, 10), color='blue')

Dessa forma, o bairro Joá ocupará o topo do seu gráfico de barras de maneira muito mais intuitiva para quem for ler o seu relatório.

Continue com esse excelente ritmo de estudos e compartilhando suas práticas aqui no fórum!

Espero que possa ter lhe ajudado!