Skip to content

Comment lire un fichier CSV avec Polars Expliqué

Updated on

Polars, une bibliothèque DataFrame rapide en Python, offre une interface familière et puissante pour le traitement des données structurées. Surtout lorsqu'il s'agit de fichiers CSV, Polars brille en proposant des méthodes simples, telles que read_csv() et scan_csv(), rappelant celles de pandas. Apprenons comment en tirer le meilleur parti.

Importation d'un fichier CSV avec read_csv()

Polars propose une méthode facile à utiliser read_csv() pour importer des fichiers CSV. Sa syntaxe est frappante de similitude avec pandas, ce qui facilite la transition pour ceux qui y sont habitués. Voici une démonstration rapide:

import polars as pl
 
# Lire un CSV avec read_csv
df = pl.read_csv('data_sample.csv')
print(df)

Résultat:

forme: (3, 4)
┌───────────┬───────┬─────┬───────────────────┐
│ studentId ┆ Name  ┆ Age ┆ FirstEnrollment   │
│ ---       ┆ ---   ┆ --- ┆ ---               │
│ i64       ┆ str   ┆ i64 ┆ str               │
╞═══════════╪═══════╪═════╪═══════════════════╡
│ 1         ┆ Mike  ┆ 24  ┆ 2020-01-17        │
│ 2         ┆ Sarah ┆ 33  ┆ 2021-07-23        │
│ 3         ┆ John  ┆ 19  ┆ 2022-12-20        │
└───────────┴───────┴─────┴───────────────────┘

Analyse des dates avec read_csv()

Lors de l'importation de fichiers CSV, il peut être intéressant de convertir certaines colonnes en objets date-heure. Cette fonctionnalité est activée par le paramètre parse_dates=True. Par exemple:

# Lire un CSV en analysant les dates
df_dates = pl.read_csv('data_sample.csv', parse_dates=True)
print(df_dates)

Changement des types de colonnes à la volée

Il est également possible de convertir le type de données de colonnes spécifiques lors de la lecture du fichier. Par exemple, voici comment convertir la colonne 'Age' de i64 en Int32:

# Lire un CSV avec un type de données spécifique
df_age_casted = pl.read_csv('data_sample.csv', parse_dates=True).with_column(pl.col('Age').cast(pl.Int32))
print(df_age_casted)

Un avantage de Polars par rapport à pandas est sa capacité à afficher les types de colonnes lors de l'affichage d'un DataFrame, ce qui facilite le dépannage des types de données.

Optimisation de la lecture avec scan_csv()

Pour les grands ensembles de données, Polars propose une méthode plus efficace en termes de ressources - scan_csv(). En utilisant l'évaluation paresseuse, cette méthode charge les données en mémoire uniquement lorsque cela est nécessaire (c'est-à-dire lorsque collect() est appelé), ce qui peut réduire potentiellement les problèmes de mémoire. Voici un aperçu rapide:

# Lecture efficace avec scan_csv
q = pl.scan_csv('data_sample.csv')
df_lazy = q.collect()
print(df_lazy)

N'oubliez pas d'appeler collect() pour exécuter les opérations, sinon une représentation des opérations (plan) est renvoyée.

Ce ne sont que quelques-unes des façons dont Polars peut être utilisé pour interagir avec les fichiers CSV. Sa syntaxe claire et ses fonctions puissantes en font un excellent outil pour la manipulation des données en Python.

Comprendre les expressions et actions Polars

Polars prend en charge à la fois les opérations impatientes et paresseuses. En mode impatient, les calculs sont exécutés immédiatement, tandis qu'en mode paresseux, les opérations sont mises en file d'attente et évaluées uniquement lorsque cela est nécessaire, optimisant ainsi l'efficacité et l'utilisation de la mémoire.

Utilisation de l'évaluation paresseuse avec scan_csv()

Avec scan_csv(), les données ne sont pas chargées en mémoire immédiatement. Au lieu de cela, Polars construit un plan de requête qui inclut les opérations à effectuer. Ce plan de requête n'est exécuté que lorsque collect() est appelé. Cette technique, appelée évaluation paresseuse, peut permettre une utilisation plus efficace de la mémoire et des calculs plus rapides, notamment avec de grands ensembles de données. Voici un exemple:

# Lecture paresseuse avec scan_csv
query = pl.scan_csv('data_sample.csv')
print(query)

L'exécution du code ci-dessus donne un résumé du "plan" des opérations, mais les opérations elles-mêmes ne sont pas encore exécutées.

plan naïf : (exécutez LazyFrame.describe_optimized_plan() pour voir le plan optimisé)

  CSV SCAN data_sample.csv
  PROJECT */4 COLUMNS

Pour exécuter ce plan et charger les données en mémoire, vous devez utiliser la méthode collect():

df_lazy = query.collect()
print(df_lazy)

Plus qu'une simple lecture de fichiers CSV : Manipulation de données

Au-delà de la simple lecture de fichiers CSV, Polars propose une gamme complète de fonctions de manipulation de données qui s'alignent bien avec les opérations de pandas. Cela fait de Polars un outil efficace et polyvalent pour l'analyse de données. Que vous filtriez des données, appliquiez des transformations ou agrégiez des informations, Polars peut tout gérer avec de bonnes performances.

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 des données (opens in a new tab)

Plus besoin d'effectuer des traitements complexes 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 sur un notebook Kaggle/Google Colab:

Exécuter PyGWalker dans Kaggle Notebook (opens in a new tab)Exécuter PyGWalker dans Google Colab (opens in a new tab)Donner une ⭐️ à 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 construit sur 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 !

FAQ :

Lors de la navigation dans Polars, vous pouvez rencontrer certaines questions. Voici quelques-unes des plus courantes :

  1. Quelle est la principale différence entre les fonctions read_csv() et scan_csv() dans Polars ?

read_csv() est une fonction directe qui lit un fichier CSV et charge l'ensemble des données en mémoire. En revanche, scan_csv() fonctionne de manière retardée, ce qui signifie qu'elle ne charge pas les données tant que collect() n'est pas appelé. Cela rend scan_csv() plus efficace lorsqu'il s'agit de travailler avec de grands ensembles de données, car elle ne charge en mémoire que les données nécessaires.

  1. Polars peut-il gérer l'analyse des dates lors de la lecture de fichiers CSV ?

Oui, Polars peut gérer l'analyse des dates. Lors de l'utilisation de la fonction read_csv(), il suffit de définir l'argument parse_dates=True, et Polars tentera d'analyser automatiquement les colonnes contenant des informations de date.

  1. Puis-je modifier le type de données de colonnes spécifiques lors de la lecture d'un fichier CSV ?

Absolument. Polars vous permet de modifier les types de données de colonnes lors du processus de lecture d'un fichier CSV. Vous pouvez utiliser la méthode with_columns() couplée à la fonction cast() pour cela. Par exemple, df = pl.read_csv('data.csv').with_columns(pl.col('Age').cast(pl.Int32)) modifiera la colonne 'Age' en Int32.