Pandas で groupby 合計を実行する方法 (例あり)
次の基本構文を使用して、パンダのグループごとの値の合計を見つけることができます。
df. groupby ([' group1 ',' group2 '])[' sum_col ']. sum (). reset_index ()
次の例は、実際に次の pandas DataFrame でこの構文を使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], ' points ': [25, 17, 14, 9, 12, 9, 6, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df team position points rebounds 0 A G 25 11 1 A G 17 8 2 A F 14 10 3 A C 9 6 4 B G 12 6 5 B F 9 5 6 B F 6 9 7 B C 4 12
例 1: 列ごとにグループ化し、列を追加する
次のコードは、列ごとにグループ化し、列内の値を合計する方法を示しています。
#group by team and sum the points
df. groupby ([' team '])[' points ']. sum (). reset_index ()
team points
0 to 65
1 B 31
結果から次のことがわかります。
- チームAの選手は合計65得点を獲得した。
- チームBの選手は合計31得点を獲得した。
例 2: 複数の列でグループ化、複数の列を追加
次のコードは、複数の列をグループ化し、複数の列を合計する方法を示しています。
#group by team and position, sum points and rebounds
df. groupby ([' team ', ' position '])[' points ', ' rebounds ']. sum (). reset_index ()
team position points rebounds
0 A C 9 6
1 A F 14 10
2 A G 42 19
3 B C 4 12
4 B F 15 14
5 B G 12 6
結果から次のことがわかります。
- チームAのポジション「C」の選手は合計9得点、 6リバウンドを記録した。
- チームAのポジション「F」の選手は合計14得点、 10リバウンドを記録した。
- チームAの「G」ポジションの選手は合計42得点、 19リバウンドを記録した。
等々。
replace_index()関数は、グループ化された列がインデックスの一部になるのを防ぐことに注意してください。
たとえば、これを使用しない場合の結果は次のようになります。
#group by team and position, sum points and rebounds
df. groupby ([' team ', ' position '])[' points ', ' rebounds ']. sum ()
rebound points
team position
A C 9 6
F 14 10
G 42 19
B C 4 12
F 15 14
G 12 6
結果をどのように表示したいかに応じて、 reset_index()関数を使用するかどうかを選択できます。
追加リソース
次のチュートリアルでは、パンダで他の一般的なグループ化操作を実行する方法を説明します。
パンダの集団目撃数を数える方法
Pandas でグループごとの最大値を見つける方法
Pandas でグループごとに分位数を計算する方法