Pandas: Kumulative Rückkehrfunktion

8

Ich habe einen Datenrahmen wie den folgenden:

%Vor%

Wie berechnet man am besten eine kumulative Rückgabe für alle Spalten in der letzten Zeile?

Folgendes ist das beabsichtigte Ergebnis:

%Vor%

Wenn die kumulative Rendite wie folgt berechnet wird:

%Vor%

Was ist der beste Weg, dies in Pandas durchzuführen?

    
Kelaref 25.11.2016, 19:23
quelle

5 Antworten

8

Dafür gibt es eine pandas cumprod() Methode. Dies funktioniert für jede Spalte.

%Vor%

Dies wäre etwa 2 mal schneller als andere Lösungen in großen Datenmengen:

%Vor%

Ich würde vorschlagen, nie apply zu verwenden, wenn Sie eine integrierte Methode finden können, da apply eine Schleife über den Datenrahmen macht, wodurch es langsam wird. Bult-in-Methode sind sehr effizient und normalerweise gibt es keine Möglichkeit, schneller als sie mit anwenden.

    
Steven G 25.11.2016, 20:06
quelle
4

Eine andere Lösung:

%Vor%

Dies fügt der Spalte df['Return'] 1 hinzu, multipliziert alle Zeilen zusammen und subtrahiert dann eins vom Ergebnis. Dies führt zu einem einfachen Gleitkommawert. Das Ergebnis wird dann auf den Index "Kumulativ" gesetzt. Da dieser Index noch nicht existiert, wird er bis zum Ende angehängt des DataFrames :

%Vor%

Wenn Sie dies auf mehrere Spalten anwenden möchten:

%Vor%

Dies würde Folgendes ausgeben (Ich habe eine zweite Spalte namens "Return2" erstellt, die eine Kopie von "Return" ist):

%Vor%     
TheF1rstPancake 25.11.2016 19:42
quelle
2

Mit pandas können Sie die Methode prod() verwenden:

%Vor%

Oder wie @Randy C kommentierte, kann dies weiter vereinfacht werden zu:

%Vor%     
Psidom 25.11.2016 19:33
quelle
1

Eine Option besteht darin, einfach reduce zu verwenden, obwohl andere möglicherweise schneller vektorisierte Methoden entwickeln könnten:

%Vor%

Beachten Sie, dass reduce in Python 3 Teil der Bibliothek functools ist, obwohl es für Python 2 integriert ist.

    
Randy C 25.11.2016 19:29
quelle
1

Hier ist meins:

%Vor%     
AlexG 25.11.2016 19:37
quelle

Tags und Links