Séparer une dataframe en trois plages de dates disjointes
RésoluNatha9 -
Bonjour,
Je débute sur Python et je n'arrive pas à savoir quel code écrire pour répondre à cette question :
Créer une nouvelle variable nommée duration_categ contenant 3 modalités :
- court-terme pour tous les prêts d'une durée inférieure ou égale à 10 mois ;
- moyen-terme pour tous les prêts d'une durée strictement supérieure à 10 mois et inférieure ou égale à 30 mois ;
- long-terme pour tous les prêts d'une durée strictement supérieure à 30 mois.
La dataframe se nomme df dont voici un extrait : (impossible de mettre l'extrait en image meme en tableau)
Donc il faut définir se code par rapport à la colonne 'duration' (du prêt).
Je vous remercie par avance de votre aide.
- Séparer une dataframe en trois plages de dates disjointes
- Nombre de jours entre deux dates excel - Guide
- Séparer pdf - Guide
- Couper une photo en trois pour instagram - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
- La blague des trois nains explication ✓ - Forum Loisirs / Divertissements
2 réponses
Bonjour,
Tu veux créer une nouvelle colonne dans ton DataFrame df en fonction de la colonne duration.
En Python avec pandas, tu peux le faire de plusieurs façons :
Avec pd.cut (très pratique pour des intervalles numériques)
import pandas as pd df["duration_categ"] = pd.cut( df["duration"], bins=[-float("inf"), 10, 30, float("inf")], # bornes des intervalles labels=["court-terme", "moyen-terme", "long-terme"] )
Ici :
(-∞, 10] → court-terme
(10, 30] → moyen-terme
(30, ∞) → long-terme
Avec np.where (rapide et lisible si peu de conditions)
import numpy as np df["duration_categ"] = np.where(df["duration"] <= 10, "court-terme", np.where(df["duration"] <= 30, "moyen-terme", "long-terme"))
Avec une fonction et .apply (plus pédagogique au début)
def categoriser_duree(x): if x <= 10: return "court-terme" elif x <= 30: return "moyen-terme" else: return "long-terme" df["duration_categ"] = df["duration"].apply(categoriser_duree)
Si tu débutes, je te conseille la méthode 3 (avec fonction) pour bien comprendre la logique.
Ensuite tu pourras passer à la méthode 1 (avec pd.cut) qui est la plus concise et "pro".
Je t'ai écris un exemple complet avec un petit DataFrame fictif pour que tu puisses tester directement dans ton Python :
import pandas as pd # Exemple de DataFrame avec une colonne "duration" data = { "id": [1, 2, 3, 4, 5], "duration": [5, 12, 30, 45, 8] # durées en mois } df = pd.DataFrame(data) print("=== DataFrame de départ ===") print(df) # --- Méthode avec une fonction + apply (simple à comprendre) --- def categoriser_duree(x): if x <= 10: return "court-terme" elif x <= 30: return "moyen-terme" else: return "long-terme" df["duration_categ"] = df["duration"].apply(categoriser_duree) print("\n=== DataFrame avec duration_categ ===") print(df)
Résultat attendu :
=== DataFrame de départ === id duration 0 1 5 1 2 12 2 3 30 3 4 45 4 5 8 === DataFrame avec duration_categ === id duration duration_categ 0 1 5 court-terme 1 2 12 moyen-terme 2 3 30 moyen-terme 3 4 45 long-terme 4 5 8 court-terme
Bonjour, je vous remercie pour votre explication qui est très claire merci beaucoup.
J'ai continué à chercher aussi et j'ai finalement réussi avec lambda :
df['duration_categ'] = df['Duration'].apply(lambda x: "Moyen-terme" if 10 < x <= 30 else ("court-terme" if x <= 10 else "long-terme"))
Je garde votre explication car vraiment limpide merci encore