Skip to main content
Bien que DataStore soit largement compatible avec pandas, il existe des différences importantes à connaître.

Tableau récapitulatif


1. Exécution différée vs immédiate

pandas (immédiat)

Les opérations s’exécutent immédiatement :

DataStore (différé)

Les opérations sont reportées jusqu’au moment où les résultats sont nécessaires :

Pourquoi c’est important

L’exécution différée permet :
  • Optimisation des requêtes : plusieurs opérations sont compilées en une seule requête SQL
  • Sélection des colonnes utiles : seules les colonnes nécessaires sont lues
  • Application des filtres à la source : les filtres sont appliqués à la source
  • Utilisation efficace de la mémoire : ne chargez pas les données dont vous n’avez pas besoin

2. Types de retour

pandas

DataStore

Conversion vers les types pandas


3. Déclencheurs d’exécution

DataStore s’exécute lorsque vous avez besoin des valeurs effectives :

Opérations qui restent différées


4. Ordre des lignes

pandas

L’ordre des lignes est toujours conservé :

DataStore

L’ordre des lignes est automatiquement conservé pour la plupart des opérations :
DataStore enregistre automatiquement en interne la position d’origine des lignes (à l’aide de rowNumberInAllBlocks()) afin de garantir un ordre cohérent avec pandas.

Lorsque l’ordre est préservé

  • Sources basées sur des fichiers (CSV, Parquet, JSON, etc.)
  • Sources de type pandas DataFrame
  • Opérations de filtrage
  • Sélection de colonnes
  • Après utilisation explicite de sort() ou sort_values()
  • Opérations qui définissent l’ordre (nlargest(), nsmallest(), head(), tail())

Quand l’ordre peut différer

  • Après les agrégations groupby() (utilisez sort_values() pour garantir un ordre cohérent)
  • Après merge() / join() avec certains types de JOIN
  • En mode performance (config.use_performance_mode()) : l’ordre des lignes n’est pas garanti, quelle que soit l’opération. Voir Mode Performance.

5. Pas de paramètre inplace

pandas

DataStore

inplace=True n’est pas pris en charge. Affectez toujours le résultat :

Pourquoi pas d’inplace ?

DataStore s’appuie sur des opérations immuables, ce qui permet :
  • La construction de requêtes (évaluation différée)
  • Une meilleure sûreté en multithreading
  • Un débogage simplifié
  • Un code plus propre

6. Prise en charge des index

pandas

Prise en charge complète des index :

DataStore

Gestion simplifiée des index :

Le type de source du DataStore est important

  • Source DataFrame : conserve l’index pandas
  • Source File : utilise un index entier simple

7. Comportement des comparaisons

Comparaison avec pandas

pandas ne reconnaît pas les objets DataStore :

Utiliser equals()


8. Inférence de types

pandas

Utilise les types numpy/pandas :

DataStore

Peut utiliser des types ClickHouse :

Conversion explicite de type


9. Modèle mémoire

pandas

Toutes les données sont en mémoire :

DataStore

Les données restent à la source jusqu’à ce qu’elles soient nécessaires :

10. Messages d’erreur

Différentes sources d’erreurs

  • erreurs pandas : issues de la bibliothèque pandas
  • erreurs DataStore : issues de chDB ou de ClickHouse

Conseils de débogage


Checklist de migration

Lors d’une migration depuis pandas :
  • Modifier l’instruction d’import
  • Supprimer les paramètres inplace=True
  • Ajouter explicitement to_df() lorsqu’un pandas DataFrame est requis
  • Ajouter un tri si l’ordre des lignes est important
  • Utiliser to_pandas() pour les tests de comparaison
  • Tester avec des volumes de données représentatifs

Référence rapide

Dernière modification le 23 juillet 2026