Панди по групах використовується для групування даних відповідно до категорій і застосування функції до категорій. Це також допомагає ефективно агрегувати дані. Pandas groupby() — це дуже потужна функція з великою кількістю варіацій. Це робить завдання поділу Dataframe за деякими критеріями дуже простим і ефективним.
Pandas dataframe.groupby()
панди dataframe.groupby() Функція використовується для поділу даних на групи на основі певних критеріїв. панди об'єкти можна розбивати по будь-якій їх осі. Абстрактне визначення групування полягає в тому, щоб забезпечити зіставлення міток із назвами груп.
Синтаксис: DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
Параметри:
- від: відображення, функція, str або iterable
- вісь: int, за замовчуванням 0
- рівень: Якщо вісь є багатоіндексною (ієрархічною), згрупуйте за певним рівнем або рівнями
- as_index : Для агрегованого виведення повертайте об’єкт із мітками групи як індекс. Релевантно лише для введення DataFrame. as_index=False — це фактично згрупований вивід у стилі SQL
- сортувати: Сортування групових ключів. Вимкніть цю функцію, щоб отримати кращу продуктивність. Зауважте, що це не впливає на порядок спостережень у кожній групі. groupby зберігає порядок рядків у кожній групі.
- групові ключі: Під час виклику apply додайте групові ключі до індексу, щоб ідентифікувати частини
- стиснути : Зменште розмірність типу, що повертається, якщо це можливо, інакше повертайте послідовний тип
Повернення: Об'єкт GroupBy
Використаний набір даних: Щоб отримати посилання на файл CSV, який використовується в коді, натисніть тут
aws червоне зміщення
Приклад 1: використання groupby() для групування даних на основі команди.
Python3
# importing pandas as pd> import> pandas as pd> # Creating the dataframe> df>=> pd.read_csv(>'nba.csv'>)> # Print the dataframe> print>(df.head())> |
>
>
Вихід:
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN 3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0>
Тепер застосуйте groupby() функція.
Python3
# applying groupby() function to> # group the data on team value.> gk>=> df.groupby(>'Team'>)> # Let's print the first entries> # in all the groups formed.> gk.first()> |
>
>
Вихід:
Name Number Position Age Height Weight College Salary Team Atlanta Hawks Kent Bazemore 24.0 SF 26.0 6-5 201.0 Old Dominion 2000000.0 Boston Celtics Avery Bradley 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 Brooklyn Nets Bojan Bogdanovic 44.0 SG 27.0 6-8 216.0 Oklahoma State 3425510.0 Charlotte Hornets Nicolas Batum 5.0 SG 27.0 6-8 200.0 Virginia Commonwealth 13125306.0 Chicago Bulls Cameron Bairstow 41.0 PF 25.0 6-9 250.0 New Mexico 845059.0 Cleveland Cavaliers Matthew Dellavedova 8.0 PG 25.0 6-4 198.0 Saint Mary's 1147276.0 Dallas Mavericks Justin Anderson 1.0 SG 22.0 6-6 228.0 Virginia 1449000.0 Denver Nuggets Darrell Arthur 0.0 PF 28.0 6-9 235.0 Kansas 2814000.0 Detroit Pistons Joel Anthony 50.0 C 33.0 6-9 245.0 UNLV 2500000.0 Golden State Warriors Leandro Barbosa 19.0 SG 33.0 6-3 194.0 North Carolina 2500000.0 Houston Rockets Trevor Ariza 1.0 SF 30.0 6-8 215.0 UCLA 8193030.0 Indiana Pacers Lavoy Allen 5.0 PF 27.0 6-9 255.0 Temple 4050000.0 Los Angeles Clippers Cole Aldrich 45.0 C 27.0 6-11 250.0 Kansas 1100602.0 Los Angeles Lakers Brandon Bass 2.0 PF 31.0 6-8 250.0 LSU 3000000.0 Memphis Grizzlies Jordan Adams 3.0 SG 21.0 6-5 209.0 UCLA 1404600.0 Miami Heat Chris Bosh 1.0 PF 32.0 6-11 235.0 Georgia Tech 22192730.0 Milwaukee Bucks Giannis Antetokounmpo 34.0 SF 21.0 6-11 222.0 Arizona 1953960.0>
Давайте надрукуємо значення, що міститься в одній із груп. Для цього використовуйте назву команди. Використовуємо функцію get_group() щоб знайти записи, що містяться в будь-якій із груп.
Python3
# Finding the values contained in the 'Boston Celtics' group> gk.get_group(>'Boston Celtics'>)> |
>
>
Вихід:
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN 3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0 5 Amir Johnson Boston Celtics 90.0 PF 29.0 6-9 240.0 NaN 12000000.0 6 Jordan Mickey Boston Celtics 55.0 PF 21.0 6-8 235.0 LSU 1170960.0 7 Kelly Olynyk Boston Celtics 41.0 C 25.0 7-0 238.0 Gonzaga 2165160.0 8 Terry Rozier Boston Celtics 12.0 PG 22.0 6-2 190.0 Louisville 1824360.0 9 Marcus Smart Boston Celtics 36.0 PG 22.0 6-4 220.0 Oklahoma State 3431040.0 10 Jared Sullinger Boston Celtics 7.0 C 24.0 6-9 260.0 Ohio State 2569260.0 11 Isaiah Thomas Boston Celtics 4.0 PG 27.0 5-9 185.0 Washington 6912869.0 12 Evan Turner Boston Celtics 11.0 SG 27.0 6-7 220.0 Ohio State 3425510.0 13 James Young Boston Celtics 13.0 SG 20.0 6-6 215.0 Kentucky 1749840.0 14 Tyler Zeller Boston Celtics 44.0 C 26.0 7-0 253.0 North Carolina 2616975.0>
приклад 2: використання groupby() для формування груп на основі кількох категорій (тобто використовуйте більше одного стовпця для виконання поділу).
Python3
# importing pandas as pd> import> pandas as pd> # Creating the dataframe> df>=> pd.read_csv(>'nba.csv'>)> # First grouping based on 'Team'> # Within each team we are grouping based on 'Position'> gkk>=> df.groupby([>'Team'>,>'Position'>])> # Print the first value in each group> gkk.first()> |
>
>
Вихід:
Name Number Age Height Weight College Salary Team Position Atlanta Hawks C Al Horford 15.0 30.0 6-10 245.0 Florida 12000000.0 PF Kris Humphries 43.0 31.0 6-9 235.0 Minnesota 1000000.0 PG Dennis Schroder 17.0 22.0 6-1 172.0 Wake Forest 1763400.0 SF Kent Bazemore 24.0 26.0 6-5 201.0 Old Dominion 2000000.0 SG Tim Hardaway Jr. 10.0 24.0 6-6 205.0 Michigan 1304520.0 ... ... ... ... ... ... ... ... Washington Wizards C Marcin Gortat 13.0 32.0 6-11 240.0 North Carolina State 11217391.0 PF Drew Gooden 90.0 34.0 6-10 250.0 Kansas 3300000.0 PG Ramon Sessions 7.0 30.0 6-3 190.0 Nevada 2170465.0 SF Jared Dudley 1.0 30.0 6-7 225.0 Boston College 4375000.0 SG Alan Anderson 6.0 33.0 6-6 220.0 Michigan State 4000000.0>