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