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)
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 :
1 2
| def descnum(start, out, group, col):
out = pd.DataFrame(start[(start['GROUP']==group)].agg({var : ['mean', 'median']})) |
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
Partager