Pandas: groupby オブジェクトのランキングを計算する方法


次の構文を使用して、パンダの GroupBy オブジェクト内の値の順序を計算できます。

 df[' rank '] = df. groupby ([' group_var '])[' value_var ']. rank ()

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

例: GroupBy オブジェクトでのランキングの計算

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
                   ' points ': [10, 10, 12, 15, 19, 23, 20, 20, 26]})

#view DataFrame
print (df)

  team points
0 to 10
1 to 10
2 to 12
3 to 15
4 B 19
5 B 23
6 C 20
7 C 20
8 C 26

次の構文を使用して、各チームのポイント値のランキングを計算できます。

 #add ranking column to data frame
df[' points_rank '] = df. groupby ([' team '])[' points ']. rank ()

#view updated DataFrame
print (df)

  team points points_rank
0 to 10 1.5
1 to 10 1.5
2 to 12 3.0
3 to 15 4.0
4 B 19 1.0
5 B 23 2.0
6 C 20 1.5
7 C 20 1.5
8 C 26 3.0

デフォルトでは、 Rank()関数は昇順でランク値を割り当て、同点の場合は平均ランクを使用します。

ただし、ボトムアップメソッドと引数を使用して、別の方法で値を並べ替えることもできます。

 #add ranking column to data frame
df[' points_rank '] = df. groupby ([' team '])[' points ']. rank (' dense ', ascending= False )

#view updated DataFrame
print (df)

  team points points_rank
0 to 10 3.0
1 to 10 3.0
2 to 12 2.0
3 to 15 1.0
4 B 19 2.0
5 B 23 1.0
6 C 20 2.0
7 C 20 2.0
8 C 26 1.0

このメソッドは、各グループの最大値に値 1 を割り当てます。

Rank()関数で使用できるランキング方法の完全なリストは、ここで見つけることができます。

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

追加リソース

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

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

コメントを追加する

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