Bonjour,

Je voudrais faire une chose très basique que je fais dans un autre languge (SAS), à savoir créer un dataframe avec une définition (macro en SAS). Je suis amené à répéter les mêmes opérations un certain nombre de fois et je voudrais avoir une définition dédiée au lieu de tout répéter à chaque fois.

J'ai choisis de partir sur une opération très simple pour commencer : sortir un dataframe qui contient des données agrégées (ici moyenne et médiane) d'une colonne d'un premier dataframe avec une condition (sur le groupe)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
essai = pd.DataFrame(database[(database['GROUP']=="GROUP1")].agg({'height' : ['mean', 'median']}))
Je souhaite avoir une définition dans laquelle je pourrais choisir :
- le nom du dataframe de départ (ici database)
- le nom du dataframe de sortie (ici essai)
- le nom de la modalité du groupe que je veux étudier (ici GROUP1)
- la colonne que je souhaite décrire (ici height)

Sauf que je n'y arrive pas.

Voici ce que ça donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
def descnum(start, out, group, col):
    out = pd.DataFrame(start[(start['GROUP']==group)].agg({var : ['mean', 'median']}))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
essai = pd.DataFrame(descnum(start=database, out=OnTeste, group="group1", var="height"))
 
NameError: name 'OnTeste' is not defined
Je me doute que l'application de la définition n'est pas la bonne mais je ne sais pas comment faire autrement... et je ne comprends pas le message indiqué. Je n'arrive pas à comprendre comment l'interpréteur peut considérer mon "out" comme un paramètre dont il doit prendre la valeur. C'est automatique en Python si on l'a déclaré dans la définition ? En SAS, on repère ce genre des choses avec le symbole & par exemple.

Pourriez-vous m'aiguiller ? Une fois que j'aurais réussis à faire ça j'essaierai de passer par des boucles avec des listes histoire d'avoir tout d'un coup.

Merci,
alers