パンダ: groupby を使用して条件付きでカウントする方法


次の基本構文を使用して、pandas DataFrame で条件付きの groupby と count を実行できます。

 df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')

この特定の構文は、 var1に基づいて DataFrame の行をグループ化し、 var2 が「val」と等しい行の数をカウントします。

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

例: Pandas の条件付き Groupby と Count

さまざまなバスケットボール選手に関する情報を含む次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team pos points
0 A Gu 18
1 A Fo 22
2 A Fo 19
3 A Fo 14
4 B Gu 14
5 B Gu 11
6 B Fo 20
7 B Fo 28

次のコードは、DataFrame をチーム変数でグループ化し、 pos変数が「Gu」に等しい行数をカウントする方法を示しています。

 #groupby team and count number of 'pos' equal to 'Gu'
df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 1
1 B 2

結果から次のことがわかります。

  • チーム A には、pos 列が「Gu」に等しい行が1つあります。
  • チーム B には、pos 列が「Gu」に等しい行が2 つあります。

同様の構文を使用して、数値条件を使用して groupby と count を実行できます。

たとえば、次のコードは、チーム変数ごとにグループ化し、ポイント変数が 15 より大きい行数をカウントする方法を示しています。

 #groupby team and count number of 'points' greater than 15
df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 3
1 B 2

結果から次のことがわかります。

  • チーム A には、ポイント列が 15 を超える行が3 つあります。
  • チーム B には、ポイント列が 15 を超えるラインが2 つあります

同様の構文を使用して、任意の特定の条件で groupby と count を実行できます。

追加リソース

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

Pandas GroupBy を使用して一意の値をカウントする方法
Pandas Groupby に関数を適用する方法
Pandas GroupBy から棒グラフを作成する方法

コメントを追加する

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