Nesta aula
Preparar é decidir, não só limpar.
Antes de treinar um modelo, a tabela precisa estar certa. Aqui você aprende a ler uma tabela sem estragá-la e a evitar o erro mais comum: dar ao modelo uma informação do teste sem perceber.
- Ler um arquivo declarando tipos e faltantes
- Tratar faltantes e duplicatas com critério
- Dividir os dados sem vazar o teste
De onde vem o dado
Use fontes com regras claras: uma API pública, como a do IBGE, ou um portal de dados abertos com licença declarada. Raspar um site é outra coisa. O robots.txt é um pedido para robôs, não uma permissão, e os termos de uso valem por cima dele.
Se a tabela tem dados de pessoas, vale a LGPD. Nome, CPF e telefone são dados pessoais. Se o modelo não precisa da coluna, ela sai antes de qualquer outra etapa.
Antes de abrir a tabela, escreva uma ficha com cinco respostas. Quem coletou e para quê? O que é uma linha: uma pessoa, uma compra, um dia? Quem ficou de fora? O que cada coluna significa, e em que unidade? O que já foi feito com ela?
Ler sem estragar
O pandas tenta adivinhar o tipo de cada coluna. Um "não informado" no meio de números faz a coluna inteira virar texto. Por isso, declare tudo na leitura.
df = pd.read_csv(
"pedidos.csv",
sep=";", # planilha brasileira usa ponto e vírgula
decimal=",", # e vírgula para decimais
na_values=["não informado", "-"], # faltantes que o pandas não reconhece
dtype={"valor_centavos": "Int64"},
)
O tipo Int64, com I maiúsculo, aceita faltantes sem virar decimal. Um inteiro comum vira número com ".0" assim que aparece um único faltante.
Faltante não é zero
Faltante quer dizer "não sabemos". Zero é um valor. Se você preencher a idade com zero, o modelo vai tratar um bebê de zero anos como dado real. Conte antes de decidir: df.isna().sum() mostra quantos faltam em cada coluna.
Depois pergunte onde faltam. Se os faltantes se concentram em um grupo, como os pedidos feitos pelo aplicativo, apagar essas linhas apaga o grupo inteiro. Para preencher, use a mediana calculada só no treino.
Duplicata é decisão
Duas linhas são "a mesma coisa" quando todas as colunas são iguais? Ou quando têm o mesmo número de pedido? A resposta muda o que você apaga. Defina a chave que deveria ser única, conte as repetições e olhe uma amostra antes de remover.
Há uma duplicata que engana: a mesma pessoa no treino e no teste. O modelo reconhece a pessoa e a nota sobe sem ser real. Separe pessoas inteiras.
Dividir antes de tudo
Separe treino e teste antes de qualquer cálculo. O teste é a prova que o modelo não pode ver antes da hora. Se a classe que você quer prever é rara, use a divisão estratificada, que mantém a proporção dos dois lados. Se as linhas têm ordem no tempo, separe por data. Embaralhar faria o modelo treinar com o futuro.
| Erro comum | Por que estraga |
|---|---|
| Padronizar a tabela inteira antes de dividir | A média do teste entra no treino |
| Rodar dropna() sem contar o que some | Pode apagar um grupo inteiro |
| Mapear "M" para "Masculino" sem conferir | Grafias fora do dicionário somem sem aviso |
| Datas sem formato declarado | "10/11/12" tem três leituras possíveis |
Coisa de profissional
O vazamento é traiçoeiro porque a nota parece ótima. O scikit-learn mostra isso com um teste: com o alvo sorteado ao acaso, escolher as colunas usando todos os dados deu 0,76 de acurácia. Escolhendo só com o treino, o número caiu para 0,5, que é o acaso. Ou seja, o modelo "acertou" uma coisa impossível. Profissionais colocam toda transformação dentro de um Pipeline, que aprende só com o treino, e fazem esse teste de sanidade: embaralham o alvo e conferem se a nota cai para perto do acaso.
Prática · 5 min
- Baixe uma tabela pública, como uma do IBGE ou do portal dados.gov.br, e escreva a ficha com as cinco perguntas.
- Leia o arquivo declarando separador e faltantes. Compare
df.dtypescom o que você esperava. - Rode
df.isna().sum()e anote a decisão que tomaria para cada coluna com faltantes.
Resumo
- Confira a origem e a licença do dado. Coluna pessoal desnecessária sai primeiro.
- Declare separador, faltantes e tipos na leitura.
- Faltante é "não sabemos", não zero. Conte antes de decidir.
- Divida antes de qualquer cálculo e use um Pipeline.
Fontes
Lidas em 30 de outubro de 2026.
- scikit-learn. Common pitfalls and recommended practices: vazamento de dados e o exemplo com alvo sorteado.
- pandas. IO tools: leitura de CSV, tipos e faltantes.
- Brasil. Lei 13.709/2018 (LGPD): dado pessoal e necessidade.
- Gebru, T. et al. Datasheets for Datasets: a ficha do conjunto.
Quiz da aula
Três situações para aplicar o que viu.
Isaque Victor cursos gratuitos