Bloquée sur code python simple :)

Natha9 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 Natha9 -

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.

A voir également:

2 réponses

Natha9
 

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

2
Bruno83200_6929 Messages postés 617 Date d'inscription   Statut Membre Dernière intervention   134
 

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

-1