Skip to content

rexpires/SQL_DataCleaning_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

image

Projeto Limpeza e Transformação de Dados com SQL

Neste projeto realizo diversas consultas com SQL com o intuito de limpar e transformar alguns dados da base de dados chamada "Data Cleaning Project DB". O passo a passo foi o seguinte:

1 Padronizar formato de data;

2 Preencher dados nulos em "Property Address";

3 Quebrar "OwnerAddress" e "PropertyAddress" em colunas individuais (address, city, state);

4 Mudar Y ou N para Yes e NO no campo "Sold as Vacant";

5 Remover valores duplicados;

6 Deletar colunas não usadas.


Detalhamento:

1 Padronizar formato de data.

Iniciando com um "SELECT" de toda a tabela "NashvilleHousing", para verificação dos dados como um todo:

image

Nota-se que a coluna "SaleDate" conta com dados no formato "DATETIME". Para facilitar possíveis consultas e análise dessa coluna, é necessário alterar o formato para "DATE":

image

Portanto criei uma nova coluna "SalesDateConverted" (formato Date), utilizei o "ALTER TABLE" e "ADD" para adicioná-la na tabela e fiz um "UPDATE SET" com esse novo formato (Date). A partir de agora, podemos utilizar a coluna "SalesDateConverted" para consultarmos a data:

image


2 Preencher dados nulos em "Property Address".

O endereço é um dado importante para o negócio e não deve estar em branco.

Ao fazermos uma busca por valores nulos utilizando "WHERE Property Address is null" na coluna "Property Address", encontramos o seguinte:

image

Analisando os dados, nota-se que quando os valores da coluna "ParcelID" são iguais, os valores de "Property Address" também são iguais, estabelecendo uma correlação entre eles:

image

Portanto a ideia foi fazer um "JOIN" da tabela com a própria tabela (criando as tabelas "NashvilleHousing" a e b), igualando os "ParcelID" e diferenciando os "UniqueID", resultando no seguinte:

image

Fiz um "UPDATE" na tabela "a", estabelecendo que onde houver valores nulos em "Property Address" os mesmo devem ser preenchidos com os valores de endereço da "b". 29 linhas foram modificadas:

image

Rodando a penúltima query novamente ("SELECT"), nenhum resultado é encontrado, mostrando que atualização anterior foi bem sucedida:

image


3 Quebrar "OwnerAddress" e "PropertyAddress" em colunas individuais (address, city, state).

Selecionando as colunas "Property Address" e "Owner Address" encontramos o endereço completo, endereço, cidade e estado, o que acaba dificultando uma análise mais aprimorada desses dados.

image

A solucionar que encontrei para o problema foi trocar o delimitador de dados ‘,’ por ‘.’ para que a função "PARSENAME" possa reconhecer cada objeto corretamente:

image

Criei e atualizei as novas colunas "PropertySplitAddress" e "PropertyCityAddress":

image

E também criei e atualizei as novas colunas "OwnerSplitAddress", "OwnerSplitCity" e "OwnerSplitState":

image


4 Mudar Y ou N para Yes e NO no campo "Sold as Vacant".

Na coluna "SoldAsVacant" encontrei os dados "Y", "N", "Yes" e "No". Apesar de compreender que "N" e "No" são a mesma coisa, por exemplo, é interessante realizar a padronização dos dados para o mesmo valor. Utilizando o "COUNT" notei que "Yes" e "No" estão em maior quantidade:

image

Portanto transformarei os "Y" e "N" em "Yes" e "No":

image

"UPDATE" dos valores transformados:

image

Resultado: valores padronizados:

image


5 Remover valores duplicados.

Utilizando o "ROW_NUMBER()" e "PARTITION BY" de colunas importantes, encontrei linhas que eram exatamente iguais, sendo que é possível identificá-la pelo índice 2 da coluna criada "row_num" ao final da tabela:

image

A ideia aqui foi criar uma "CTE" chamada "RowNumCTE" para que depois eu filtrasse as linhas com "row_num" > 1, ou seja, que estivessem duplicadas:

image

Deletei as linhas duplicadas:

image

Não há mais valores duplicados:

image


6 Deletar colunas não usadas.

As colunas que alterei nos tópicos anteriores "SaleDate", "PropertyAddress", "OwnerAddress" e "TaxDistinct" (esta última não modifiquei, mas entendo que não necessitaria dela em uma análise) devem ser deletadas, pois não têm mais utilidade, portanto:

image

Concluído a limpeza e transformação dos dados!

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors