Список наиболее распространенных членов в группе панд?
У меня есть датафрейм с такими столбцами:
id lead_sponsor lead_sponsor_class
02837692 Janssen Research & Development, LLC Industry
02837679 Aarhus University Hospital Other
02837666 Universidad Autonoma de Ciudad Juarez Other
02837653 Universidad Autonoma de Madrid Other
02837640 Beirut Eye Specialist Hospital Other
Я хочу найти наиболее распространенных ведущих спонсоров. Я могу перечислить размер каждой группы, используя:
df.groupby(['lead_sponsor', 'lead_sponsor_class']).size()
что дает мне это:
lead_sponsor lead_sponsor_class
307 Hospital of PLA Other 1
3E Therapeutics Corporation Industry 1
3M Industry 4
4SC AG Industry 8
5 Santé Other 1
Но как мне найти 10 самых распространенных групп? Если я сделаю:
df.groupby(['lead_sponsor', 'lead_sponsor_class']).size().sort_values(ascending=False).head(10)
Тогда я получаю ошибку:
AttributeError: у объекта 'Series' нет атрибута 'sort_values'
1 ответ
Решение
Я думаю, что вы можете использовать Series.nlargest
:
print (df.groupby(['lead_sponsor', 'lead_sponsor_class']).size().nlargest(10))
В документах есть Примечания:
Быстрее, чем.sort_values (ascending=False).head(n) для малых n относительно размера объекта Series.
Образец:
import pandas as pd
df = pd.DataFrame({'id': {0: 2837692, 1: 2837679, 2: 2837666, 3: 2837653, 4: 2837640},
'lead_sponsor': {0: 'a', 1: 'a', 2: 'a', 3: 's', 4: 's'},
'lead_sponsor_class': {0: 'Industry', 1: 'Other', 2: 'Other', 3: 'Other', 4: 'Other'}})
print (df)
id lead_sponsor lead_sponsor_class
0 2837692 a Industry
1 2837679 a Other
2 2837666 a Other
3 2837653 s Other
4 2837640 s Other
print (df.groupby(['lead_sponsor', 'lead_sponsor_class']).size())
lead_sponsor lead_sponsor_class
a Industry 1
Other 2
s Other 2
dtype: int64
print (df.groupby(['lead_sponsor', 'lead_sponsor_class']).size().sort_values(ascending=False).head(2))
lead_sponsor lead_sponsor_class
s Other 2
a Other 2
dtype: int64
print (df.groupby(['lead_sponsor', 'lead_sponsor_class']).size().nlargest(2))
lead_sponsor lead_sponsor_class
a Other 2
s Other 2
dtype: int64