Как вернуть верхний N процентов Pandas DataFrame путем группировки? - PullRequest
1 голос
/ 22 июня 2019

У меня есть датафрейм df, который выглядит следующим образом:

Customer   Revenue  Products  Cluster
Jon         100         5        A
Janet       225         12       C
Jim         75          2        B
Stacy       95          4        A
John        125         5        B
Bob         325         20       C
Megan       75          2        A
Stacy       95          4        A

и т. Д. Для записей по 100 тыс.,Я знаю, что это не работает, но я думаю, что это дает общее представление о том, что я пытаюсь сделать:

df.groupby('cluster').len(df['cluster'])/100 <= .2

Попытка вернуть фрейм данных для 2% лучших клиентов по доходам по кластерам.

1 Ответ

4 голосов
/ 22 июня 2019

IIUC, похоже, вы можете использовать GroupBy.quantile и затем фильтровать результат:

# "Cluster" is the grouper, and
# "Revenue" is the column to calculate the quantile on. 
df[df['Revenue'] >= df.groupby('Cluster')['Revenue'].transform('quantile', 0.98)]

  Customer  Revenue  Products Cluster
0      Jon      100         5       A
4     John      125         5       B
5      Bob      325        20       C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...