Как рассчитать средневзвешенное значение в Pandas


Вы можете использовать следующую функцию для расчета средневзвешенного значения в Pandas:

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

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: средневзвешенное значение в Pandas

В следующем коде показано, как использовать функцию средневзвешенного значения для расчета средневзвешенного значения для заданного набора данных, используя «цену» в качестве значений и «количество» в качестве весов:

import pandas as pd

#create DataFrame
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 A 8 1
1 A 5 3
2 A 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: Groupby и взвешенное среднее в Pandas

В следующем коде показано, как использовать функцию средневзвешенного значения для расчета средневзвешенного значения цены, сгруппированного по торговому представителю:

import pandas as pd

#create DataFrame
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

Мы можем видеть следующее:

  • Средневзвешенное значение «цены» для торгового представителя А составляет 5,833 .
  • Средневзвешенное значение «цены для торгового представителя B» составляет 11,818 .

Дополнительные ресурсы

Как сравнить два столбца в Pandas
Как рассчитать сумму столбцов в Pandas
Как рассчитать среднее значение столбцов в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.