Skip to content

Polars vs Pandas: Choisissez votre champion de l'analyse de données en 2023

Updated on

La bataille entre les géants de la manipulation des données, Polars et Pandas, est devenue le sujet de discussion dans le monde de l'analyse de données. Avec la sortie de Polars 0.17.0 et Pandas 2.0, ces deux bibliothèques s'affrontent désormais pour la suprématie. Mais lequel mérite le titre de bibliothèque de traitement de données privilégiée ? Cet article présente une comparaison exhaustive de ces outils puissants, en étudiant leur syntaxe, leur vitesse et leur facilité d'utilisation pour déterminer le vainqueur.

Polars et Pandas : Une introduction

Avez-vous déjà passé d'innombrables heures à attendre que votre code Pandas s'exécute sur des ensembles de données volumineux ? Entrez Polars, une bibliothèque surpuissante offrant des avantages de vitesse significatifs par rapport à son concurrent, Pandas. Polars se distingue par sa capacité à gérer les dataframes, surpassant Pandas en termes d'efficacité et de vitesse.

Les sorties récentes, Polars 0.17.0 et Pandas 2.0, présentent toutes deux des améliorations de vitesse considérables. Le nouveau support Apache Arrow de Pandas 2.0 a effectivement amélioré les performances, mais les opérations de base s'exécutent toujours plus rapidement sur les tableaux NumPy. Polars 0.17.0, sorti il y a seulement une semaine, a également reçu des critiques élogieuses pour ses améliorations de vitesse[^1^].

Plongeons plus en profondeur et examinons les fonctionnalités qui donnent à Polars un avantage :

  • Support Rust : Polars est construit en utilisant Rust. Grâce à la capacité de Rust à se compiler directement en code machine, il contourne le besoin d'un interprète, ce qui le rend plus rapide que Python.

  • Parallélisation : Polars utilise le multithreading, ce qui permet l'exécution parallèle d'opérations vectorisées sur plusieurs cœurs de CPU.

  • Interface Python : Malgré ses fondations en Rust, Polars fonctionne comme une bibliothèque Python, offrant une interface de traitement de données accessible tout en profitant des performances de Rust.

  • Évaluation différée : Polars prend en charge à la fois une évaluation immédiate (utilisée par Pandas) et une évaluation différée. Dans l'évaluation différée, une requête n'est exécutée que lorsque nécessaire, tandis que l'évaluation immédiate déclenche une exécution immédiate.

Dans ce guide détaillé, nous allons :

  1. Comparer la vitesse de Pandas 2.0 (avec NumPy et PyArrow en tant que backends) et de Polars 0.17.0.
  2. Illustrer comment passer d'un code Pandas simple à complexe en utilisant Polars.
  3. Organiser un duel de performances entre les deux bibliothèques en utilisant une machine avec des processeurs quadricœurs et 32 Go de RAM.

Configuration et jeu de données

Avant de plonger dans les comparaisons, assurez-vous d'avoir installé les dernières versions de Polars et Pandas sur votre machine locale. Sinon, utilisez la commande pip pour l'installation :

pip install polars==0.17.0 # Dernière version de Polars
pip install pandas==2.0.0  # Dernière version de Pandas

Notre comparaison se basera sur un jeu de données synthétique avec 30 millions de lignes et 15 colonnes, comprenant 8 caractéristiques catégorielles et 7 caractéristiques numériques. Ce jeu de données artificiel peut être consulté ici (opens in a new tab).

Voici un aperçu de notre jeu de données :

# Pandas
train_pd.head()
 
# Polars
train_pl.head()

Chargement des bibliothèques

Tout d'abord, nous devons importer les bibliothèques nécessaires pour charger nos données :

import pandas as pd
import polars as pl
import numpy as np
import time

Lecture du jeu de données

Lecture du jeu de données : Une analyse comparative de Pandas 2.0 vs Polars 0.17

Quand il s'agit de traiter de grands ensembles de données, le choix de la bibliothèque de manipulation des données peut faire toute la différence. C'est pourquoi nous nous plongeons dans Pandas 2.0 et Polars 0.17, en nous concentrant sur les capacités de lecture de chacune.

Nous commençons par comparer les temps de lecture des fichiers parquet des deux bibliothèques. Le format de fichier parquet, en tant que format de stockage colonne, est optimisé pour une utilisation avec des frameworks de traitement de données volumineuses. La capacité à lire ces fichiers rapidement et efficacement est cruciale lors du traitement de jeux de données étendus.

Notre enquête a révélé des performances comparables entre Polars et Pandas 2.0 en ce qui concerne la lecture des fichiers parquet. Néanmoins, il est important de noter que Pandas, lorsqu'il utilise le backend Numpy, mettait deux fois plus de temps à accomplir cette tâche par rapport à Polars.

Opérations d'agrégation : Polars vs Pandas

Passons maintenant à l'évaluation des fonctions d'agrégation. Ces opérations sont essentielles en analyse de données, fournissant des statistiques de synthèse critiques pour l'examen des données.

En termes de syntaxe et de performance pour les requêtes simples, Pandas s'est révélé être l'option supérieure. Cependant, la différence de performance entre les deux bibliothèques était minime. Polars offre toutefois un avantage unique en ce sens qu'il peut travailler avec une liste de caractéristiques qui doivent être agrégées en utilisant la même fonction d'agrégation, une capacité que Pandas n'offre pas pour le scénario que nous avons évalué.

Opérations de filtrage et de sélection : Face-à-face entre Pandas et Polars

Les opérations de filtrage et de sélection consistent à spécifier une condition pour l'extraction de données de la base de données. Nos tests ont porté sur le dénombrement des valeurs uniques pour les colonnes catégorielles lorsque une colonne numérique remplissait une certaine condition, et le calcul de la moyenne de toutes les colonnes numériques lorsque la colonne catégorielle était égale à une certaine valeur.

Dans cette comparaison directe, Polars a surpassé Pandas en termes de vitesse d'exécution pour les opérations de filtrage numérique par un facteur de deux à cinq fois. Cependant, il est important de noter que Pandas nécessite moins de code à écrire et que la bibliothèque s'exécute légèrement plus lentement lorsqu'il s'agit de chaînes de caractères (caractéristiques catégorielles).

Visualisez votre dataframe Pandas et Polars avec PyGWalker

PyGWalker (opens in a new tab) est une bibliothèque python open-source qui vous permet de créer des visualisations de données à partir de vos dataframes Pandas et Polars avec facilité. Veuillez fournir la traduction française de ce fichier markdown sans traduire le code intégré: PyGWalker pour la visualisation des données (opens in a new tab)

Plus besoin de réaliser des traitements compliqués avec du code Python, il suffit d'importer vos données et de glisser-déposer les variables pour créer toutes sortes de visualisations de données ! Voici une vidéo de démonstration rapide de l'opération :


Voici comment utiliser PyGWalker dans votre notebook Jupyter :

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Vous pouvez également l'essayer dans Kaggle Notebook/Google Colab :

Exécuter PyGWalker dans Kaggle Notebook (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Donnez ⭐️ à PyGWalker sur GitHub (opens in a new tab)
Exécuter PyGWalker dans Kaggle Notebook (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)

PyGWalker est développé grâce au soutien de notre communauté Open Source. N'oubliez pas de consulter PyGWalker GitHub (opens in a new tab) et de nous donner une étoile !

Questions fréquentes sur Pandas et Polars

Tout au long de cette analyse, nous avons constaté que Pandas et Polars présentent à la fois des points forts et des points faibles. Pour vous aider à mieux comprendre ces deux bibliothèques, voici quelques questions fréquemment posées :

  1. Question : Pourquoi choisir Polars plutôt que Pandas ? Réponse : On peut choisir Polars plutôt que Pandas lorsqu'il s'agit de traiter de grands ensembles de données en raison de sa vitesse d'exécution plus rapide pour de nombreuses opérations, en particulier celles impliquant des données numériques. Cependant, étant donné que Polars est une bibliothèque plus récente, il peut nécessiter une courbe d'apprentissage pour les personnes familières avec Pandas.

  2. Question : Existe-t-il des scénarios où Pandas est préférable à Polars ? Réponse : Oui, pour des requêtes simples et lorsque la brièveté du code est une priorité, Pandas peut être préférable. De plus, Pandas est une bibliothèque mature avec une solide communauté de support, ce qui peut être bénéfique lors du dépannage ou de la recherche de conseils sur des tâches complexes de manipulation de données.

  3. Question : Comment Pandas et Polars gèrent-ils les valeurs nulles dans les opérations de regroupement de manière différente ? Réponse : Pendant les opérations de regroupement, Pandas supprime automatiquement les valeurs nulles, tandis que Polars ne le fait pas. Cela pourrait potentiellement avoir un impact sur les résultats de votre analyse, il est donc crucial de connaître cette différence lors du choix d'une bibliothèque.