パンダ: nlargest() で groupby を使用する方法


次の構文を使用して、pandas DataFrame のグループごとに最大 n 個の値を表示できます。

 #display two largest values by group
df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )

また、次の構文を使用して、pandas DataFrame 内のグループごとの最大 n 個の値に対して特定の操作 (合計の計算など) を実行できます。

 #find sum of two largest values by group
df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})

#view DataFrame
print (df)

  team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22

例 1: グループごとに最大 N 個の値を表示する

次の構文を使用して、チームごとにグループ化された 2 つの最大ポイント値を表示できます。

 #display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )

team   
At 2 34
      1 29
B 7 36
      8 34
Name: points, dtype: int64

結果には、各チームの 2 つの最大ポイント値が、元のデータフレーム内のインデックス位置とともに表示されます。

例 2: グループごとに最大 N 個の値に対して演算を実行する

次の構文を使用して、チームごとにグループ化された 2 つの最大ポイント値の合計を計算できます。

 #calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())

team
At 63
B70
Name: points, dtype: int64

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

  • チーム A の最大 2 つのポイント値の合計は63です。
  • チーム B の最大 2 つのポイント値の合計は70です。

同様の構文を使用して、チームごとにグループ化された 2 つの最大ポイント値の平均を計算できます。

 #calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())

team
At 31.5
B 35.0
Name: points, dtype: float64

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

  • チーム A の最高 2 つのポイント値の平均は31.5です。
  • チーム B の最高 2 つのポイント値の平均は35.0です。

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

追加リソース

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

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

コメントを追加する

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