DEV Community

Cover image for Python Data Stack 2.0: O Fim do Pandas e Pip?
Francisco Júnior
Francisco Júnior

Posted on

Python Data Stack 2.0: O Fim do Pandas e Pip?

Como a revolução Rust (uv, Polars) e o BigQuery transformaram a engenharia de dados.


Introdução: A Mudança Tectônica

Se você trabalha com dados atualmente, provavelmente sente que suas ferramentas antigas não acompanharam o hardware moderno. O padrão "de fato" da última década — Pandas em Jupyter Notebooks instalados via Pip — tornou-se insustentável.

Estamos vivendo a transição da "Era do Spark Local" para a "Era da Performance Nativa (Rust) e Cloud Serverless".

Este guia é um manifesto técnico para engenheiros e cientistas de dados (especialmente usuários de macOS/Apple Silicon) que querem sair do gargalo de memória e performance. Vamos explorar como substituir ferramentas frágeis por uma stack moderna, eficiente e escalável.


⚡ O Resumo Executivo: Antes vs. Agora

Se você só ler uma coisa, leia esta tabela. Aqui está a migração da stack "Legada" para a "Moderna".

Categoria O Velho Padrão (2020) A Nova Stack O Ganho Real
Gerenciador de Pacotes pip / virtualenv / conda uv (Astral) Instalações 10-100x mais rápidas, cache global e resolução de conflitos determinística.
Processamento Local pandas (Single-threaded) polars (Rust-based) Execução Lazy, multithreading nativo (usa todos os núcleos do M3/M4) e memória eficiente.
Engine SQL Local sqlite / csv duckdb OLAP local em arquivos Parquet/Iceberg com performance vetorial.
Big Data / Cloud pyspark ou SQL strings bigframes (BigQuery) Processamento de Petabytes usando sintaxe Pandas, sem baixar dados para a máquina.
Notebooks Jupyter clássico marimo Notebooks reativos, armazenados como .py limpo (Git-friendly), sem estado oculto.
Hardware Intel x86 Apple Silicon (ARM64) Memória Unificada (CPU+GPU) acessível sem cópia de dados.

1. O Fim do pip: Gerenciamento de Ambientes com uv

O gerenciamento de dependências Python sempre foi um pesadelo ("dependency hell"). O uv, escrito em Rust, não é apenas uma melhoria; é uma mudança de paradigma. Ele substitui pip, pip-tools, pipx, poetry e virtualenv de uma só vez.

O Ganho de Performance

Em um MacBook com Apple Silicon, o uv utiliza multithreading para baixar e descompactar pacotes em paralelo, saturando sua rede e SSD.

Workflow Antigo:

python -m venv venv
source venv/bin/activate
pip install pandas numpy # Espera interminável...
pip freeze > requirements.txt

Enter fullscreen mode Exit fullscreen mode

Workflow Moderno (uv):

# Cria venv e instala em milissegundos
uv venv
uv add polars duckdb
# Roda scripts isolados sem precisar ativar nada manualmente
uv run analise.py

Enter fullscreen mode Exit fullscreen mode

Dica Pro: Com o uv, você pode criar scripts autônomos que declaram suas próprias dependências no cabeçalho. O uv baixa tudo em um ambiente temporário, executa e limpa depois.


2. A Revolução do Processamento: De Pandas para Polars

A diferença entre Pandas e Polars é arquitetural. O Pandas foi construído sobre o NumPy (que não lida bem com strings ou nulos) e executa tudo imediatamente ("eager"), criando cópias gigantescas na memória RAM.

Por que Polars vence no Hardware Moderno?

  1. Lazy Execution (Preguiçosa): O Polars não lê o arquivo inteiro. Ele olha para a sua query, otimiza o plano e só lê as colunas e linhas necessárias.
  2. Multithreading: Enquanto o Pandas usa 1 núcleo da sua CPU, o Polars usa todos os núcleos de performance do seu chip M3/M4/M5.
  3. Zero-Copy: Integração perfeita com o formato Apache Arrow.

Comparativo de Código: Filtragem e Agregação

O Jeito Antigo (Pandas - RAM Heavy):

import pandas as pd

# Lê 10GB para a RAM (Perigo de OOM!)
df = pd.read_csv("vendas_large.csv") 

# Cria cópias intermediárias na memória
df_filtrado = df[df['regiao'] == 'Sudeste']
resultado = df_filtrado.groupby('categoria')['total'].sum()

Enter fullscreen mode Exit fullscreen mode

O Jeito Moderno (Polars - Streaming & Lazy):

import polars as pl

# scan_csv não carrega nada ainda (Lazy)
query = (
    pl.scan_csv("vendas_large.csv")
    .filter(pl.col("regiao") == "Sudeste") # Predicate Pushdown: filtra no disco
    .group_by("categoria")
    .agg(pl.col("total").sum())
)

# Executa usando streaming (processa datasets maiores que a RAM)
resultado = query.collect(streaming=True)

Enter fullscreen mode Exit fullscreen mode

3. Big Data sem Sair do Python: BigQuery DataFrames (bigframes)

E quando os dados são grandes demais até para o seu Mac? Antigamente, você precisava aprender Java/Scala para usar Spark ou escrever strings SQL gigantes dentro do código Python.

Hoje, temos o BigQuery DataFrames. Ele permite que você use a sintaxe do Pandas, mas o processamento acontece nos clusters do Google (serverless).

A Mágica do BigFrames

Você manipula Terabytes de dados como se fosse um DataFrame local pequeno. O código é compilado para SQL e roda no BigQuery.

import bigframes.pandas as bpd

# Conecta a uma tabela de 10TB (só baixa metadados)
df = bpd.read_gbq("meu-projeto.logs.acessos")

# Parece Pandas, mas roda na nuvem do Google
# Otimização automática: Predicate Pushdown
df_erro = df[df['status_code'] >= 500]

# Agregação remota
contagem = df_erro.groupby('hora')['id'].count()

# O resultado só é baixado aqui (e é minúsculo)
print(contagem)

Enter fullscreen mode Exit fullscreen mode

4. A Experiência do Desenvolvedor: Marimo vs Jupyter

Os Notebooks Jupyter têm um problema fatal: estado oculto. Se você executar células fora de ordem, o resultado muda. Além disso, o arquivo .ipynb é um JSON horrível para versionar no Git.

O Marimo é a resposta moderna:

  1. Reativo: Se você muda uma variável, todas as células que dependem dela atualizam automaticamente (igual Excel).
  2. Python Puro: O notebook é salvo como um arquivo .py.
  3. Git-Friendly: Diffs limpos e legíveis.

Conclusão: Por que mudar agora?

A "Modern Data Stack" no macOS em 2026 não é sobre modismo, é sobre eficiência de recursos.

  • Eficiência de Computação: Usar 100% do seu Apple Silicon com Rust.
  • Eficiência de Memória: Zero-copy com Arrow e Polars.
  • Eficiência de Tempo: Instalações instantâneas com uv.

Abandonar o Pandas e o Pip pode parecer assustador no início, mas o ganho de produtividade ao processar bilhões de linhas no seu laptop local é incomparável.

Sua próxima ação: Instale o uv hoje e nunca mais olhe para trás.

curl -LsSf https://astral.sh/uv/install.sh | sh

Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
shadowruge profile image
izaias

Maravilhoso, ótima documentação, parabéns