Come calcolare una media ponderata nei panda


È possibile utilizzare la seguente funzione per calcolare una media ponderata in Panda:

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

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: media ponderata tra i panda

Il codice seguente mostra come utilizzare la funzione di media ponderata per calcolare una media ponderata per un determinato set di dati, utilizzando “prezzo” come valori e “importo” come 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

La media ponderata del “prezzo” risulta essere 9.706 .

Esempio 2: Groupby e media ponderata su Pandas

Il codice seguente mostra come utilizzare la funzione di media ponderata per calcolare la media ponderata dei prezzi, raggruppati per venditore:

 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

Possiamo vedere quanto segue:

  • La media ponderata del “prezzo” per il venditore A è 5.833 .
  • La media ponderata del “Prezzo del rappresentante di vendita B” è 11.818 .

Risorse addizionali

Come confrontare due colonne in Pandas
Come calcolare la somma delle colonne in Pandas
Come calcolare la media delle colonne in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *