J'ai le problème suivant avec python pandas (je suis relativement novice en la matière) : J'ai un jeu de données simple avec une colonne pour la date, et une colonne correspondante de valeurs. Je suis capable de trier ce Dataframe par date et par valeur en faisant ce qui suit :
df = df.sort_values(['date', 'value'],ascending=False)
J'obtiens ceci :
date value
2019-11 100
2019-11 89
2019-11 87
2019-11 86
2019_11 45
2019_11 33
2019_11 24
2019_11 11
2019_11 8
2019_11 5
2019-10 100
2019-10 98
2019-10 96
2019-10 94
2019_10 94
2019_10 78
2019_10 74
2019_10 12
2019_10 3
2019_10 1
Maintenant, ce que je voudrais faire, c'est me débarrasser du cinquième percentile le plus bas pour la colonne des valeurs pour CHAQUE mois (chaque groupe). Je sais que je dois utiliser une méthode groupby, et peut-être aussi une fonction :
df = df.sort_values(['date', 'value'],ascending=False).groupby('date', group_keys=False).apply(<???>)
C'est au niveau du ? ?? que j'ai des difficultés. Je sais comment supprimer le 5ème percentile le plus bas sur un Dataframe trié dans son ensemble, par exemple en faisant :
df = df[df.value > df.value.quantile(.05)]
Cela a fait l'objet d'un autre post sur StackOverflow. Je sais que je peux aussi utiliser numpy pour faire cela, et que c'est beaucoup plus rapide, mais mon problème est vraiment de savoir comment appliquer cela à CHAQUE GROUPE indépendamment (chaque portion de la colonne de valeur triée par mois) dans le Dataframe, et pas seulement à l'ensemble du Dataframe.
Toute aide serait grandement appréciée Merci beaucoup, Bien à vous, Berti