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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert