Hoe een gewogen gemiddelde in panda's te berekenen


U kunt de volgende functie gebruiken om een gewogen gemiddelde in Panda’s te berekenen:

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

De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld 1: Gewogen gemiddelde onder panda’s

De volgende code laat zien hoe u de functie gewogen gemiddelde kunt gebruiken om een gewogen gemiddelde voor een bepaalde gegevensset te berekenen, waarbij u ‚prijs‘ als waarden en ‚bedrag‘ als gewicht gebruikt:

 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

Het gewogen gemiddelde van “prijs” blijkt 9.706 te zijn.

Voorbeeld 2: Groupby en gewogen gemiddelde bij Panda’s

De volgende code laat zien hoe u de functie gewogen gemiddelde kunt gebruiken om het gewogen gemiddelde van prijzen te berekenen, gegroepeerd op verkoper:

 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

We kunnen het volgende zien:

  • Het gewogen gemiddelde van de “prijs” voor verkoper A is 5.833 .
  • Het gewogen gemiddelde van de “Prijs van verkoopvertegenwoordiger B” is 11.818 .

Aanvullende bronnen

Hoe twee kolommen in Panda’s te vergelijken
Hoe de som van kolommen in Panda’s te berekenen
Hoe het gemiddelde van kolommen in Panda’s te berekenen

Einen Kommentar hinzufügen

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