banco de dados

Data Cleaning Descomplicada: Dez Passos Essenciais para a Qualidade dos Dados

A limpeza dos dados (também conhecida como data cleaning) é um dos processos mais importantes para as empresas atualmente. Se imaginarmos a quantidade de dados, originados de diversas fontes, fica fácil entender porque os dados precisam desse processo, até porque, muitas vezes podemos ter problemas de entradas de dados, inconsistências, confiabilidade,incompletude, dentre outros problemas que podem prejudicar a decisão.

Segundo Thomas C. Redman (2017), em seu artigo “Seizing Opportunity in Data Quality” , quando temos dados incompletos, pobres ou errados, eles podem causar problemas, como de consumidores insatisfeitos, perda de tempo, entre outras dificuldades que talvez prejudiquem a estratégia do negócio. Além disso, o autor comenta também que o custo com esses dados podem chegar a até 25% da receita de algumas organizações. Esses custos surgem com o tratamento necessário a esses dados. Pense que – dependendo do tamanho da organização e da quantidade de dados que armazena – até que eles sejam tratados, limpos, duplicações sejam excluídas, há um grande gasto com armazenamento e processamento desses dados.

Empresas orientadas a dados

O que é uma empresa orientada a dados (data driven)? É uma empresa que olha para os dados que possui para tomar suas decisões e, para isso, não são necessárias grandes tecnologias. Muitas vezes, as organizações possuem silos de dados nos seus departamentos, onde eles são tratados manualmente mediante planilhas  para as decisões poderem ser tomadas. Isso é o ideal? Claro que não, mas mesmo assim trata-se de um lugar onde os dados são vistos antes das decisões tomadas.

O mais importante, independente do grau de tecnologia que essa empresa possui, é a qualidade das informações, afinal, tomar decisões com dados errados é o caminho certo para o fracasso.

Se imaginarmos a tomada de decisão com base em dados, ela envolve as etapas de:

  • Perguntar (Ask) – sobre quais as hipóteses de negócio ou questões de mercado são importantes. Nesse ponto, um briefing adequado, com entrevistas aos stakeholders do projeto, pode ajudar a entender melhor as necessidades de negócios;
  • Preparar os dados para que posteriormente sejam processados. Muitas vezes, preparar significa obter esses dados através de downloads, APIs, entre outros métodos e guardá-los em um local provisório;
  • Passar por um ETL. Os dados serão processados para ter formatos compatíveis entre si, bem como uma qualidade aceitável – aqui a limpeza de dados acontece, é onde os dados serão padronizados, corrigidos e alguns deles, como no caso de duplicações, excluídos;
  • Analisar posteriormente, de modo que o analista de dados possa entender padrões, informações importantes;
  • Compartilhar mediante dashboards ou apresentações em Power Point e, finalmente;
  • A fase de ação (Act), onde as decisões tomadas com base nos dados apresentados serão executadas.

Em uma organização orientada a dados, tanto em um grande banco de dados SQL ou em uma planilha, os dados devem passar por essas etapas.

Diferença da limpeza de dados em planilhas ou SQL

O analista de dados pode se deparar com diversas realidades. Exemplo: pode ser encomendada a análise de uma quantidade massiva de dados, nesse caso, principalmente se existem várias fontes, o ideal é que o analista utilize um banco de dados, para que seja possível manipulá-los massivamente através de comandos SQL. Algumas queries em SQL podem ajudar nesse processo de data cleaning, por exemplo:

Encontrar um campo em branco

Suponha que você queira verificar se o campo “nome” está em branco na tabela “formulario_site” do banco de dados “clientes”. Aqui está um exemplo de consulta SQL:

SELECT *
FROM clientes.formulario_site
WHERE nome IS NULL OR nome = ''

Esta consulta retornará todas as linhas onde o campo especificado está vazio (contém nulo ou uma string vazia).

Padronizar formato de data

Datas às vezes podem mostrar formatos de entradas diferentes, o que pode atrasar a limpeza e padronização dos dados. Para atualizar o formato de data na coluna “data_contato” para o padrão brasileiro (dd/mm/aaaa), você pode usar a função de formatação de datas específica do seu banco de dados para garantir que os dados sejam convertidos corretamente. 

UPDATE clientes.formulario_site SET data_contato = DATE_FORMAT(data_contato, '%d/%m/%Y')

Esses exemplos são de padronização para limpeza de dados em bancos de dados SQL, mas e em planilhas?

Planilhas como fontes de dados

Caso seja uma quantidade pequena de dados, uma planilha basta para fazer a limpeza dos dados. Contudo, se o analista optar por manipular dados de uma planilha com várias linhas, pode se perder na hora de conferir aspectos importantes desse processo, modificações, além de não fazer uma boa gestão de dados.

O que eu quero dizer aqui, é que tanto banco de dados baseados em SQL como em planilhas, são ótimas ferramentas de data cleaning.

Não há método mais simples ou mais fácil. A gestão de dados envolve processos e disciplina, principalmente nessa etapa da limpeza, para manter a integridade dos dados. O que é preciso observar é o que você precisa para o momento e qual o melhor recurso disponível.

O problema das planilhas, ao meu ver, é que, como ela não é um sistema rígido e, se não ficam claras as regras de negócio, elas podem se multiplicar dentro de uma empresa e cada funcionário seguir um padrão para determinadas operações.

Um caso real de data cleaning com planilhas

Um amigo meu que trabalha em Londres, em uma multinacional do ramo de vendas, relatou que sua empresa tem alguns departamentos onde eles trabalham muito com planilhas. Ele atua na área de Payroll e alguns colegas seus, de outras filiais da empresa pela Europa, também utilizam muito essa ferramenta. 

Um exemplo que ele me comentou é que eles têm nomes de departamentos e usam sufixos para registrá-los nas suas planilhas, mas que, por não haver uma padronização da entrada de dados, acontece muito de seus colegas usarem padrões diferentes de sufixos. Consequentemente, quando ele precisa realizar algum trabalho com esses dados, ele antes precisa arrumar esses dados para que possa ter uma planilha confiável.

Outro caso que ele me comentou é que ao usar o VLOOKUP para achar referências associadas, se a pessoa usa um carácter ou padrão diferente, o resultado dá erro. Outro problema de padronização.

Um exemplo que ele me deu nesse sentido é que às vezes as pessoas digitam o dado na planilha e colocam um espaço no final. No caso de um nome de funcionário, ao fim do nome, o colaborador coloca um espaço, por exemplo. Existirá aqui um problema na hora de fazer uma associação. Se posteriormente for feita a busca pelo nome, aqueles com espaço, o Excel entenderá como diferente. Se ele for concatenar, vinculará com o espaço também.

Isso não é um problema exclusivo das planilhas. Em bancos de dados esse é um problema frequente também, de sistemas que não tratam esse tipo de comportamento do usuário.

Tratando espaços desnecessários com SQL

Em um banco de dados SQL, esses espaços desnecessários podem ser tratados com a função TRIM. Veja o exemplo a seguir, usando o caso da tabela “clientes”:

UPDATE clientes.clientes 
SET nome_cliente = TRIM(nome_cliente);

Essa consulta SQL fará um update na tabela “clientes” do banco de dados “clientes”, na coluna “nome_cliente”, removendo os espaços em branco do início e do fim dos valores presentes nessa coluna para todos os registros. Isso resultará em nomes de clientes sem espaços desnecessários.

Integridade dos dados

Integridade de dados é a garantia de que os dados permanecem precisos, completos e consistentes ao longo do tempo, sem sofrer alterações não autorizadas, corrupção ou perda. 

Existem diferentes tipos de integridade de dados:

  • Integridade de Entidade: Garante que cada linha ou registro em um banco de dados seja única e devidamente identificada.
  • Integridade de Domínio: Assegura que os valores armazenados estejam em faixas aceitáveis e respeitem as restrições de tipos de dados.
  • Integridade Referencial: Mantém a consistência entre diferentes tabelas de um banco de dados. Por exemplo, em um SGBD relacional, a integridade referencial garante que as relações entre tabelas sejam mantidas.
  • Integridade de Processamento: Refere-se à precisão e à correção dos cálculos e processamentos aplicados aos dados.

Principalmente no caso da integridade de domínio, Elmasri e Navate autores do livro Sistemas de Banco de Dados (Pearson Universidades; 7ª edição, 2019), afirmam que alguns bancos de dados possuem restrições de integridade, que envolve especificar um tipo de dados para cada item de dados. Além disso, os autores afirmam que a restrição de integridade deve ser observada pelo projetista do banco de dados. Por isso, é importante que seja verificada a entrada de dados para avaliar se ela corresponde ao tipo especificado. Caso não, o sistema deve alertar o usuário. Caso o banco ou fonte de dados (planilha) aceitem entrada de dados diferentes dos tipos especificados, posteriormente eles terão que ser limpos. Isso é um problema, pois quando a integridade dos dados é baixa, pode causar erros em análises, além disso, há uma demora no processo de tomada de decisão. 

Problemas comuns de integridade de dados

  • Excesso de duplicações
  • Erros de entrada
  • Erros humanos
  • Vírus
  • Malware
  • Hacking
  • Falha de sistemas que podem corromper alguns dados

Percebo, no meu dia a dia, que – principalmente em sistemas bem projetados, com avisos, feedbacks aos usuários, etc. – é difícil ter problemas de integridade. 

Para tomar boas decisões, os dados devem estar limpos e alinhados aos objetivos de negócios. É por isso que, na minha opinião, ao se projetar um banco de dados é importante ter ao lado um analista de dados que irá colaborar, como consultor, junto ao administrador do banco de dados, para validar o projeto. Assim, ambos irão observar os dados que irão ser captados, campos obrigatórios, formatos, formas de evitar duplicações, entre outros detalhes. Isso irá diminuir (ou até eliminar) o tempo de data cleaning, posteriormente.

Dados oriundos de formulário on-line ou campos de pesquisa, dentre outros, onde os tipos de dados, feedback e orientação ao usuário não são especificados, esses erros são mais frequentes, pois, além de afetar a integridade, permitirão a entrada de dados incorretos.

Dados incorretos

Colunas em branco, entradas erradas (como nomes de cidade, próprios etc.), podem ser consideradas dados sujos ou incorretos. São resultados de erros de processos, de entrada de dados, mau treinamento de usuários.

Por exemplo, observe a tabela abaixo:

CLIENTE_NOMECLIENTE_CIDADE
João da SilvaSão Paulo
Maria BeltramiSao Paulo
Jandira de SáSao Paulo
Álvaro RodriguesSão Paulo
Nome da cidade de São Paulo sem o acento.

Note que o nome da cidade de São Paulo apresenta erro em duas das linhas. Isso acontece, pois, provavelmente o usuário na hora de imputar o dado precisou escrever o nome da cidade manualmente. Não havia um menu suspenso no formulário onde ele pudesse escolher o nome. Entende? Toda vez que o usuário tiver que colocar uma informação manualmente, existirá a chance de que ele (por desatenção) escreva o dado de forma errada, gerando um problema de inconsistência.

Em uma planilha, o analista pode simplesmente usar um find/replace para trocar esses nomes.

Em um banco de dados SQL, pode ser utilizado um comando para a troca massiva:

Para corrigir os valores da coluna “cliente_cidade” em que “Sao Paulo” esteja escrito incorretamente, você pode usar a cláusula UPDATE com a função REPLACE() para modificar os dados. Aqui está um exemplo de como realizar essa atualização:

UPDATE clientes.cliente_cidade 
SET cliente_cidade = REPLACE(cliente_cidade, 'Sao Paulo', 'São Paulo') 
WHERE cliente_cidade = 'Sao Paulo';

Esta consulta SQL atualizará todas as linhas na tabela “cliente_cidade” onde o valor na coluna “cliente_cidade” é “Sao Paulo”, substituindo-o por “São Paulo”.

Faça sempre um backup dos dados antes de executar qualquer atualização em massa!

Dez passos para o processo de Data Cleaning 

  1. Passe algum tempo fazendo uma inspeção e anotações antes de executar o processo de data cleaning. Anote tudo, percepções sobre os dados, tudo que pode estar errado e tire dúvidas com os responsáveis;
  2. Faça um backup dos dados. Principalmente se estiver limpando dados direto de um banco de dados;
  3. Faça uma lista de tudo o que irá realizar. Às vezes, algumas limpezas de dados precisam ter uma sequência lógica, por exemplo, não há motivo para fazer a limpeza em duplicações, afinal elas serão apagadas. Sendo assim, sugiro colocar a exclusão de duplicações antes dos itens restantes;
  4. Formato de números, datas, moedas, precisam ter um padrão;
  5. Documente e publique as alterações. Insisto muito na documentação, pois ela permite que todos saibam o que está acontecendo;
  6. Trate as entradas dos dados!!!! Formatos de moeda, Unidades de medida, Formatos de data – problemas de acurácia, como utilização de diversos formatos –, todos esses tipos de dados podem ser tratados antes de entrarem no banco de dados ou planilha de destino de um formulário. Faça com que o sistema que está captando e trabalhando com esses dados, antes de armazená-los, execute uma limpeza e padronização das informações;
  7. Trate dos dados em branco. Há diversas técnicas e todas podem ser analisadas em suas vantagens e desvantagens. Principalmente aqueles dados que serão importantes para uma análise posterior, precisam ser obrigatórios, senão temos aqui, um outro problema que precisará ser tratado posteriormente. Você pode preencher campos em branco com médias, medianas, usando técnicas de interpolação para estimar os valores;
  8. Converta os tipos de dados se necessário;
  9. Remova espaços nos dados que possam atrapalhar filtragens e outras ações; e
  10. Corrija dados errados (acentuação, erros ortográficos, caracteres especiais).

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *