Skip to content

Comment utiliser DuckDB et Pandas pour l'analyse de données

Lorsqu'il s'agit d'analyse de données, les outils que vous utilisez peuvent faire toute la différence. C'est là que DuckDB et Pandas entrent en jeu. Ces deux outils font sensation dans le monde de l'analyse de données, et ce n'est pas pour rien. Cet article a pour but de vous familiariser avec ces outils, leurs forces, leurs différences et comment ils peuvent travailler ensemble pour améliorer considérablement vos tâches d'analyse de données.

Qu'est-ce que DuckDB ?

Commençons par DuckDB. DuckDB est une base de données analytique en mémoire écrite en C++. Elle est conçue pour prendre en charge les requêtes SQL analytiques et les tâches intensives en données. Mais voici le truc : DuckDB est rapide. Je veux dire, vraiment rapide. Elle est conçue pour être une base de données en mémoire rapide, ce qui en fait un choix de premier ordre pour les tâches qui doivent être effectuées en un clin d'œil.

Mais il ne s'agit pas seulement de rapidité. DuckDB est également synonyme d'efficacité. Elle est conçue pour exécuter des requêtes complexes sur de grands ensembles de données, ce qui est un énorme avantage si vous traitez une tonne de données. Et la meilleure partie ? Elle s'intègre parfaitement avec les DataFrames de Pandas, vous permettant d'exécuter ces requêtes directement sur eux. Pas besoin de déplacer les données. N'est-ce pas génial ?

Qu'est-ce que Pandas ?

Maintenant, parlons de Pandas. Si vous êtes dans l'analyse de données, il est probable que vous ayez déjà croisé la route de Pandas. C'est une bibliothèque flexible d'analyse de données en Python très appréciée pour sa simplicité et sa puissance. Elle peut gérer une large gamme de formats et de tailles de données, et pour la plupart, elle est assez intuitive à utiliser.

Mais voici où ça devient intéressant. Si vous êtes familier avec SQL, vous savez à quel point il peut être puissant lorsqu'il s'agit de manipuler des données complexes. Et c'est là que DuckDB entre en jeu. En combinant la rapidité et l'efficacité de DuckDB avec la flexibilité de Pandas, vous obtenez un outil puissant pour l'analyse de données difficile à battre.

Vous voulez rapidement créer une visualisation de données à partir d'un dataframe Pandas en Python sans écrire de code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans Jupyter Notebook en transformant votre dataframe Pandas (et dataframe de polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Comparaison de DuckDB et Pandas

Bon, nous avons parlé de DuckDB et de Pandas séparément. Mais comment se comparent-ils ? Découvrons-le.

DuckDB vs Pandas

En termes de performances, DuckDB a un avantage clair. Elle est plus rapide et utilise moins de mémoire, ce qui est un atout majeur lorsque vous travaillez avec de grands ensembles de données. Mais ce n'est pas tout. DuckDB brille également en termes de capacités SQL. Elle vous permet d'exécuter des requêtes SQL sur des DataFrames de Pandas, ce qui peut être un atout majeur si vous êtes plus à l'aise avec SQL qu'avec Python.

D'un autre côté, Pandas n'est pas en reste. Elle est incroyablement flexible et puissante, capable de gérer une large gamme de formats et de tailles de données. De plus, elle est assez intuitive à utiliser, ce qui est toujours un plus.

Mais voici la chose : vous n'avez pas à choisir entre DuckDB et Pandas. En fait, ils fonctionnent mieux lorsqu'ils sont utilisés ensemble. En combinant la rapidité et l'efficacité de DuckDB avec la flexibilité de Pandas, vous obtenez un outil puissant pour l'analyse de données difficile à battre.

Mais ne me croyez pas sur parole. Jetons un coup d'œil à quelques exemples.

Premiers pas avec DuckDB et Pandas

Avant de plonger dans les exemples, parlons de la façon de commencer avec DuckDB et Pandas. Ne vous inquiétez pas, c'est assez simple.

Guide d'installation

Tout d'abord, vous devez installer DuckDB et Pandas. Si vous utilisez Python, vous pouvez le faire à l'aide de pip, l'installateur de packages Python. Voici comment procéder :

pip install duckdb pandas

C'est tout ! Vous avez maintenant DuckDB et Pandas installés et prêts à être utilisés.

Configuration de DuckDB avec Pandas

Une fois que vous avez installé DuckDB et Pandas, vous pouvez commencer à les utiliser ensemble. La première étape consiste à importer les bibliothèques dans votre script Python ou votre notebook Jupyter. Voici comment vous pouvez le faire :

import duckdb
import pandas as pd

Avec ces lignes de code, vous indiquez à Python que vous souhaitez utiliser les bibliothèques DuckDB et Pandas dans votre script ou notebook.

Utilisation de DuckDB pour interroger des DataFrames Pandas

Maintenant que vous avez configuré DuckDB et Pandas, parlons de la façon dont vous pouvez utiliser DuckDB pour interroger des DataFrames Pandas. C'est là que la magie opère.

Requêtes SQL de base sur les DataFrames

Avec DuckDB, vous pouvez exécuter des requêtes SQL directement sur des DataFrames Pandas. Cela signifie que vous pouvez utiliser la puissance et la familiarité de SQL pour manipuler et analyser vos données. Voici un exemple :

# Créer un DataFrame Pandas
df = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
# Utiliser DuckDB pour exécuter une requête SQL sur le DataFrame
result = duckdb.query("SELECT A, AVG(D) FROM df GROUP BY A").to_df()

Dans cet exemple, nous créons un DataFrame Pandas, puis utilisons DuckDB pour exécuter une requête SQL dessus. La requête calcule la moyenne de la colonne 'D' pour chaque valeur unique de la colonne 'A'. Le résultat est un autre DataFrame avec les résultats de la requête.

Opérations SQL avancées avec DuckDB

Mais DuckDB n'est pas seulement destiné aux requêtes SQL de base. Vous pouvez également l'utiliser pour des opérations plus avancées, comme les jointures, les fonctions de fenêtre et même les opérations d'apprentissage automatique. Voici un exemple d'opération de jointure :

# Créez deux DataFrames Pandas
df1 = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
df2 = pd.DataFrame({
   'A': ['foo', 'bar', 'baz', 'bat'],
   'E': ['apple', 'orange', 'banana', 'grape']
})
 
# Utilisez DuckDB pour exécuter une opération de jointure SQL sur les DataFrames
resultat = duckdb.query("SELECT df1.A, df1.B, df2.E FROM df1 JOIN df2 ON df1.A = df2.A").to_df()

Dans cet exemple, nous créons deux DataFrames Pandas, puis utilisons DuckDB pour exécuter une opération de jointure SQL sur eux. Le résultat est un nouveau DataFrame avec les données jointes.

Vous souhaitez créer rapidement une visualisation des données à partir d'un DataFrame Pandas en Python, sans code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire des données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre analyse de données et votre flux de travail de visualisation des données dans Jupyter Notebook en transformant votre DataFrame pandas (et DataFrame polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation des données (opens in a new tab)

Conclusion

Et ce n'est que la partie émergée de l'iceberg. Avec DuckDB et Pandas, vous pouvez booster vos tâches d'analyse de données, les rendant plus rapides, plus efficaces et plus intuitives. Alors pourquoi ne pas essayer ? Vous pourriez découvrir que c'est le duo dynamique que vous recherchiez.

Questions fréquemment posées

DuckDB est-il plus rapide que Pandas ?

Oui, DuckDB est généralement plus rapide que Pandas lorsqu'il s'agit d'exécuter des requêtes SQL sur de grands ensembles de données. Cela est dû au fait que DuckDB est une base de données analytique en mémoire conçue pour la vitesse et l'efficacité. Cependant, les performances réelles peuvent dépendre de la tâche spécifique et de la taille de l'ensemble de données.

Quelle est la différence entre DuckDB et Polars ?

DuckDB et Polars sont tous deux des outils utilisés pour l'analyse des données, mais ils présentent quelques différences clés. DuckDB est une base de données analytique en mémoire qui excelle dans l'exécution de requêtes SQL sur de grands ensembles de données. En revanche, Polars est une bibliothèque de DataFrame implémentée en Rust et en Python, conçue pour être rapide et flexible. Alors que DuckDB se concentre sur la fourniture de fonctionnalités SQL, Polars fournit une API de DataFrame similaire à celle de Pandas.

DuckDB est-il multithreadé ?

Oui, DuckDB est multithreadé. Il utilise plusieurs threads pour exécuter des requêtes, ce qui peut entraîner des améliorations significatives des performances sur les systèmes multicœurs. C'est l'une des raisons pour lesquelles DuckDB peut être plus rapide que les autres outils d'analyse de données pour certaines tâches.

SQLite est-il plus rapide que Pandas ?

SQLite et Pandas ont des objectifs différents et leurs performances peuvent varier en fonction de la tâche. SQLite est un moteur de base de données optimisé pour le stockage et la recherche de données, tandis que Pandas est une bibliothèque d'analyse de données qui excelle dans la manipulation et la transformation de données. Pour les tâches qui impliquent des requêtes SQL complexes, SQLite peut être plus rapide. Cependant, pour les tâches qui impliquent des manipulations de données complexes, Pandas peut être plus rapide. Lorsqu'ils sont utilisés ensemble, ils peuvent fournir un outil puissant pour l'analyse de données.