パンダ: where 条件で group by を使用する方法


pandas でWhere条件でgroup byを使用する最も簡単な方法は、 query()関数を使用することです。

 df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

この特定の例では、 position ごとにグループ化されたPointsの平均値を計算します。ここで、チームは一部のパンダ DataFrame で「A」に相当します。

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

例: Pandas で Where 条件で Group By を使用する方法

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [22, 14, 15, 10, 8, 29, 33, 18]})

#view DataFrame
print (df)

  team position points
0 AG 22
1 AG 14
2 AF15
3 AF 10
4 AF 8
5 BG 29
6 BG 33
7 BF 18

次のコードを使用して、チームが「A」に等しい場合の、 positionごとにグループ化された平均ポイント値を計算できます。

 #calculate mean value of points, grouped by position, where team == 'A'
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

        position points
0 F 11.0
1G 18.0

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

  • チーム A のポジション「F」のプレーヤーの平均ポイント値は11です。
  • チーム A の「G」ポジションの選手の平均ポイント値は18です。

query()関数で&演算子を使用して、複数の条件が満たされる行を検索することもできることに注意してください。

たとえば、次のコードは、 positionでグループ化された平均ポイント値を計算する方法を示しています。ここで、 teamは「A」 position は「G」に相当します。

 #calculate mean value of points by position where team is 'A' and position is 'G'
df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index ()

	position points
0G 18.0

この結果から、チーム A のポジション「G」の選手の平均ポイント値は18であることがわかります。

query()関数で 2 つの条件を指定したため、両方の条件を満たす行のみが使用されました。

追加リソース

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

Pandas で GroupBy 合計を実行する方法
Pandas で Groupby と Plot を使用する方法
Pandas で GroupBy を使用して一意の値をカウントする方法

コメントを追加する

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