Pular para o conteúdo

    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.

    Por Alexsander Valente

    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.

    PartePara quemO que você sabe fazer no final
    AmbienteQuem acabou de chegar do NumPyEntender o que é um DataFrame por dentro e instalar tudo
    BásicoQuem nunca analisou dados em PythonCarregar, inspecionar, selecionar, filtrar, limpar, criar colunas, ordenar e agrupar
    IntermediárioQuem já faz análises simplesJuntar tabelas, reformatar, trabalhar com datas, textos e categorias
    AvançadoQuem escreve análises que precisam ser rápidas e corretasDesempenho, memória, encadeamento de métodos, arquivos grandes e testes de dados
    ProjetosQuem quer provar que aprendeuEntregar 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 str para 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

    ArquivoLinhasPara que serve
    funcionarios_15.csv15O conjunto do curso, traduzido, com problemas escondidos de propósito. Usado no nível Básico
    funcionarios_100.csv104Uma versão maior e mais suja (ids repetidos, datas em dois formatos). Usada nos níveis seguintes
    clientes.csv, produtos.csv, pedidos.csv60, 20 e 800Um modelo de vendas em três tabelas, para junção, reformatação e séries temporais

    O repositório

    Estrutura do 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:

    Terminal
    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:

    Terminal
    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.