Skip to content

Polars DataFrame : Introduction au traitement de données à haute vitesse

Updated on

Dépassant les domaines familiers des pandas, les enthousiastes de Python adoptent désormais les capacités de traitement de données à haute vitesse et efficaces de Polars DataFrame. Offrant une trousse à outils redoutable pour gérer de grands ensembles de données, cette bibliothèque DataFrame, entièrement construite en Rust, gagne du terrain parmi les scientifiques des données et les analystes. Ce guide complet plonge dans le Polars DataFrame, transmettant une compréhension plus approfondie de ses fonctionnalités et montrant comment il se présente comme une alternative supérieure aux pandas.

Exploiter Polars plutôt que Pandas

Une comparaison rapide révèle les avantages distincts de Polars par rapport à Pandas. Contrairement à Pandas, Polars s'abstient d'utiliser un index pour le DataFrame, ce qui rend la manipulation des données nettement plus simple. De plus, Polars utilise des tableaux Apache Arrow pour la représentation interne des données, ce qui améliore les temps de chargement, l'utilisation de la mémoire et l'efficacité de calcul. De plus, étant écrit en Rust, Polars propose plus d'opérations parallèles, accélérant de nombreuses tâches. Et n'oublions pas que Polars prend en charge l'évaluation paresseuse, optimisant les requêtes en fonction des besoins et réduisant l'utilisation de la mémoire, une fonctionnalité non disponible avec l'évaluation impatiente de Pandas.

Commencer avec Polars DataFrame

L'installation de Polars est simple. Vous pouvez utiliser les commandes pip ou conda :

pip install polars
conda install polars

Commençons notre parcours en créant un DataFrame Polars. Ci-dessous, nous importons le module Polars et créons un DataFrame :

import polars as pl
 
df = pl.DataFrame(
    {
        'Modèle': ['iPhone X','iPhone XS','iPhone 12','iPhone 13','Samsung S11','Samsung S12','Mi A1','Mi A2'],
        'Ventes': [80,170,130,205,400,30,14,8],     
        'Entreprise': ['Apple','Apple','Apple','Apple','Samsung','Samsung','Xiao Mi','Xiao Mi'],
    }
)
df

Contrairement à Pandas, Polars s'attend à ce que les noms d'en-tête de colonne soient de type chaîne. Si vous souhaitez utiliser des entiers comme noms d'en-tête de colonne, assurez-vous de les utiliser sous forme de chaînes :

df2 = pl.DataFrame(
    {
        "0" : [1,2,3],
        "1" : [80,170,130],
    }
)

Le type de données de chaque colonne dans Polars est également affiché à côté du nom de l'en-tête. Si vous souhaitez afficher explicitement le type de données de chaque colonne, vous pouvez utiliser les propriétés dtypes :

df.dtypes

La récupération des noms de colonnes peut être réalisée avec la propriété columns :

df.columns    # Renvoie ['Modèle', 'Ventes', 'Entreprise']

Pour obtenir le contenu du DataFrame sous forme d'une liste de tuples, utilisez la méthode rows() :

df.rows()

Une fonctionnalité cruciale à noter est que Polars n'utilise pas le concept d'index, contrairement à Pandas. La philosophie de conception de Polars indique explicitement que l'index n'est pas particulièrement utile dans les DataFrames.

Découverte de la sélection de colonnes dans Polars

La sélection de colonnes dans Polars est facile. Spécifiez le nom de la colonne en utilisant la méthode select() :

df.select('Modèle')

L'instruction renvoie un DataFrame Polars contenant la colonne 'Modèle'. Cependant, Polars déconseille la méthode d'indexation entre crochets, et ses versions futures pourraient même éliminer cette fonctionnalité. Pour sélectionner plusieurs colonnes, fournissez les noms de colonnes sous forme de liste :

df.select(['Modèle','Entreprise'])

La puissance des expressions est une autre fonctionnalité majeure de Polars. Par exemple, pour récupérer toutes les colonnes entières (spécifiquement Int64) dans le DataFrame, vous pouvez utiliser une expression dans la méthode select() :

df.select(pl.col(pl.Int64))

Polars a une manière unique de chaîner les expressions. Par exemple, l'expression ci-dessous sélectionne les colonnes 'Modèle' et 'Ventes', puis trie les lignes en fonction des valeurs de la colonne 'Ventes' :

df.select(pl.col(['Modèle','Ventes']).sort_by('Ventes'))    

Si vous souhaitez récupérer toutes les colonnes de type texte, utilisez la propriété 'pl.Utf8' :

df.select([pl.col(pl.Utf8)])

Les expressions dans Polars seront expliquées plus en détail dans la suite de l'article.

Découverte de la sélection de lignes dans Polars

Pour sélectionner une seule ligne dans un DataFrame, transmettez le numéro de ligne à l'aide de la méthode row() :

df.row(0)   # obtenir la première ligne

Cela donne un tuple :

('iPhone X', 80, 'Apple')

Pour sélectionner plusieurs lignes, Polars recommande d'utiliser la fonction filter(). Par exemple, si vous souhaitez récupérer tous les produits Apple, vous pouvez utiliser l'expression suivante :

df.filter(pl.col('Entreprise') == 'Apple')

Vous pouvez spécifier plusieurs conditions en utilisant les opérateurs logiques :

df.filter((pl.col('Entreprise') == 'Apple') | (pl.col('Entreprise') == 'Samsung'))

Dans Polars, vous pouvez utiliser les opérateurs logiques suivants :

  • | — OU
  • & — ET
  • ~ — Non

Sélection de lignes et de colonnes simultanément

Souvent, vous voudrez sélectionner des lignes et des colonnes simultanément. Enchaînez les méthodes filter() et select() pour y parvenir :

df.filter(pl.col('Entreprise') == 'Apple').select('Modèle')

L'instruction ci-dessus sélectionne toutes les lignes contenant 'Apple' puis affiche uniquement la colonne 'Modèle'. Pour afficher également la colonne 'Ventes', transmettez une liste à la méthode select() :

df.filter(pl.col('Entreprise') == 'Apple').select(['Modèle','Ventes'])

Le cœur de l'histoire est que le DataFrame Polars offre une alternative efficace et à haute vitesse aux pandas traditionnels, en exploitant son évaluation paresseuse, sa politique sans index et ses capacités d'opération parallèle. Des installations faciles aux manipulations de données complexes, Polars se présente comme un outil puissant, simplifiant la manipulation des données et améliorant l'utilisation de la mémoire.

Visualisez votre DataFrame Polars avec PyGWalker

PyGWalker (opens in a new tab) est une bibliothèque Python Open Source qui peut vous aider à créer des visualisations de données à partir de votre dataframe Polars facilement.

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

Plus besoin d'effectuer des traitements compliqués avec du code Python, importez simplement vos données et faites 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)

Alternativement, vous pouvez l'essayer dans un notebook Kaggle/Google Colab :

Exécuter PyGWalker dans un notebook Kaggle (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Donnez un ⭐️ à PyGWalker sur GitHub (opens in a new tab)
Exécuter PyGWalker dans un notebook Kaggle (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 construit avec le 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équemment posées

  1. Quels sont les principaux avantages de Polars par rapport à Pandas ?

    Le DataFrame de Polars offre plusieurs avantages par rapport à Pandas. Il utilise des tableaux Apache Arrow pour une manipulation efficace des données, ne dépend pas des indices pour la manipulation des données, prend en charge les opérations parallèles et utilise une évaluation différée pour optimiser les requêtes en fonction des besoins, améliorant ainsi l'utilisation de la mémoire.

  2. Comment puis-je sélectionner des colonnes dans un DataFrame Polars ?

    Le DataFrame de Polars fournit la méthode select() pour choisir des colonnes. Vous pouvez passer le nom de la colonne en tant que chaîne de caractères pour sélectionner une seule colonne ou une liste de noms de colonnes pour sélectionner plusieurs colonnes.

  3. Comment puis-je filtrer les lignes en fonction de conditions spécifiques dans Polars ?

    La méthode filter() est utilisée pour sélectionner des lignes en fonction de conditions spécifiques. Vous pouvez passer une expression à cette méthode qui équivaut une colonne à une certaine valeur pour filtrer les lignes. Vous pouvez également utiliser des opérateurs logiques pour spécifier plusieurs conditions.