Skip to main content
Embora o DataStore seja altamente compatível com o pandas, há diferenças importantes que precisam ser compreendidas.

Tabela-resumo


1. Execução preguiçosa vs imediata

pandas (Execução imediata)

As operações são executadas imediatamente:

DataStore (preguiçoso)

As operações são postergadas até que os resultados sejam necessários:

Por que isso importa

A execução preguiçosa permite:
  • Otimização de consultas: várias operações são compiladas em uma única consulta SQL
  • Poda de colunas: apenas as colunas necessárias são lidas
  • Pushdown de filtros: os filtros são aplicados na origem
  • Eficiência no uso de memória: não carregue dados desnecessários

2. Tipos de retorno

pandas

DataStore

Convertendo para os tipos do pandas


3. Gatilhos de execução

O DataStore é executado quando você precisa de valores reais:

Operações que permanecem preguiçosas


4. Ordem das linhas

pandas

A ordem das linhas é sempre preservada:

DataStore

A ordem das linhas é preservada automaticamente na maioria das operações:
DataStore rastreia automaticamente, internamente, as posições originais das linhas (usando rowNumberInAllBlocks()) para garantir que a ordem permaneça consistente com o pandas.

Quando a ordem é preservada

  • Fontes de arquivo (CSV, Parquet, JSON etc.)
  • Fontes de DataFrame do pandas
  • Operações de filtro
  • Seleção de colunas
  • Após o uso explícito de sort() ou sort_values()
  • Operações que definem a ordem (nlargest(), nsmallest(), head(), tail())

Quando a ordem pode variar

  • Após agregações groupby() (use sort_values() para garantir uma ordem consistente)
  • Após merge() / join() com determinados tipos de join
  • No modo de desempenho (config.use_performance_mode()): a ordem das linhas não é garantida em nenhuma operação. Veja Modo de desempenho.

5. Sem o parâmetro inplace

pandas

DataStore

inplace=True não é suportado. Sempre atribua o resultado:

Por que não inplace?

DataStore usa operações imutáveis para permitir:
  • Construção de consultas (lazy evaluation)
  • Segurança em ambientes multithread
  • Depuração facilitada
  • Código mais limpo

6. Suporte a índices

pandas

Suporte completo a índices:

DataStore

Suporte simplificado a índices:

A origem do DataStore faz diferença

  • Origem DataFrame: preserva o índice do pandas
  • Origem File: usa um índice inteiro simples

7. Comportamento das comparações

Comparação com o pandas

O pandas não reconhece objetos DataStore:

Como usar equals()


8. Inferência de tipos

pandas

Usa tipos do numpy/pandas:

DataStore

Pode usar tipos do ClickHouse:

Conversão de tipo explícita


9. Modelo de memória

pandas

Todos os dados ficam na memória:

DataStore

Os dados permanecem na origem até que sejam necessários:

10. Mensagens de erro

Diferentes fontes de erros

  • erros do pandas: Da biblioteca pandas
  • erros do DataStore: Do chDB ou do ClickHouse

Dicas de depuração


Checklist de migração

Ao migrar a partir do pandas:
  • Altere a instrução de importação
  • Remova os parâmetros inplace=True
  • Adicione to_df() explicitamente onde um DataFrame do pandas for necessário
  • Adicione ordenação se a ordem das linhas for importante
  • Use to_pandas() em testes de comparação
  • Teste com volumes de dados representativos

Referência rápida

Última modificação em 23 de julho de 2026