Pandas: як використовувати groupby та сортувати в групах


Ви можете використовувати такий синтаксис, щоб згрупувати рядки в pandas DataFrame, а потім відсортувати значення в групах:

 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

Зауважте, що ми також можемо видалити аргумент ascending=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:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *