パンダ: ビン数で groupby を使用する方法


次の構文を使用して、pandas の別の変数によってグループ化された変数のボックスの数を計算できます。

 #define bins
groups = df. groupby ([' group_var ', pd. cut (df. value_var , bins)])

#display bin count by group variable
groups. size (). unstack ()

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas のビンの数で GroupBy を使用する

さまざまなチームのバスケットボール選手が獲得したポイントを示す次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                            'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [4, 7, 7, 11, 12, 15, 19, 19,
                             5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print (df)

   team points
0 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

次の構文を使用して、特定のビンにグループ化された各チームのポイントの頻度を計算できます。

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 15] (15, 20]
  team			
     A 3 3 2
     B 2 6 0

結果を解釈する方法は次のとおりです。

  • 合計で、チーム A の3 人の選手が 0 点から 10 点の間の得点を獲得しました。
  • 合計で、チーム A の3 人の選手が 10 ~ 15 点を獲得しました。
  • 合計で、チーム A の2 人の選手が 15 ~ 20 得点を獲得しました。

等々。

pd.cut()関数で必要なビンを指定できることに注意してください。

たとえば、次の 2 つのビンのみを定義できます。

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 20]
  team		
     At 3 5
     B 2 6

結果を解釈する方法は次のとおりです。

  • 合計で、チーム A の3 人の選手が 0 点から 10 点の間の得点を獲得しました。
  • 合計で、チーム A の5 人の選手が 10 ~ 20 点を獲得しました。
  • 合計で、チーム B の2 人の選手が 0 点から 10 点の間の得点を獲得しました。
  • 合計で、チーム B の6 人の選手が 10 ~ 20 点を獲得しました。

注 1 : GroupBy関数の完全なドキュメントはここで見つけることができます。

注 2 : Cut関数の完全なドキュメントはここで見つけることができます。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

Pandas: グループごとの累積合計を計算する方法
パンダ: グループごとに一意の値を数える方法
Pandas: グループごとにモードを計算する方法
パンダ: グループごとの相関を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です