Introdução
Curso de Pandas
Do CSV sujo às respostas, em três níveis, com os dados incluídos, código verificado por execução e três projetos completos.
Para quem é este material
O Pandas é a ferramenta que transforma uma planilha bagunçada em uma resposta. Quase toda análise de dados em Python começa com ele: carregar um CSV, descobrir o que está errado, limpar, perguntar e resumir. Este curso continua o Curso de NumPy: aqui o array ganha rótulos, colunas de tipos diferentes e a capacidade de lidar com dados ausentes.
Eu organizei as notas em seis partes. Todas usam os mesmos conjuntos de dados, que acompanham o curso, e cada ideia aparece primeiro como intuição e depois como código que você executa.
| Parte | Para quem | O que você sabe fazer no final |
|---|---|---|
| Ambiente | Quem acabou de chegar do NumPy | Entender o que é um DataFrame por dentro e instalar tudo |
| Básico | Quem nunca analisou dados em Python | Carregar, inspecionar, selecionar, filtrar, limpar, criar colunas, ordenar e agrupar |
| Intermediário | Quem já faz análises simples | Juntar tabelas, reformatar, trabalhar com datas, textos e categorias |
| Avançado | Quem escreve análises que precisam ser rápidas e corretas | Desempenho, memória, encadeamento de métodos, arquivos grandes e testes de dados |
| Projetos | Quem quer provar que aprendeu | Entregar três projetos com testes, um por nível |
Se você nunca viu NumPy, faça antes ao menos os capítulos 5 a 14 do Curso de NumPy. Aqui eu assumo que você sabe o que é um array, o que é vetorização e o que é um dtype.
O curso original, e o que eu fiz com ele
Este curso parte de um curso que cobre sete assuntos (de "por que o Pandas" até agrupamento) e que avisa, de propósito, que junção de tabelas, reformatação e séries temporais ficam para outro dia. Eu mantive os sete assuntos, na mesma ordem e com o mesmo conjunto de dados (traduzido para o português, com valores em reais), e acrescentei o que faltava para o trabalho real, nos níveis Intermediário e Avançado. Onde o código do curso original quebra ou ensina um hábito que o Pandas 3 desencoraja, eu mostro o problema com uma execução real.
Como cada capítulo funciona
- A saída é real. Eu executei cada trecho e copiei o que o Python imprimiu. Isso vale para o Pandas 3.0, a versão que o curso assume. Em versões 2.x, algumas saídas mudam (principalmente o tipo
strpara texto). - Cada bloco diz onde está. No topo de cada trecho aparece o arquivo e as linhas do repositório (por exemplo,
basico/cap13_agrupar_e_agregar.py), e você pode executá-lo sozinho. - Os dados acompanham o curso. Os capítulos leem arquivos CSV da pasta
dados/, que estão no repositório. Execute os arquivos a partir da raiz do repositório. - Os exercícios têm solução. Tente primeiro. A solução fica recolhida e termina com
assert, então você descobre sozinho se acertou.
Os conjuntos de dados
| Arquivo | Linhas | Para que serve |
|---|---|---|
funcionarios_15.csv | 15 | O conjunto do curso, traduzido, com problemas escondidos de propósito. Usado no nível Básico |
funcionarios_100.csv | 104 | Uma versão maior e mais suja (ids repetidos, datas em dois formatos). Usada nos níveis seguintes |
clientes.csv, produtos.csv, pedidos.csv | 60, 20 e 800 | Um modelo de vendas em três tabelas, para junção, reformatação e séries temporais |
O repositório
pandas-notes/
README.md
pyproject.toml
docs/
pandas-notes.html
dados/
ambiente/
basico/
intermediario/
avancado/
projetos/
Cada pasta de nível tem um README.md (objetivo, ambiente, dicionário dos dados) e um roteiro de gravação. Para começar, a partir da raiz do repositório:
uv venv
uv sync
uv run basico/cap04_series.py
Versões que o curso assume
Python 3.11 ou superior (o Pandas 3 exige isso) e Pandas 3.0. O código também usa o pyarrow, que o Pandas 3 aproveita para guardar textos e para ler e gravar o formato Parquet:
uv add pandas pyarrow openpyxl
Uma regra que eu repito neste curso
Pense em colunas, e não em linhas. Quando você escrever um for sobre as linhas de um DataFrame, pare e pergunte se existe uma operação sobre a coluna inteira. Quase sempre existe, e ela é mais curta, mais rápida e mais difícil de errar. O mesmo instinto do NumPy vale aqui, com um acréscimo: desconfie dos dados antes de confiar nas contas. Um mean() que roda sem erro sobre uma coluna que o Pandas leu como texto não é uma análise, é um erro silencioso.