Pandas: как использовать groupby и сортировку внутри групп


Вы можете использовать следующий синтаксис для группировки строк в DataFrame pandas, а затем сортировать значения внутри групп:

 df. sort_values ([' var1 ',' var2 '],ascending= False ). groupby (' var1 '). head ()

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: использование GroupBy и сортировки в группах в Pandas

Допустим, у нас есть следующий DataFrame pandas, который показывает продажи в двух разных магазинах:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['B', 'B', 'A', 'A', 'B', 'B', 'A', 'A'],
                   ' sales ': [12, 25, 8, 14, 10, 20, 30, 30]})

#view DataFrame
print (df)

  blind sales
0 B 12
1 B 25
2 to 8
3 to 14
4 B 10
5 B 20
6 to 30
7 to 30

Мы можем использовать следующий синтаксис для группировки строк по столбцу магазина и сортировки в порядке убывания на основе столбца продаж :

 #group by store and sort by sales values in descending order
df. sort_values ([' store ', ' sales '],ascending= False ). groupby (' store '). head ()

	blind sales
1 B 25
5 B 20
0 B 12
4 B 10
6 to 30
7 to 30
3 to 14
2 to 8

Обратите внимание, что мы также могли бы удалить аргумент возрастающий = False , чтобы отсортировать значения продаж в порядке возрастания:

 #group by store and sort by sales values in ascending order
df. sort_values ([' store ',' sales ']). groupby (' store '). head ()

	blind sales
2 to 8
3 to 14
6 to 30
7 to 30
4 B 10
0 B 12
5 B 20
1 B 25

Обратите внимание, что функция head() отображает только первые 5 значений в каждой группе.

Чтобы отобразить n верхних значений для каждой группы, просто используйте вместо этого head(n) .

Примечание . Полную документацию по операции GroupBy в pandas можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Панды: как посчитать совокупную сумму на группу
Панды: как посчитать уникальные значения по группам
Панды: как рассчитать корреляцию по группам

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *