Python как сгруппировать и получить топ 5 строк? - PullRequest
0 голосов
/ 10 декабря 2018

у меня есть фрейм данных, как показано ниже:

df = pd.DataFrame({"Salary_Range": ['0-4999', '0-4999', '0-4999', '5000-7999', '5000-7999', '8000-14999', '8000-14999'],
  "Nationality_desc": ['India', 'India', 'Philippines', 'Pakistan', 'America', 'America', 'India'],
  "AgeGroup":['Adult','Adult','Young','Young','Senior','Senior','Adult'],
  "Amount":['10000','24000','45000','21200','43200','12300','54300'],
  "Category" :['Electrical','Electrical','Electrical','House','Toy','Car','House']})

мне нужно сгруппировать по

  • "Salary_Range"
  • "Nationality_desc"
  • «AgeGroup»
  • «Категория» (в том же порядке)

и получите сумму «Сумма».Несмотря на то, что это простая группировка, проблема в том, что я хочу получить значения этой группы только для, скажем, Top 5 «Category» (в моих данных, хотя для определенного Salary_Range, мы можем взять только Top 2, поэтому мы можем рассмотреть Top 2 длямой набор данных игрушек)

Я написал приведенный ниже код, но я не могу получить только топ 2 «Категория», он выдает все доступные «Категории».

   frame_mcc=pd.pivot_table(df,index=['Salary_Range','Nationality_desc','AgeGroup','Category'],
                    values=['Amount'],aggfunc=[np.sum,len],fill_value=0)

Сумма здесьна один год.я хотел, чтобы он был усреднен за месяц, поэтому сумма должна быть разделена на 12.

Кроме того, как я могу визуализировать эту сводную (или) группу на?

Top 5 (или) 2: «КАТЕГОРИЯ» - это сумма «СУММА»

...