Pular para o conteúdo principal
Embora o DataStore seja altamente compatível com o pandas, é importante entender algumas diferenças.

Tabela resumida


1. Execução lazy vs imediata

pandas (Execução imediata)

As operações são executadas imediatamente:

DataStore (Lazy)

As operações só são executadas quando os resultados são necessários:

Por que isso importa

A execução lazy permite:
  • Otimização de consulta: 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 fonte
  • Eficiência no uso de memória: não carrega 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 dos valores reais:

Operações que permanecem lazy


4. Ordem das linhas

pandas

A ordem das linhas é sempre preservada:

DataStore

A ordem das linhas é mantida automaticamente na maioria das operações:
O DataStore rastreia automaticamente, de forma interna, as posições originais das linhas (usando rowNumberInAllBlocks()) para garantir a consistência da ordem em relação ao 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 sort() ou sort_values() executados explicitamente
  • Operações que definem a ordem (nlargest(), nsmallest(), head(), tail())

Quando a ordem pode variar

  • Após agregações com 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 parâmetro inplace

pandas

DataStore

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

Por que não existe inplace?

O DataStore usa operações imutáveis para permitir:
  • Construção de consultas (avaliação lazy)
  • Segurança entre threads
  • Depuração mais fácil
  • Código mais limpo

6. Suporte a índices

pandas

Suporte completo a índices:

DataStore

Suporte simplificado para índices:

A fonte do DataStore faz diferença

  • Fonte DataFrame: Preserva o índice do pandas
  • Fonte File: Usa um índice inteiro simples

7. Comportamento das comparações

Comparando com o pandas

O pandas não reconhece objetos DataStore:

Como usar equals()


8. Inferência de tipos

pandas

Usa os tipos do numpy/pandas:

DataStore

Pode usar os tipos do ClickHouse:

Conversão explícita de tipo


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 Erro

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

Dicas de depuração


Checklist de migração

Ao migrar 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 19 de junho de 2026