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