So berechnen sie einen gewichteten durchschnitt in pandas
Mit der folgenden Funktion können Sie einen gewichteten Durchschnitt in Pandas berechnen:
def w_avg(df, values, weights): d = df[values] w = df[weights] return (d*w). sum () / w. sum ()
Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis anwenden können.
Beispiel 1: Gewichteter Durchschnitt unter Pandas
Der folgende Code zeigt, wie Sie mit der Funktion „Gewichteter Durchschnitt“ einen gewichteten Durchschnitt für einen bestimmten Datensatz berechnen, wobei „Preis“ als Werte und „Betrag“ als Gewicht verwendet werden:
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
Der gewichtete Durchschnitt des „Preises“ beträgt 9.706 .
Beispiel 2: Groupby und gewichteter Durchschnitt bei Pandas
Der folgende Code zeigt, wie Sie mit der Funktion „Gewichteter Durchschnitt“ den gewichteten Durchschnitt der Preise, gruppiert nach Verkäufer, berechnen:
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
Wir können Folgendes sehen:
- Der gewichtete Durchschnitt des „Preises“ für Verkäufer A beträgt 5.833 .
- Der gewichtete Durchschnitt des „Preises für Vertriebsmitarbeiter B“ beträgt 11.818 .
Zusätzliche Ressourcen
So vergleichen Sie zwei Spalten in Pandas
So berechnen Sie die Summe der Spalten in Pandas
So berechnen Sie den Durchschnitt der Spalten in Pandas