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!
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:
Left Join para Auditoria de DadosA 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.
VendaID, Produto e Cliente existirem na tabela original de vendas, o Pandas traz a marcação True.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.
.copy()Na primeira linha do código, você utilizou o método .copy():
tabelaValidacao = TabelaVendas[['VendaID', 'Produto', 'Cliente']].copy()
.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.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.