Pular para o conteúdo

Tema

Programação

Folha de revisão · 3 temas · Engenharia de Analytics

Feita para a véspera. Imprimir esta página tira o menu e as abas.

Python para analytics: pandas sem armadilha

A banca não pede código na sabatina, mas pergunta o que você faria com um arquivo problemático. As respostas que impressionam falam de tipo, de nulo e de grão — os três lugares onde o número sai errado sem ninguém perceber. E a pergunta seguinte é sempre quando NÃO usar pandas.

Como cai: Você recebeu um CSV de 4 GB com colunas mal tipadas. O que faz antes de qualquer análise?

Erros comuns

  • Deixar o pandas inferir tipo. Coluna de código com zero à esquerda vira número e perde o zero; data vira texto; identificador grande perde precisão. Tipagem explícita na leitura evita tudo isso.
  • Preencher nulo com zero por reflexo. Zero é um valor: entra na soma e na média. Nulo é ausência. Trocar um pelo outro muda o indicador sem avisar.
  • Juntar tabelas sem conferir o grão. Se a chave não é única do lado direito, a junção multiplica linhas e a soma passa a contar duas vezes. É o erro mais caro e o mais silencioso.
  • Usar laço para percorrer linhas. Além de lento, costuma esconder a lógica; operação vetorizada ou groupby diz melhor o que está acontecendo.
  • Carregar tudo na memória quando o banco poderia filtrar. Trazer 4 GB para agregar 200 linhas é desperdício: empurre filtro e agregação para onde o dado está.
  • Esquecer o fuso horário. Data sem fuso vira comparação errada entre origens diferentes, e o relatório fecha o dia na hora errada.

Vocabulário

grão
— O que uma linha representa. "Uma linha por pedido" e "uma linha por item do pedido" são grãos diferentes.

Git e revisão de código para quem trabalha com dados

A ementa pede Git, mas a banca pergunta outra coisa: como o seu trabalho vira algo que outra pessoa consegue revisar, repetir e reverter. Quem responde citando comandos perde; quem descreve o fluxo, o que escreve no pedido de revisão e o que olha ao revisar SQL alheio mostra que trabalha em equipe.

Como cai: Como uma mudança sua numa transformação chega ao repositório e ao ambiente dos outros?

Erros comuns

  • Commitar na branch principal direto. Perde revisão, perde o momento em que alguém poderia ter visto o erro, e dificulta reverter só aquela mudança.
  • Escrever mensagem de commit que descreve o diff. 'Altera consulta' não diz nada; a mensagem existe para explicar a intenção e o porquê, que o diff não mostra.
  • Abrir pedido de revisão gigante. Revisão de 800 linhas vira aprovação sem leitura; mudança pequena e frequente é revisada de verdade.
  • Revisar SQL procurando erro de sintaxe. Isso o computador faz; o revisor humano existe para checar grão, regra de negócio e impacto em quem consome.
  • Versionar credencial junto com o código. Repositório é histórico permanente; apagar em commit posterior não apaga do histórico.
  • Tratar notebook como entregável versionado sem cuidado. Notebook guarda saída e ordem de execução, o que polui o diff e esconde estado; o que vai para o repositório precisa ser limpo ou convertido.

Testes e reprodutibilidade em projetos de dados

A pergunta chega assim: 'como você sabe que esse número está certo?'. Quem responde 'conferi' não convence. Quem separa teste de código de teste de dado, dá exemplos dos dois e explica como outra pessoa reproduz o mesmo resultado amanhã, mostra maturidade que a maioria dos candidatos não tem.

Como cai: Como você garante que o número que você entregou hoje pode ser reproduzido daqui a seis meses?

Erros comuns

  • Testar só o código. A transformação pode estar correta e o número errado, porque o dado de entrada mudou. Teste de dado é metade da suíte.
  • Escrever teste que repete a implementação. Se o teste calcula do mesmo jeito que o código, ele passa junto com o bug; teste bom afirma o resultado esperado, de fora.
  • Achar que notebook que roda é reproduzível. Ele carrega estado de execuções anteriores e a ordem das células pode não ser a de cima para baixo; reiniciar e rodar do zero é o teste.
  • Esquecer de fixar a versão das bibliotecas. Mesma análise, biblioteca diferente, resultado diferente, meses depois.
  • Não registrar qual corte do dado foi usado. 'Rodei ontem' não reproduz nada; é preciso a data de corte ou a versão da tabela.
  • Cobrar cobertura de teste como número. Cobertura alta com asserções fracas dá falsa segurança; o que importa é o caso de borda coberto.