Pandas: як групувати та агрегувати в кількох стовпцях
Часто вам може знадобитися згрупувати та об’єднати кілька стовпців pandas DataFrame.
На щастя, це легко зробити за допомогою функцій pandas .groupby() і .agg() .
Цей посібник пояснює кілька прикладів практичного використання цих функцій.
Приклад 1: згрупуйте за двома стовпцями та знайдіть середнє значення
Припустімо, що у нас є наступні pandas DataFrame:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
Наступний код показує, як згрупувати стовпці «команда» та «позиція» та знайти середні результати:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Результат говорить нам:
- Середня результативність для гравців на позиції G команди A становить 5,0 .
- Середня результативність для гравців на позиції F у команді B становить 6,0 .
- Середня результативність для гравців на позиції G команди B становить 7,5 .
І так далі.
Ми також можемо використати наступний код, щоб перейменувати стовпці отриманого DataFrame:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Приклад 2: групування за двома стовпцями та пошук кількох статистичних даних
Припустімо, що ми використовуємо той самий pandas DataFrame, що й у попередньому прикладі:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
У наступному коді показано, як знайти середню та максимальну кількість підбирань, згрупованих у стовпцях «команда» та «позиція».
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
Результат говорить нам:
- Середня кількість підбирань для гравців на позиції G команди А становить 11 .
- Максимальна кількість підбирань для гравців на позиції G команди A становить 11 .
- Середня кількість підбирань гравців на позиції F команди B становить 8 .
- Максимальна кількість підбирань для гравців на позиції F команди B становить 10 .
І так далі.
Додаткові ресурси
Як відфільтрувати Pandas DataFrame за кількома умовами
Як підрахувати відсутні значення в Pandas DataFrame
Як скласти кілька Pandas DataFrames