Como melhorar o processo de limpeza e transformação de dados geoespaciais com Power BI e Python?
Limpar dados é um processo comum para qualquer pessoa que trabalhe com análise de dados.
Às vezes é rápido, por muitas outras não.
A Cassie exemplificou muito bem com esse tweet:
Outro dia em meu trabalho, estava limpando e transformando dados geoespaciais (de endereço, latitude e longitude) dentro do Power BI, mas estava levando um bom tempo.
Fui ver se tinha uma forma melhor de otimizar esse processo e encontrei!
Bom, no texto de hoje eu contarei o que encontrei e a minha experiência.
Bora lá?!
Sumário
Obtendo o endereço com API no Power BI
Obtendo o endereço com API no Power BI
Os dados de entrada do usuário geralmente vem bem sujos.
O nome de uma cidade como São Paulo, pode vir como:
SP, Sao Paulo, São Psulo, sap paulo, SãoPaulo…
Agora multiplica isso para outras cidades, bairros, ruas…
Bom, pensei que o CEP poderia me ajudar, já que teria todas essas informações, mas como extrair dados de endereço do CEP com o Power BI?
Bom, tendo os dados de cep na sua tabela será necessário:
- Abrir uma nova fonte de dados da web para a API de CEP. Você pode usar o via cep: https://viacep.com.br/
2. Transformar ela em uma consulta, modificando o valor inserido do CEP para o texto “&Text.From(cep)&”.
Código modificado no editor avançado do power query:
cep)=>letFonte = Json.Document(Web.Contents(“viacep.com.br/ws/”& Text.From(cep) &”/json/”)),#”Convertido para Tabela” = Table.FromRecords({Fonte}),#”Tipo Alterado” = Table.TransformColumnTypes(#”Convertido para Tabela”,{{“cep”, type text}, {“logradouro”, type text}, {“complemento”, type text}, {“bairro”, type text}, {“localidade”, type text}, {“uf”, type text}, {“ibge”, Int64.Type}, {“gia”, Int64.Type}, {“ddd”, Int64.Type}, {“siafi”, Int64.Type}})in#”Tipo Alterado”
Ela irá virar uma função:
3. Adicionar uma nova coluna com a consulta a ser realizada em todos os CEPs:
4. Pronto! Uma nova coluna será gerada com todos os endereços do CEP.
Legal né?!
Eu vi essa dica nesse vídeo aqui:
Obtendo as coordenadas geoespaciais com Python
Ótimo, já tinha os dados de endereço limpo, mas se quisesse ter um mapa bonitão, precisaria das coordenadas da latitude e longitude.
Passando no feed do Linkedin, encontrei esse texto maravilhoso da Naomi:
Gosto do Linkedin por isso, acabo conseguindo me atualizar de algumas informações que nem sempre chegariam em mim por outras redes.
Apenas é necessário realizar “limpezas” de vez em quando como qualquer outra rede social.
Nele a Naomi utiliza a API do Google para coletar as coordenadas de um conjunto de dados com quase 83 mil linhas.
As ferramentas do Google são bem poderosas e podem te auxiliar em muitos aspectos.
Eu já flertei com uma de tradução e contei nesse texto aqui:
Bem… meus dados eram bem menores do que esses e não queria utilizar os créditos do Google então… dei mais uma googlada.
Encontrei essa pergunta no fórum da Alura:
Fiquei super animado com a resposta!
Conheci a Geopy e fui testar dentro do Power BI.
Dentro do Power Query você pode utilizar scripts em Python:
Mesclei as colunas da cidade com a da rua.
Coloquei o código:
from geopy.geocoders import Nominatimgeolocator = Nominatim(user_agent=”geolocalização”)lat = []long = []for i in dataset[‘Endereco’]:location = geolocator.geocode(i)lat.append(str(location.latitude))long.append(str(location.latitude))dataset[‘lat’] = latdataset[‘long’] = long
Rodei e…
Muito legal né?!
Se você tiver curiosidade sobre ela, tem esse vídeo da Kizzy utilizando essa biblioteca também:
Considerações finais
Durante minha jornada ao tentar deixar mais ágil o processo de limpeza de dados eu encontrei mais duas formas de manusear dados geoespaciais com Python e Power BI.
Mas ao chegar ao meu trabalho… os valores de CEP não tinham sido validados e nem todos estavam corretos.
Ou seja… não resolveu dessa vez.
Dei risada e voltei a limpeza e transformação “manual”, mas de qualquer forma fiquei alegre pela experiência e aprendizado.
Agora me diga, quais outras otimizações de limpeza de dados você conhece?
Compartilhe nos comentários e vamos trocar conhecimento.
Se você chegou até aqui e curtiu, dê palmas, compartilhe e se inscreva para me acompanhar.
Ainda há muito a se explorar.