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.
1 Padronizar formato de data.
Iniciando com um "SELECT" de toda a tabela "NashvilleHousing", para verificação dos dados como um todo:
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":
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:
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:
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:
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:
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:
Rodando a penúltima query novamente ("SELECT"), nenhum resultado é encontrado, mostrando que atualização anterior foi bem sucedida:
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.
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:
Criei e atualizei as novas colunas "PropertySplitAddress" e "PropertyCityAddress":
E também criei e atualizei as novas colunas "OwnerSplitAddress", "OwnerSplitCity" e "OwnerSplitState":
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:
Portanto transformarei os "Y" e "N" em "Yes" e "No":
"UPDATE" dos valores transformados:
Resultado: valores padronizados:
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:
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:
Deletei as linhas duplicadas:
Não há mais valores duplicados:
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:
Concluído a limpeza e transformação dos dados!





















