polars

Par mkurman · zorai

npx skills add https://github.com/mkurman/zorai --skill polars

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

  1. Utilisez l'évaluation lazy pour les grands datasets :

    lf = pl.scan_csv("large.csv")  # N'utilisez pas read_csv
    result = lf.filter(...).select(...).collect()
  2. É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
  3. Utilisez le streaming pour les très gros datasets :

    lf.collect(streaming=True)
  4. 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")
  5. 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 types
  • operations.md - Guide complet de toutes les opérations courantes avec des exemples
  • pandas_migration.md - Guide complet de migration de pandas vers Polars
  • io_guide.md - Opérations d'entrée/sortie des données pour tous les formats supportés
  • transformations.md - Jointures, concaténation, pivots et opérations de restructuration
  • best_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.

Skills similaires