Como calcular uma média ponderada em pandas


Você pode usar a seguinte função para calcular uma média ponderada no Pandas:

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

Os exemplos a seguir mostram como usar essa sintaxe na prática.

Exemplo 1: Média ponderada entre pandas

O código a seguir demonstra como usar a função de média ponderada para calcular uma média ponderada para um determinado conjunto de dados, usando “preço” como valores e “quantidade” como peso:

 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

A média ponderada do “preço” é 9.706 .

Exemplo 2: Groupby e média ponderada no Pandas

O código a seguir mostra como utilizar a função de média ponderada para calcular a média ponderada dos preços, agrupados por vendedor:

 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

Podemos ver o seguinte:

  • A média ponderada do “preço” do vendedor A é 5.833 .
  • A média ponderada do “Preço do Representante Comercial B” é 11.818 .

Recursos adicionais

Como comparar duas colunas no Pandas
Como calcular a soma das colunas no Pandas
Como calcular a média das colunas no Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *