Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

[Projeto] Mão na massa: trabalhando com informações de vendas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá, William. Como vai?

Parabéns pelo excelente trabalho na atividade prática! Essa é uma das aplicações mais interessantes e reais de Engenharia e Análise de Dados: utilizar o Pandas para realizar uma auditoria de qualidade ou validação cruzada entre tabelas do seu banco de dados.

O seu script ficou impecável. A lógica de criar um DataFrame de checagem (tabelaValidacao), preenchê-lo com True e cruzar com os dados agregados para descobrir inconsistências foi uma sacada digna de nível sênior!

Analisando a sua imagem e o resultado do display(tabela_final), separei alguns pontos técnicos importantes para consolidar o seu aprendizado sobre formas normais e manipulação de dados:


1. A Elegância do Left Join para Auditoria de Dados

A escolha do parâmetro how='left' no seu método .merge() foi cirúrgica.

Quando fazemos um Left Join, preservamos todas as linhas da TabelaCombinada (a tabela da esquerda) intactas.

  • Se os valores de VendaID, Produto e Cliente existirem na tabela original de vendas, o Pandas traz a marcação True.
  • Se houver qualquer divergência em alguma dessas três colunas combinadas, a linha não encontrará correspondência e receberá um valor nulo (NaN).

O uso do .fillna(False) logo em seguida fecha o ciclo com chave de ouro, convertendo as inconsistências de forma limpa para False. Olhando para o seu resultado, fica nítido que as vendas de índice 1, 3, 7 e 9 possuem dados que violam as regras ou não constam na tabela principal.


2. Otimização de Código: Uso do .copy()

Na primeira linha do código, você utilizou o método .copy():

tabelaValidacao = TabelaVendas[['VendaID', 'Produto', 'Cliente']].copy()
  • Por que isso é uma excelente prática? Se você não tivesse colocado o .copy(), a variável tabelaValidacao seria apenas um "espelho" ou ponteiro da TabelaVendas original. Na linha seguinte, quando você criou a coluna ['eh_valido'] = True, o Pandas dispararia aquele aviso clássico e chato chamado SettingWithCopyWarning. Ao forçar a cópia, você isolou o objeto na memória do Python e blindou o seu script contra efeitos colaterais.

3. Conexão Prática com a Teoria de Normalização (Formas Normais)

Esse exercício prático ilustra perfeitamente por que normalizamos bancos de dados. Quando encontramos linhas marcadas como False, estamos nos deparando com anomalias de inserção, atualização ou redundâncias causadas pela falta de chaves primárias e estrangeiras bem amarradas nas formas normais (como a 3ª Forma Normal ou a Forma Normal de Boyce-Codd).

Em um banco de dados relacional totalmente normalizado e com integridade referencial ativa, as combinações de dados que retornaram False no seu Pandas seriam impedidas de serem gravadas no sistema, protegendo a qualidade da informação na raiz.

A sua implementação do fluxo e a clareza da tabela de saída mostram que você dominou o uso de junções de tabelas para auditoria de dados!

Espero que possa ter lhe ajudado!

Como eu venho da trilha de Ciência de Dados, procurei representar assim e ajudar, pois alguns alunos tiveram essa dificuldade de entendimento, por não ter nada visual.