1
resposta

Resultado e dúvida - Desario 09

Tenho uma dúvida sobre como validar se a análise está correta, por exemplo, achei o valor de jacarepaguá elevado. Usei sort_values no df acima, mas gerando o plot ele fica ordenado do menor pro maior, como resolver?

import pandas as pd

url = 'https://raw.githubusercontent.com/alura-cursos/pandas-conhecendo-a-biblioteca/main/base-de-dados/aluguel.csv'
df_aluguel = pd.read_csv(url, sep=';')
df_aluguel.head(10)

df_aluguel['Quartos'].mean()
df_aluguel.Bairro.nunique()
media_bairros = df_aluguel.groupby('Bairro')[['Valor']].mean().sort_values('Valor', ascending=False).round(2).head(5)
media_bairros

Resultado:

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

1 resposta

Oi, Marcelo! Tudo bem?

Sua análise está bem encaminhada! Você já agrupou os dados por bairro e calculou a média do valor de aluguel, ordenando corretamente com ascending=False para ver os bairros com aluguel mais caro. Agora, sobre suas dúvidas:

Sobre o valor elevado em Jacarepaguá

Em casos, como esse, é possível que o valor médio esteja sendo distorcido por outliers (valores extremamente altos). Para validar isso, você pode:

  1. Ver os valores disponíveis para esse bairro:

    df_aluguel[df_aluguel['Bairro'] == 'Jacarepaguá']['Valor'].describe()
    
  2. E até mesmo verificar os valores mais altos:

    df_aluguel[df_aluguel['Bairro'] == 'Jacarepaguá'].sort_values('Valor', ascending=False).head()
    

Se encontrar aluguéis muito acima da média (como casas de luxo ou imóveis comerciais), isso pode estar puxando a média pra cima. Nesse caso, usar a mediana em vez da média pode ser mais representativo:

df_aluguel.groupby('Bairro')[['Valor']].median().sort_values('Valor', ascending=False).head()

Sobre o gráfico ficar do menor para o maior

Se estiver usando plot(kind='barh') (gráfico horizontal), mesmo que use sort_values(ascending=False), o maior valor acaba ficando embaixo. Para corrigir, basta inverter o eixo Y:

import matplotlib.pyplot as plt

media_bairros.plot(kind='barh', figsize=(8, 5))
plt.gca().invert_yaxis()  # Faz com que os valores mais altos fiquem no topo
plt.title('Top 5 bairros com maior valor médio de aluguel')
plt.xlabel('Valor médio')
plt.ylabel('Bairro')
plt.tight_layout()
plt.show()

Se estiver usando gráfico vertical (kind='bar'), a ordem já é respeitada naturalmente e não precisa inverter nada.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Ícone de sugestão Para saber mais:

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

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!