Discrétisation des valeurs continues (pd.cut, pd.qcut)
La discrétisation des valeurs continues consiste à diviser une variable continue en intervalles (ou « buckets ») afin de la transformer en variable catégorielle. Cela peut être utile pour simplifier un modèle ou pour effectuer une analyse en regroupant des valeurs similaires. Deux fonctions couramment utilisées dans Pandas pour la discrétisation des valeurs continues sont pd.cut() et pd.qcut() : pd.cut() : Cette fonction permet de diviser une variable continue en intervalles spécifiés par l’utilisateur, où chaque intervalle a des bornes fixes définies. Cela permet de catégoriser les données en fonction de tranches d’une plage de valeurs. Exemple : Si vous avez des données de revenus, vous pouvez les diviser en catégories telles que « Faible », « Moyenne », « Élevée » en définissant les bornes pour chaque catégorie. pd.qcut() : Contrairement à pd.cut(), pd.qcut() divise la variable continue en un nombre fixe de quantiles. Cela permet de garantir que chaque catégorie aura le même nombre d’observations. Exemple : Si vous avez 1000 enregistrements et que vous utilisez pd.qcut() pour diviser les données en 4 groupes, chaque groupe contiendra environ 250 observations, mais les intervalles seront ajustés en fonction des données. Ces méthodes sont très utiles lorsqu’il est nécessaire de transformer des variables continues en variables catégorielles, par exemple, pour des modèles de machine learning qui requièrent des variables catégorielles ou pour effectuer des analyses descriptives.
Fonctions :
-
pd.cut() & pd.qcut()
Ces fonctions permettent de transformer une variable continue en classes discrètes : pd.cut() découpe en intervalles de largeur égale. pd.qcut() découpe en quantiles (effectifs équilibrés dans chaque groupe).
Importation :
import pandas as pd
Attributs :
Paramètre Description bins
Nombre de catégories ou liste des bornes labels
Noms des catégories right
True
(par défaut) inclut la borne droite dans l’intervalleduplicates
raise
(par défaut) oudrop
pour éviter les doublons de bornesprecision
Nombre de décimales affichées Exemple de code :
import pandas as pd # Création d'un DataFrame avec des valeurs continues df = pd.DataFrame({'valeurs': [1, 7, 5, 12, 15, 22, 30, 42, 50]}) # Discrétisation en 3 intervalles de largeur égale df['bins'] = pd.cut(df['valeurs'], bins=3, labels=["Petit", "Moyen", "Grand"]) df['quantiles'] = pd.qcut(df['valeurs'], q=3, labels=["Bas", "Moyen", "Haut"]) print(df)
Explication du code :
pd.qcut()
divise enq=3
groupes contenant chacun environ le même nombre de valeurs.- Contrairement à
pd.cut()
, les bornes ne sont pas fixes mais dépendent de la distribution des données.
🔎 Remarques
pd.cut()
est utile lorsque les intervalles doivent être fixes.pd.qcut()
est recommandé pour créer des groupes équilibrés.- Vérifier la distribution des données avant d’appliquer ces méthodes pour éviter des intervalles vides.