name: polars
description: Bibliothèque DataFrame ultra-rapide en mémoire pour les datasets tenant en RAM. À utiliser quand pandas est trop lent mais que les données tiennent toujours en mémoire. Évaluation lazy, exécution parallèle, backend Apache Arrow. Idéal pour les datasets de 1-100 Go, les pipelines ETL, remplacement plus rapide de pandas. Pour les données plus volumineuses que la RAM, utilisez dask ou vaex.
license: https://github.com/pola-rs/polars/blob/main/LICENSE
tags: [scientific-skills, polars, pandas, dask]
metadata:
skill-author: K-Dense Inc.
--------|--------|--------|
| Sélectionner colonne | df["col"] | df.select("col") |
| Filtrer | df[df["col"] > 10] | df.filter(pl.col("col") > 10) |
| Ajouter colonne | df.assign(x=...) | df.with_columns(x=...) |
| Grouper par | df.groupby("col").agg(...) | df.group_by("col").agg(...) |
| Fenêtre | df.groupby("col").transform(...) | df.with_columns(...).over("col") |
Modèles de syntaxe clés
Pandas séquentiel (lent) :
df.assign(
col_a=lambda df_: df_.value * 10,
col_b=lambda df_: df_.value * 100
)
Polars parallèle (rapide) :
df.with_columns(
col_a=pl.col("value") * 10,
col_b=pl.col("value") * 100,
)
Pour un guide de migration complet, chargez references/pandas_migration.md.
Bonnes pratiques
Optimisation des performances
-
Utilisez l'évaluation lazy pour les grands datasets :
lf = pl.scan_csv("large.csv") # N'utilisez pas read_csv result = lf.filter(...).select(...).collect() -
Évitez les fonctions Python dans les chemins critiques :
- Restez dans l'API expression pour la parallélisation
- Utilisez
.map_elements()uniquement si nécessaire - Préférez les opérations natives de Polars
-
Utilisez le streaming pour les très gros datasets :
lf.collect(streaming=True) -
Sélectionnez uniquement les colonnes nécessaires au début :
# Bon : Sélectionner les colonnes tôt lf.select("col1", "col2").filter(...) # Mauvais : Filtrer sur toutes les colonnes d'abord lf.filter(...).select("col1", "col2") -
Utilisez les types de données appropriés :
- Categorical pour les chaînes de faible cardinalité
- Tailles d'entiers appropriées (i32 vs i64)
- Types de date pour les données temporelles
Modèles d'expressions
Opérations conditionnelles :
pl.when(condition).then(value).otherwise(other_value)
Opérations sur colonnes multiples :
df.select(pl.col("^.*_value$") * 2) # Motif regex
Gestion des valeurs nulles :
pl.col("x").fill_null(0)
pl.col("x").is_null()
pl.col("x").drop_nulls()
Pour des bonnes pratiques et des modèles supplémentaires, chargez references/best_practices.md.
Ressources
Cette skill inclut une documentation de référence complète :
references/
core_concepts.md- Explications détaillées des expressions, de l'évaluation lazy et du système de typesoperations.md- Guide complet de toutes les opérations courantes avec des exemplespandas_migration.md- Guide complet de migration de pandas vers Polarsio_guide.md- Opérations d'entrée/sortie des données pour tous les formats supportéstransformations.md- Jointures, concaténation, pivots et opérations de restructurationbest_practices.md- Conseils d'optimisation des performances et modèles courants
Chargez ces références selon les besoins quand les utilisateurs demandent des informations détaillées sur des sujets spécifiques.