OpenCyber Academy
Graduação · Capítulo 18 · Português
Código do curso: OCA-095Capítulo 18: OCA-095-C018

Capítulo 18 — Perfilamento de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 18 publicada. Mapa, exemplo, EX052.

flowchart TD
  N0["18.1 O que é o perfilamento"]
  N1["Laboratório — Completude de cinco campos em 5.000 re"]
  N2["18.2 Resultados por campo"]
  N3["18.3 Resultados por linha"]
  N4["18.4 Das constatações às ações"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX052"]

Desenho lógico

flowchart LR
  N0["18.1 O que é o perfilamento"]
  N1["Laboratório — Completude de cinco campos em 5.000 re"]
  N2["18.2 Resultados por campo"]
  N3["18.3 Resultados por linha"]
  N4["18.4 Das constatações às ações"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX052"]
[18.1 O que é o perfilamento]
    |
    v
[Laboratório — Completude de cinco campos em 5.000 re]
    |
    v
[18.2 Resultados por campo]
    |
    v
[18.3 Resultados por linha]
    |
    v
[18.4 Das constatações às ações]
    |
    v
[Exemplo resolvido] --> [Exercício EX052]

Objetivos de aprendizagem

Você vai (1) perfilar a completude de um conjunto de dados; (2) interpretar os resultados por campo e por linha; (3) transformar as constatações em ações.

18.1 O que é o perfilamento

Perfilar (data profiling) significa examinar os dados para entender seu conteúdo e sua qualidade antes de tomar decisões. Amara perfila o arquivo sintético de membros do programa de fidelidade, contando os valores ausentes em cada campo e quantos registros estão completos em todos os campos. Ela explica que o perfilamento costuma ser o primeiro passo de qualquer trabalho de qualidade, porque mostra onde estão os problemas e qual é seu tamanho, o que ajuda os donos a escolher prioridades com base em evidências, e não em reclamações. Amara explica cada passo do script de perfilamento à curadora dos dados de fidelidade, que vai executá-lo de novo mais tarde.

Laboratório — Completude de cinco campos em 5.000 registros sintéticos de fidelidade

"""Profile completeness of five fields in 5,000 synthetic loyalty records (stdlib only)."""
import random
random.seed(7)
miss = {"member_id": 0.0, "postcode": 0.06, "email": 0.18, "birth_year": 0.31, "store_code": 0.02}
rows = [{f: (None if random.random() < p else "x") for f, p in miss.items()} for _ in range(5000)]
for f in miss:
    print(f"{f:<11} complete {100*sum(r[f] is not None for r in rows)/len(rows):5.1f}%")
print(f"rows complete on all fields: {sum(all(v is not None for v in r.values()) for r in rows)}")

Execute com python3 lab_profile.py. Saída verificada:

member_id   complete 100.0%
postcode    complete  93.9%
email       complete  82.3%
birth_year  complete  68.6%
store_code  complete  98.3%
rows complete on all fields: 2594

18.2 Resultados por campo

O laboratório perfila cinco mil registros. O identificador de membro está completo em todos os registros. O código de loja está completo em 98,3 por cento, o CEP em 93,9 por cento, o e-mail em 82,3 por cento e o ano de nascimento em apenas 68,6 por cento. Amara observa que o padrão faz sentido: os identificadores são gerados pelo sistema, enquanto o e-mail e o ano de nascimento dependem de os membros decidirem informá-los, e o ano de nascimento era opcional nos antigos formulários de adesão. O novo formulário mantém o ano de nascimento opcional, mas o pede com uma explicação curta sobre as ofertas ligadas à idade.

18.3 Resultados por linha

Apenas 2.594 dos 5.000 registros estão completos nos cinco campos, cerca de 51,9 por cento. Amara explica que a completude por linha é menor do que a de qualquer campo isolado, porque as lacunas caem em registros diferentes. Se uma campanha precisa de e-mail, CEP e ano de nascimento ao mesmo tempo, ela só alcança cerca de metade dos membros. Ela enfatiza que os números por campo, sozinhos, enganariam o marketing sobre quantos membros poderiam receber uma oferta direcionada. O marketing revê sua estimativa para a campanha e planeja o direcionamento com o número realista de membros alcançáveis.

18.4 Das constatações às ações

Amara discute os resultados com o dono dos dados de fidelidade. Eles concordam que o ano de nascimento só importa para as ofertas ligadas à idade e não precisa ser buscado para todos. O e-mail importa para os recibos digitais e as ofertas, então o aviso no caixa vai pedi-lo aos membros que não o têm. As lacunas de CEP vêm principalmente de um antigo canal de adesão, que será desativado. Ela registra cada ação com um dono e planeja repetir o perfilamento em três meses para medir a mudança. O dono dos dados de fidelidade aprova as ações no registro de governança.

Exemplo resolvido

Amara perfila 5.000 registros e encontra o identificador de membro completo, o código de loja em 98,3, o CEP em 93,9, o e-mail em 82,3 e o ano de nascimento em 68,6 por cento, com 2.594 linhas completas em todos os campos, e acorda ações direcionadas.

Caso sintético. Os registros são sintéticos; as saídas vêm de lab_profile.py.

Erros e limites

A completude por campo superestima as linhas utilizáveis; informe também a completude por linha.

Exercícios

Respostas comentadas

EX052. O ano de nascimento, com 68,6 por cento.

EX053. 2.594 de 5.000.

EX054. Não é buscado de modo geral, pois só importa para as ofertas ligadas à idade.