DrAdriano / Analise-de-Outliers

Análise e tratamento de dados, em que é usado Box Plot para retirar outliers, isto é, dados com valores muito discrepantes. Isso é realizado com Python (Pandas e Matplotlib Pyplot).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Análise de Outliers

Sumário

Sobre o projeto

Este repositório contém uma solução para um desafio envolvendo análise de dados e está organizado de maneira detalhada e acessível, podendo ser entendida por quem é iniciante na linguagem Python, principalmente se tiver familiaridade com as biblioteca Pandas. Esse é um projeto de portfólio, que também tem como objetivo colocar em prática, bem como documentar, alguns dos meus conhecimentos de Python, por isso, nem sempre desenvolvo a Solução Detalhada da maneira mais objetiva.

Desafio: Analisar os dados de uma empresa de aluguel de imóveis e fazer o devido tratamento de dados, principalmente para os inúmeros valores nulos, conhecidos como valores missing. O foco da análise são os imóveis residenciais, um subconjunto da base de dados original, que precisa ter os outliers, isto é, os dados com valores muito discrepantes dos outros, retirados.

Estão disponibilizados neste repositório os seguintes arquivos: a base de dados, que contém informações, como valor do aluguel e condomínio, de aproximadamente 33.000 imóveis; a solução detalhada, desenvolvida no Jupyter Nootebook; a solução final, adaptada para o Visual Studio Code a partir da solução detalhada, mas desenvolvida sem a poluição visual dos comentários; a imagem com o esquema do Box Plot, usada no decorrer do README; e a pasta com arquivos gerados no código, como a base de dados tratada, gráficos e capturas de tela.

About the project

This repository contains a solution to a challenge involving data analysis and is organized in a detailed and accessible way, which can be understood by anyone who is new to the Python language, especially if they are familiar with the Pandas library. This is a portfolio project, which also aims to put into practice, as well as document, some of my Python knowledge, so I don't always develop the Detailed Solution in the most objective way.

Challenge: Analyze the data of a real estate rental company and process the data properly, especially for the numerous null values, known as missing values. The focus of the analysis is residential properties, a subset of the original database, which needs to have outliers, that is, data with values that are very different from the others, removed.

The following files are available in this repository: the database, which contains information, such as rent and condominium fees, for approximately 33,000 properties; the detailed solution, made in Jupyter Notebook, in which there are explanations of how ideas were developed; the final solution, adapted for Visual Studio Code from the detailed solution, but developed without the visual clutter of comments; the Box Plot schematic image used throughout the README; and the folder with files generated in the code, such as the treated database, graphics and screen captures.

Linguagens e tecnologias usadas

Bibliotecas Python usadas

Método de eliminar os outliers

Para eliminar os outliers, usaremos o Box Plot, também conhecido como diagrama de caixa, que é uma maneira gráfica de representar a alteração dos dados de uma variável por meio de quartis. O esquema abaixo mostra como é delimitado cada quartil, sendo que os pontos localizados nas regiões descritas como outliers são excluídos.

  • Q1: Valor referente ao primeiro quartil (25%).
  • Q3: Valor referente ao terceiro quartil (75%).
  • IIQ: Intervalo interquartílico, a variação entre o primeiro e o terceito quartil.
  • Limite inferior: representado pela expressão Q1 - 1.5 $\times$ IIQ, uma métrica para saber quais valores inferiores estão muito discrepantes com relação aos outros.
  • Limite superior: representado pela expressão Q3 + 1.5 $\times$ IIQ, para retirar os valores superiores muito destoantes.

Passo a passo do código

  • Passo 1: Importar a base de dados
  • Passo 2: Visualizar a base de dados
    • 2.1 Mostrar os tipos de dados
    • 2.2 Mostrar os tipos de imóveis
    • 2.3 Identificar os imóveis residenciais
  • Passo 3: Tratar os dados
    • 3.1 Excluir colunas desnecessárias
    • 3.2 Tratar valores nulos do aluguel
    • 3.3 Tratar valores nulos do condomínio
  • Passo 4: Analisar os dados
    • 4.1 Calcular do valor bruto e do metro quadrado
    • 4.2 Calcular os valores estatísticos descritivos por bairro
    • 4.3 Remover os outliers
    • 4.4 Recalculando dos valores estatísticos

Conclusões

O desafio girou em torno dos valores de aluguel de imóveis residenciais, que representam cerca de 66% da base de dados original, aproximadamente 21.500 imóveis divididos em 5 tipos: Apartamento, Quitinete, Casa de Vila, Casa de Condomínio e Casa.

ImoveisResidenciaisPorTipo

Houveram muitos indícios que a bases de dados estavam com outliers, como pode ser visto nos histogramas sobre a quantidade de imóveis pelo valor do aluguel e sobre valor de aluguel máximo por bairro. Abaixo estão a versão antes e depois de um tratamento de dados, respectivamente.

HistogramaFaixasDeAluguel

HistogramaFaixasDeAluguel

AluguelMédioPorBairro

AluguelMédioPorBairro

No primeiro histograma só tem uma coluna, o que indica que os dados não estão bem distribuídos. Ao mesmo tempo, no histograma do valor máximo do aluguel antes do tratamento, vemos que alguns valores de aluguel que são muito altos, existe, por exemplo, um apartamento no Botafogo com 4,5 milhões de aluguel. Há uma possibilidade de haver alguns dados com o preço do imóvel, não com o aluguel.

Como pode ser visto no segundo histograma, sobre a quantidade de imóveis pelo valor do aluguel, a distribuição é assimétrico para a direita, o que indica que a moda é menor que a mediana, as quais é menor que a média, o que foi verificado na análise. Esse tipo de resultado é comum de aparecer ao analisar valores e rendas.

Aplicamos a análise do Box Plot, inicialmente, para todos os imóveis residenciais juntos, como pode ser visto abaixo, mas não é a melhor maneira de analisar. Por exemplo, as Casas de Condomínio costumam ter valores maiores de aluguel, em comparação com as Quitinetes ou Apartamentos, então pode acontecer de serem retirados muitos desses valores como outliers, mesmo que sejam dados que representem bem o conjunto das Casas de Condomínio. Por isso, faremos também a análise por tipo de apartamento, para buscar melhores resultados.

BoxPlotPorTipo

Usando o Box Plot para todos os dados juntos, foram excluídos 4224 imóveis na forma de outliers. Diminuição equivalente à, aproximadamente, 19%.

  • Foram 3336 imóveis do tipo "Apartamento". Diminuição equivalente à, aproximadamente, 18%.
  • Foram 310 imóveis do tipo "Casa". Diminuição equivalente à, aproximadamente, 32%.
  • Foram 573 imóveis do tipo "Casa de Condomínio". Diminuição equivalente à, aproximadamente, 64%.
  • Foram 5 imóveis do tipo "Casa de Vila". Diminuição equivalente à, aproximadamente, 2%.
  • Foram 0 imóveis do tipo "Quitinete". Diminuição equivalente à, aproximadamente, 0%.

BoxPlotPorTipo

Usando o Box Plot para os dados organizados por tipo, foram excluídos 3495 imóveis na forma de outliers, uma diminuição equivalente à, aproximadamente, 16%.

  • Foram 2971 imóveis do tipo "Apartamento". Diminuição equivalente à, aproximadamente, 16%.
  • Foram 446 imóveis do tipo "Casa". Diminuição equivalente à, aproximadamente, 46%.
  • Foram 28 imóveis do tipo "Casa de Condomínio". Diminuição equivalente à, aproximadamente, 3%.
  • Foram 25 imóveis do tipo "Casa de Vila". Diminuição equivalente à, aproximadamente, 10%.
  • Foram 25 imóveis do tipo "Quitinete". Diminuição equivalente à, aproximadamente, 3%.

Mesmo usando o Box Plot por tipo de imóvel, as Casas ainda tiveram muitos dados excluídos, então pode ser necessário uma análise de valores superiores e inferiores é uma melhoria que pretendo fazer eventualmente. Outras pontos para melhoria são: Deixar mais apresentável e bonito os títulos e rótulos dos eixos dos gráficos; Melhorar a explicação em alguns trechos, para ficar mais didático; Organizar os bairros, em ordem crescente ou decrescente da média, mediana ou desvio padrão.

Créditos

O desafio, bem como muitos detalhes de sua resolução, é baseado nas aulas do Rodrigo Fernando Dias, no curso Python Pandas: tratando e analisando dados, da plataforma da Alura.

Contato

Criado por Adriano Jr. G. Gonçalves - Sinta-se à vontade para contribuições, críticas, dúvidas e/ou sugestões.

About

Análise e tratamento de dados, em que é usado Box Plot para retirar outliers, isto é, dados com valores muito discrepantes. Isso é realizado com Python (Pandas e Matplotlib Pyplot).


Languages

Language:Jupyter Notebook 99.6%Language:Python 0.4%