Pandas vektet gjennomsnitt

Pandas vektet gjennomsnitt

Det vektede gjennomsnittet er gjennomsnittet av dataene som identifiserer de spesifikke tallene som er viktigere enn de andre tallene i DataFrame. Vi vil implementere alle mulige måter det pandas vektede gjennomsnittet kan beregnes ved hjelp av flere eksempler på.

Formel

(Verdier_column*Weights_column).Sum ()/Weights_column.sum()

Her er Values_column den numeriske kolonnen i Pandas DataFrame som lagrer verdiene, og Weights_column er den numeriske kolonnen som vil lagre vekten til hver verdi.

Metode 1: Returvektet gjennomsnitt

La oss bruke den tilpassede funksjonen som beregner det vektede gjennomsnittet av Pandas DataFrame. Vi vil bruke summen () -funksjonen for å beregne summen i følgende beregning:

Sum (DataFrame_Object [Weight_Data]*DataFrame_Object [Value_Data])/DataFrame_Object [vekt_data].sum()

Her er Weight_Data kolonnen i DataFrame som holder vekter for verdier i verdien_data -kolonnen.

Eksempel

I dette eksemplet har vi en DataFrame som heter 'beregninger' med 2 kolonner med heltallstype. Nå vil vi lage en tilpasset funksjon, 'vekted_avg_calculation', for å beregne det vektede gjennomsnittet og kalle funksjonen med disse to kolonnene ved å passere dem som argumenter.

Importer pandaer
# Lag DataFrame med 2 kolonner og 5 rader
beregninger = pandaer.Dataramme.fra_dict ('Count': [7,8,9,0,4],
'Mengde': [2,3,4,5,2]
)
# Vis DataFrame - beregninger
trykk (beregninger)
# Tilpasset funksjon som beregner det vektede gjennomsnittet
def vekted_avg_calculation (beregninger, verdi_data, vekt_data):
Retursum (beregninger [vekt_data] * beregninger [value_data])/beregninger [vekt_data].sum()
skrive ut()
# Ring funksjonen ved å passere DataFrame, 'kvantitet' som verdi_data og 'telle' som vekt_data
print (vekted_avg_calculation (beregninger, 'kvantitet', 'count')))

Produksjon

telle mengde
0 7 2
1 8 3
2 9 4
3 0 5
4 4 2
2.9285714285714284

Forklaring

Så den tilpassede funksjonen er:

Det vil returnere det vektede gjennomsnittet.

Så det vektede gjennomsnittet av ovennevnte DataFrame er 2.92.

Metode 2: Returvektet gjennomsnitt i grupper

Nå vil vi bruke GroupBy () -funksjonen til å gruppere radene og returnere det vektede gjennomsnittet i hver gruppe. Apply () -metoden brukes sammen med GroupBy () som tar det vektede gjennomsnittet og kolonnene som parametere.

DataFrame_Object.Groupby ('Grouping_column').Bruk (vekted_avg_calculation, 'value_data', 'weight_data')

Her ble rader gruppert basert på verdier i 'Grouping_column'. Vektet_avg_calculation er en tilpasset funksjon som beregner det vektede gjennomsnittet. Vekt_data er kolonnen i DataFrame som holder vekter for verdier i verdien_data -kolonnen.

Eksempel

I dette eksemplet har vi en dataaframe som heter 'beregninger' med 3 kolonner. Nå vil vi lage en tilpasset funksjon, 'vektet_avg_calculation', for å beregne det vektede gjennomsnittet og kalle funksjonen med de to kolonnene ved å passere dem som argumenter. Vi vil gruppere radene basert på kolonnen 'element' og returnere det vektede gjennomsnittet i hver gruppe.

Importer pandaer
# Lag DataFrame med 3 kolonner og 5 rader
beregninger = pandaer.Dataramme.fra_dict ('Count': [12,34,56,10,15],
'Mengde': [100.200.345.670,50],
'Vare': ['Plast', 'Iron', 'Iron', 'Steel', 'Plastic']
)
# Vis DataFrame - beregninger
trykk (beregninger)
# Tilpasset funksjon som beregner det vektede gjennomsnittet
def vekted_avg_calculation (beregninger, verdi_data, vekt_data):
Retursum (beregninger [vekt_data] * beregninger [value_data])/beregninger [vekt_data].sum()
skrive ut()
trykk (beregninger.Groupby ('vare').Bruk (vektet_avg_calculation, 'kvantitet', 'telling'))

Produksjon

telle mengde vare
0 12 100 plast
1 34 200 jern
2 56 345 jern
3 10 670 stål
4 15 50 plast
punkt
Jern 290.222222
Plast 72.222222
stål 670.000000
dtype: float64

Forklaring

Så den tilpassede funksjonen er:

Det vil returnere det vektede gjennomsnittet.

Det er tre grupper i beregningene DataFrame.

  1. Det vektede gjennomsnittet for "jern" -gruppen er 290.22
  2. Det vektede gjennomsnittet for "plast" -gruppen er 72.22
  3. Det vektede gjennomsnittet for "stål" -gruppen er 670.00

Metode 3: Returvektet gjennomsnitt ved hjelp av Numpy

Numpy Module støtter gjennomsnittlig () -funksjonen der vi kan gi verdiene og vektene til den og få det vektede gjennomsnittet av Pandas DataFrame.

  1. I den første parameteren må vi passere verdikolonnen.
  2. I den andre parameteren vil vi tilordne kolonnen 'Vektdata' til vekter.

numpy.Gjennomsnitt (DataFrame_Object ['Value_Data'], Vekter = DataFrame_Object ['Weight_Data'])

Eksempel

I dette eksemplet har vi en dataaframe som heter 'beregninger' med 2 kolonner. Vi vil direkte bruke Numpy.gjennomsnitt () for å beregne det vektede gjennomsnittet.

Importer pandaer
Importer numpy
# Lag DataFrame med 2 kolonner og 5 rader
beregninger = pandaer.Dataramme.fra_dict ('Count': [12,34,56,10,15],
'Mengde': [100.200.345.670,50]
)
# Vis DataFrame - beregninger
trykk (beregninger)
skrive ut()
trykk (Numpy.Gjennomsnitt (beregninger ['kvantitet'], vekter = beregninger ['telling']))

Produksjon:

telle mengde
0 12 100
1 34 200
2 56 345
3 10 670
4 15 50
273.7795275590551
dtype: float64

Forklaring

Her vil kvantitetskolonnen være verdien, og tellingen vil være vektene.

Det vektede gjennomsnittet er 273.77.

Konklusjon

Pandas vektede gjennomsnittet er en verdifull og teknisk funksjon. Vi har gjort den tilpassede funksjonen til det pandas vektede gjennomsnittet og det numpy pandas vektede gjennomsnittet. Gjennomsnittet er noe vi trenger å beregne i nesten alt, til og med budsjettene til små dagligvarer. Når du snakker om millionene av data, er den vektede gjennomsnittlige Pandas -funksjonen en godbit for alle brukerne som jobber med de spesifikke dataene for datagjennomsnitt i sine felt.