Guide Polars pour Data Analysts 📊 : Manipulation Quotidienne des Données

1. Import et Préparation des Données 🚀

Chargement de Données Courantes

import polars as pl

# Chargement de fichiers
# CSV
df_csv = pl.read_csv("rapport_ventes.csv")

# Excel
df_excel = pl.read_excel("analyse_financiere.xlsx")

# JSON
df_json = pl.read_json("donnees_clients.json")

# Parquet (format big data)
df_parquet = pl.read_parquet("grand_dataset.parquet")

2. Nettoyage et Prétraitement 🧹

Gestion des Valeurs Manquantes

# Stratégies de remplacement
df_clean = df.fill_null(strategy="mean")  # Remplace par moyenne
df_clean = df.fill_null(pl.lit("Non Renseigné"))  # Valeur par défaut
df_clean = df.drop_nulls()  # Supprime les lignes avec NA

Transformation de Colonnes

df_transformed = df.with_columns([
    # Nettoyage des chaînes
    pl.col("nom_client").str.to_lowercase(),
    pl.col("email").str.strip(),

    # Conversions de types
    pl.col("date_vente").str.strptime(pl.Date),
    pl.col("montant").cast(pl.Float64),

    # Création de colonnes calculées
    (pl.col("montant_ht") * 1.2).alias("montant_ttc")
])

3. Filtrage et Sélection 🔍

Filtres Avancés

# Filtres multiples
top_clients = df.filter(
    (pl.col("montant") > 1000) &
    (pl.col("region") == "Paris") &
    (pl.col("date_vente").dt.year() == 2023)
)

# Sélection de colonnes
colonnes_importantes = df.select([
    "nom_client",
    "montant",
    "date_vente"
])

4. Agrégations et Analyses 📈

Groupby et Tableaux Croisés

# Analyse par catégorie
analyse_ventes = df.group_by("categorie_produit").agg([
    pl.sum("montant").alias("total_ventes"),
    pl.mean("montant").alias("panier_moyen"),
    pl.n_unique("nom_client").alias("nb_clients_uniques")
])

# Tableaux croisés
ventes_par_mois = df.group_by([
    pl.col("date_vente").dt.year(),
    pl.col("date_vente").dt.month(),
    "categorie_produit"
]).agg(
    pl.sum("montant").alias("total_ventes")
)

5. Time Series et Analyses Temporelles ⏰

Manipulation de Dates

df_dates = df.with_columns([
    # Extractions temporelles
    pl.col("date_vente").dt.year().alias("annee"),
    pl.col("date_vente").dt.month().alias("mois"),
    pl.col("date_vente").dt.day().alias("jour"),

    # Calculs sur périodes
    pl.col("date_vente").dt.offset_by("1M")  # Décalage de 1 mois
])

# Rolling windows
analyse_tendance = df.group_by_dynamic(
    "date_vente",
    every="1M"  # Agrégation mensuelle
).agg(
    pl.sum("montant").alias("total_mensuel")
)

6. Jointures et Combinaisons 🔗

Types de Jointures