Python Data Stack 2.0: O Fim do Pandas e Pip? (Guia 2025-2026)

Published: (February 17, 2026 at 08:20 AM EST)
4 min read
Source: Dev.to

Source: Dev.to

Como a revolução Rust (uv, Polars) e o BigQuery transformaram a engenharia de dados.
Se você trabalha com dados em 2025, provavelmente sente que suas ferramentas antigas não acompanham 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.

Migração da Stack “Legada” para a “Moderna”

CategoriaO Velho Padrão (2020)A Nova Stack (2025/26)O Ganho Real
Gerenciador de Pacotespip / virtualenv / condauv (Astral) – instalações 10‑100× mais rápidas, cache global e resolução de conflitos determinística
Processamento Localpandas (single‑threaded)polars (Rust‑based) – execução lazy, multithreading nativo (usa todos os núcleos do M3/M4) e memória eficiente
Engine SQL Localsqlite / csvduckdb – OLAP local em arquivos Parquet/Iceberg com performance vetorial
Big Data / Cloudpyspark ou SQL stringsbigframes (BigQuery) – processamento de petabytes usando sintaxe Pandas, sem baixar dados para a máquina
NotebooksJupyter clássicomarimo – notebooks reativos, armazenados como .py limpo (Git‑friendly), sem estado oculto
HardwareIntel x86Apple Silicon (ARM64) – memória unificada (CPU+GPU) acessível sem cópia de dados

Gerenciamento de Dependências com uv

O gerenciamento de dependências Python sempre foi um pesadelo (“dependency hell”). O uv, escrito em Rust, substitui pip, pip‑tools, pipx, poetry e virtualenv de uma só vez.

Workflow Antigo

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

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

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.

Pandas vs. Polars

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

Pandas – RAM Heavy (exemplo clássico)

import pandas as pd

# Lê 10 GB 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()

Polars – Lazy & Streaming

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)

Principais vantagens do Polars

  • Lazy Execution – lê apenas colunas/linhas necessárias.
  • Multithreading – usa todos os núcleos do chip (M3/M4/M5).
  • Zero‑Copy – integração perfeita com Apache Arrow.

Big Data / Cloud com bigframes (BigQuery)

Quando os dados são grandes demais para o seu Mac, antes era preciso aprender Java/Scala para usar Spark ou escrever strings SQL enormes. Hoje, o BigQuery DataFrames permite usar a sintaxe do Pandas enquanto o processamento acontece nos clusters serverless do Google.

import bigframes.pandas as bpd

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

# Parece Pandas, mas roda na nuvem do Google
df_erro = df[df['status_code'] >= 500]   # predicate pushdown automático

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

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

Marimo vs. Jupyter

Jupyter tem um problema fatal: estado oculto. Executar células fora de ordem pode mudar resultados, e o arquivo .ipynb (JSON) é difícil de versionar.

Por que escolher Marimo?

  • Reativo – mudar uma variável atualiza automaticamente todas as células dependentes (como Excel).
  • Python puro – o notebook é salvo como um arquivo .py.
  • Git‑friendly – diffs limpos e legíveis.

Conclusão

A “Modern Data Stack” no macOS em 2026 não é sobre modismo, mas sobre eficiência de recursos:

  • Computação – usar 100 % do Apple Silicon com Rust.
  • Memória – zero‑copy com Arrow e Polars.
  • Tempo – instalações instantâneas com uv.

Abandonar Pandas e 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
0 views
Back to Blog

Related posts

Read more »