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

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


1. Отложенное и немедленное выполнение

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

Operations выполняются сразу:

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() для сравнительных тестов
  • Протестируйте на данных репрезентативного объёма

Краткий справочник