パンダで加重平均を計算する方法


次の関数を使用して、Pandas で加重平均を計算できます。

 def w_avg(df, values, weights):
    d = df[values]
    w = df[weights]
    return (d*w). sum () / w. sum ()

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

例 1: パンダ間の加重平均

次のコードは、加重平均関数を使用して、値として「価格」、重みとして「金額」を使用して、特定のデータセットの加重平均を計算する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' sales_rep ': ['A', 'A', 'A', 'B', 'B', 'B'],
                   ' price ': [8, 5, 6, 7, 12, 14],
                   ' amount ': [1, 3, 2, 2, 5, 4]})

#view DataFrame
df

	sales_rep price amount
0 to 8 1
1 to 5 3
2 to 6 2
3 B 7 2
4 B 12 5
5 B 14 4

#find weighted average of price
w_avg(df, ' price ', ' amount ')

9.705882352941176

「価格」の加重平均は9,706となります。

例 2: Pandas での Groupby と加重平均

次のコードは、加重平均関数を使用して、販売員ごとにグループ化された価格の加重平均を計算する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' sales_rep ': ['A', 'A', 'A', 'B', 'B', 'B'],
                   ' price ': [8, 5, 6, 7, 12, 14],
                   ' amount ': [1, 3, 2, 2, 5, 4]})

#find weighted average of price, grouped by sales rep
df. groupby (' sales_rep '). apply (w_avg, ' price ', ' amount ')

sales_rep
A 5.833333
B 11.818182
dtype:float64

次のことがわかります。

  • 営業担当者 A の「価格」の加重平均は5,833です。
  • 「営業担当者Bの価格」の加重平均は11,818です。

追加リソース

Pandas で 2 つの列を比較する方法
Pandasで列の合計を計算する方法
Pandas で列の平均を計算する方法

コメントを追加する

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