Dados: Tipos, Dados Retangulares e pandas
📓 Abrir o notebook deste capítulo no Colab ↗ — só o código, pronto para rodar.
Tabelas organizadas são todas parecidas; toda tabela bagunçada é bagunçada à sua própria maneira.
— Hadley Wickham
Antes de qualquer modelo, há uma tabela. Uma coluna que conta, outra que mede, outra que nomeia — e cada uma exige um tratamento diferente antes de qualquer conta começar. Este capítulo trata do que vem antes do ajuste: reconhecer o tipo de cada coluna, entender o que faz de uma coleção de colunas uma tabela, ler um arquivo real sem confiar cegamente na inferência automática, limpar o que o arquivo trouxe sujo, resumir por grupo e, só no fim, decidir o que da tabela vira entrada de um modelo e o que vira o que ele tenta prever.
pandas é a ferramenta do capítulo inteiro, e por um motivo simples: a tabela é a mesa de trabalho de quem faz ciência de dados, e é nela — não no modelo — que a maior parte dos erros de análise nasce. Um valor faltante lido como categoria em vez de nulo, uma coluna numérica tipada como texto por causa de um marcador estranho, uma linha duplicada que infla uma média: nenhum desses problemas aparece quando o modelo roda: aparece antes, na hora de ler e tipar o dado, e é tarde demais quando só se percebe depois.
O fio condutor, a partir da seção 6.3, é um conjunto real de anúncios de aluguel de imóveis em cinco cidades brasileiras — sem limpeza prévia, exatamente como chegaria de um raspador ou de uma planilha exportada. Ao final do capítulo essa tabela vira duas peças prontas para o que vem a seguir: X, com o que um modelo recebe, e y, com o que ele tenta prever.
Ao final deste capítulo, você será capaz de:
- Classificar uma coluna na taxonomia numérico/categórico (contínuo, discreto, nominal, ordinal, binário) e reconhecer quando a inferência automática de tipo do
pandaserra - Explicar o que faz de uma tabela um dado retangular, e navegar nela com
shape,head,info,loceiloc - Ler um arquivo real com
read_csv, diagnosticar uma coluna mal tipada e corrigi-la comna_valueseto_numeric - Decidir, diante de valores faltantes, linhas duplicadas e valores extremos, entre descartar, preencher ou investigar — e justificar a escolha
- Resumir uma tabela por grupo com
groupbyeagg, e trazer para dentro dela o que outra tabela sabe commerge - Separar uma tabela em
Xeyprontos para um modelo, incluindo a codificação de colunas categóricas e o reconhecimento de uma coluna que vaza a resposta
Seções
| Seção | Tópico |
|---|---|
| 6.1 | Elementos de Dados Estruturados |
| 6.2 | Dados Retangulares |
| 6.3 | Lendo e Tipando um Arquivo Real |
| 6.4 | Limpando e Transformando |
| 6.5 | Agrupando e Resumindo |
| 6.6 | Da Tabela para o Modelo |
Leituras adicionais
- 10 minutes to pandas, a introdução oficial e mais rápida à biblioteca — cobre boa parte do que este capítulo usa, num único lugar.
- Working with missing data, o guia oficial sobre como o
pandasrepresenta, propaga e trata valores ausentes. - O Pandas Cheat Sheet: Data Wrangling in Python, uma referência de uma página para as operações mais comuns de limpeza e transformação.