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

Tableau récapitulatif


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

pandas (Exécution immédiate)

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
  • Élagage des colonnes : seules les colonnes nécessaires sont lues
  • Pushdown des filtres : 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 en types pandas


3. Déclencheurs d’exécution

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

Opérations qui restent en exécution différée


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 suit automatiquement en interne la position d’origine des lignes (à l’aide de rowNumberInAllBlocks()) afin de garantir la cohérence de l’ordre avec pandas.

Lorsque l’ordre est préservé

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

Cas où l’ordre peut varier

  • Après des agrégations groupby() (utilisez sort_values() pour garantir un ordre cohérent)
  • Après merge() / join() avec certains types de jointure
  • 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. Assignez toujours le résultat :

Pourquoi pas de inplace ?

DataStore s’appuie sur des opérations immuables pour offrir :
  • La construction de requêtes (évaluation paresseuse)
  • La sûreté en environnement multithread
  • Un débogage plus facile
  • Un code plus clair

6. Prise en charge des index

pandas

Prise en charge complète des index :

DataStore

Prise en charge simplifiée des index :

Le type de source 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 :

Utilisation d’equals()


8. Inférence de type

pandas

Utilise des types numpy/pandas :

DataStore

Peut utiliser des types ClickHouse :

Conversion de type explicite


9. Modèle mémoire

pandas

Toutes les données sont en mémoire :

DataStore

Les données restent dans la source jusqu’à ce qu’on en ait besoin :

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 un to_df() explicite lorsqu’un DataFrame pandas est nécessaire
  • Ajouter un tri si l’ordre des lignes a de l’importance
  • 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 29 juin 2026