Bonjour,
Supposons que nous ayons un portefeuille ou la répartition soit 20% de demoiselles, 30% d'hommes et 50% de femmes.
Pour simuler ce portefeuille je peux tirer un nombre aléatoire np.random.rand() entre 0 et 1 et affecter une catégorie (probabilité pondérée) comme suit :
Intervalle Categorie Proba_cumulee 0-20% Demoiselles 0,2 21-50% Hommes 0,5 51%-100% Femmes 1
Je sais donc que je ne tomberai pas sur la valeur, c'est la raison pour laquelle je souhaite travailler en intervalle sachant que mes tables de paramétrages sont ordonnées du plus petit au plus grand.
Par exemple, je sais que dans mon portefeuille j'ai 20% de demoiselles, 30% d'hommes et 50% de femmes.
La méthode est alors de tirer un numéro aléatoire et s'il est <=20% j'affecte "Demoiselle", s'il est entre 20% et 50% j'affecte "Monsieur" et s'il est supérieur a 50% j'affecte "Madame"
Bien sur pour 3 lignes je peux faire :
Par contre, si nous passons au niveau des départements on a 100 valeurs et si on passe au niveau des codes postaux on passe a des valeurs trop importantes pour faire de la saisie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for x in Base_client_RD : if x < 0.2 : Base_client_Sexe.append("D") elif x >0.2 and x < 0.5 : Base_client_Sexe.append("H") else : Base_client_Sexe.append("F")
Sur VBA ce que j'avais fait est :
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If Ratio < V1 Then Sheets("Portefeuille_T0").Cells(1 + i, 3).Value = Sheets("Loi_age_zone").Range("O6").Value If Ratio >= V1 And Ratio < V2 Then Sheets("Portefeuille_T0").Cells(1 + i, 3).Value = Sheets("Loi_age_zone").Range("O7").Value If Ratio >= V2 And Ratio < V3 Then Sheets("Portefeuille_T0").Cells(1 + i, 3).Value = Sheets("Loi_age_zone").Range("O8").Value
Mais sous python, je ne vois pas.
Il y a une méthode avec des intervalles fixes (https://stackoverflow.com -> pandas-lookup-by-pd-interval) , mais ce n'est pas mon cas.
La méthode avec le merge.Asof ne fonctionne pas car dans la quasi totalité des cas sauf 3, cela ne renvoie rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part pd.merge_asof(Part_C, Fichier_parametrage_Sexe, on='Part_C')
Si quelqu'un a une idée, cela serait super.
Bonne journée.
Partager