Gleitenden Durchschnittspreis mit pandas (oder numpy)
Verfasst: Dienstag 6. Juni 2023, 12:36
Moin,
ich möchte den gleitenden Durchschnittspreis (GLD) eines DataFrame berechnen, tue mich aber etwas schwer damit. Definiert ist der GLD:
Als Beispiel sei ein DataFrame mit A (Gewichtung) und B (Wert) gegeben:
Versucht habe ich schon:
Allerdings wird hier nur der einfache Mittelwert gebildet und auch nur von den Einzelwerten.
So bekomme ich den gewichteten Mittelwert, aber nur für den ganzen DataFrame.
Ich habe schon über pandas.DataFrame.apply() und .agg() sowie .expanding() gelesen, aber ich stehe auf dem Schlauch.
Das Ergebnis soll so aussehen:
Da Zeile 4 eine Entnahme (A: -2) darstellt, sollte dessen GLD keinen Eingang in die Berechnung finden, sondern der vorherige GLD genommen werden (wobei die Änderung der Menge durch Zeile 4 jedoch berücksichtigt wird).
Hat jemand eine Idee, wo ich weiterschauen sollte?
ich möchte den gleitenden Durchschnittspreis (GLD) eines DataFrame berechnen, tue mich aber etwas schwer damit. Definiert ist der GLD:
Code: Alles auswählen
(x_alt * y_alt + x_neu * y_neu) / (x_alt + x_neu)
Code: Alles auswählen
df = pd.DataFrame({'A': [3, 6, 4, 9, -2, 12], 'B': [12, 29, 27, 15, 34, 29]})
Code: Alles auswählen
>>> df['GM'] = df['B'].rolling(2).mean()
>>> print(df)
A B GM
0 3 12 NaN
1 6 29 20.5
2 4 27 28.0
3 9 15 21.0
4 -2 34 24.5
5 12 29 31.5
Code: Alles auswählen
>>> df['GWM'] = sum(df['B'] * df['A']) / sum(df['A'])
>>> print(df)
A B GM GWM
0 3 12 NaN 22.90625
1 6 29 20.5 22.90625
2 4 27 28.0 22.90625
3 9 15 21.0 22.90625
4 -2 34 24.5 22.90625
5 12 29 31.5 22.90625
Ich habe schon über pandas.DataFrame.apply() und .agg() sowie .expanding() gelesen, aber ich stehe auf dem Schlauch.
Das Ergebnis soll so aussehen:
Code: Alles auswählen
A B GLD
0 3 12 12.00
1 6 29 23.33
2 4 27 24.47
3 9 15 20.59
4 -2 34 20.59
5 12 29 23.74
Hat jemand eine Idee, wo ich weiterschauen sollte?