Перейти к основному содержанию
Хотя DataStore в значительной степени совместим с pandas, важно понимать ключевые различия между ними.

Сводная таблица


1. Ленивое и немедленное выполнение

pandas (Немедленное выполнение)

Операции выполняются сразу:

DataStore (ленивое выполнение)

Операции выполняются только тогда, когда нужны результаты:

Почему это важно

Ленивое выполнение позволяет:
  • Оптимизация запросов: Несколько операций компилируются в один SQL-запрос
  • Отсечение столбцов: Считываются только нужные столбцы
  • Pushdown фильтров: Фильтры применяются на стороне источника
  • Эффективное использование памяти: Не загружайте данные, которые не нужны

2. Типы возвращаемых значений

pandas

DataStore

Преобразование в типы pandas


3. Триггеры выполнения

DataStore вычисляется, когда вам нужны реальные значения:

Операции с ленивым вычислением


4. Порядок строк

pandas

Порядок строк сохраняется всегда:

DataStore

При большинстве операций порядок строк сохраняется автоматически:
DataStore автоматически отслеживает исходные позиции строк (с помощью rowNumberInAllBlocks()), чтобы сохранять порядок, согласованный с pandas.

Когда порядок сохраняется

  • Источники в виде файлов (CSV, Parquet, JSON и т. д.)
  • Источники в виде pandas DataFrame
  • Операции фильтрации
  • Выбор столбцов
  • После явного sort() или sort_values()
  • Операции, задающие порядок (nlargest(), nsmallest(), head(), tail())

Когда порядок может отличаться

  • После агрегаций groupby() (используйте sort_values(), чтобы обеспечить единообразный порядок)
  • После merge() / join() с некоторыми типами JOIN
  • В режиме производительности (config.use_performance_mode()): порядок строк не гарантируется ни для каких операций. См. Режим производительности.

5. Параметр inplace отсутствует

pandas

DataStore

Параметр inplace=True не поддерживается. Всегда присваивайте результат:

Почему нет inplace?

DataStore использует неизменяемые операции, что позволяет:
  • Строить запросы (отложенное вычисление)
  • Обеспечивать потокобезопасность
  • Упрощать отладку
  • Делать код чище

6. Поддержка индексов

pandas

Полная поддержка индексов:

DataStore

Упрощённая поддержка индексов:

Имеет значение источник DataStore

  • Источник DataFrame: сохраняет индекс pandas
  • Источник File: используется простой целочисленный индекс

7. Особенности сравнения

Сравнение с pandas

pandas не распознаёт объекты DataStore:

Использование функции equals()


8. Вывод типов

pandas

Используются типы numpy/pandas:

DataStore

Можно использовать типы ClickHouse:

Явное приведение типов


9. Модель памяти

pandas

Все данные хранятся в памяти:

DataStore

Данные остаются в источнике, пока не потребуются:

10. Сообщения об ошибках

Различные источники ошибок

  • ошибки pandas: Из библиотеки pandas
  • ошибки DataStore: Из chDB или ClickHouse

Советы по отладке


Чек-лист миграции

При переходе с pandas:
  • Измените оператор import
  • Удалите параметры inplace=True
  • Явно добавьте to_df() там, где требуется pandas DataFrame
  • Добавьте сортировку, если важен порядок строк
  • Используйте to_pandas() для сравнительных тестов
  • Протестируйте на репрезентативных объёмах данных

Краткая справка

Последнее изменение 19 июня 2026 г.