Im gerade erst in Pandas, zu tun, was ich tun würde, in Excel einfach nur mit einem großen Datensatz zu tun. Ich habe eine Auswahl von Futures-Preisdaten, die ich in Pandas eingegeben habe: das gibt mir ein DataFrame. Die Daten sind in der Form unten: Nun, was Im im Wesentlichen versucht, ist eine Bollinger-Band in Pandas berechnen. Wenn ich in Excel war, würde ich den ganzen Block von High, Low, Open und Close Spalten für etwa 20 Zeilen auswählen und die Standardabweichung berechnen. Ich sehe Pandas hat die rollingstd Funktion, die die rollende Standardabweichung berechnen kann, aber gerade auf einer Spalte. Wie bekomme ich Python Pandas zu berechnen eine rollende Standardabweichung auf die High, Low, Open und Close Spalte für etwa 20 Perioden Was ich versuche zu tun ist, berechnen die Standard-Devaition auf alle ausgewählten Werte über die 4 Spalten, nicht nur jede einzelne Spalte. In Excel konnte ich einfach STDEV (A1: D5) verwenden, um die Standardabweichung aller Zahlen in diesem ausgewählten Block zu finden. Was ich versuche, herauszufinden, ist, wie man pandaspython Blick auf all die openhighlowlowclose Werte gehen 20 Perioden und sagen Sie mir die Standardabweichung, nicht nur für die einzelnen Spalten. Ndash user2999716 Nov 16 13 um 17: 22Which ist die am meisten empfohlene phythonische Art und Weise der Verarbeitung von live eingehenden Daten mit Pandas Alle paar Sekunden Im erhalten einen Datenpunkt im folgenden Format: Ich möchte es an eine bestehende DataFrame anfügen und dann einige Analyse auf es. Das Problem ist, nur das Hinzufügen von Zeilen mit DataFrame. append kann zu Leistungsproblemen mit all dem Kopieren führen. Dinge, die ich versucht habe: Einige Leute schlugen vor, ein großes DataFrame vorzuverteilen und es zu aktualisieren, während Daten hereinkommen: Die andere Alternative ist das Erstellen einer Liste von Dicts. Einfach die ankommenden Daten an eine Liste anhängen und in kleinere DataFrames schneiden, um die Arbeit zu erledigen. Oder so ähnlich, vielleicht die Verarbeitung der Eingabe ein wenig mehr. Ich würde HDF5pytables wie folgt verwenden: Halten Sie die Daten als eine Python-Liste so lange wie möglich. Fügen Sie Ihre Ergebnisse zu dieser Liste hinzu. Wenn es groß wird: Push-to-HDF5 Store mit Pandas io (und eine anhängende Tabelle). Löschen Sie die Liste. Wiederholen. In der Tat verwendet die Funktion, die ich definiere, eine Liste für jede Taste, so dass Sie mehrere DataFrames zum HDF5 Store in demselben Prozess speichern können. Wir definieren eine Funktion, die Sie mit jeder Zeile aufrufen d: Anmerkung: Wir verwenden die Anweisung, um den Speicher automatisch nach jedem Schreiben zu schließen. Es kann schneller sein, um es offen zu halten, aber wenn so seine empfohlene, dass Sie regelmäßig spülen (schließende Spülungen). Beachten Sie auch, dass es besser lesbar sein kann, eine Collections deque als eine Liste verwendet zu haben, aber die Leistung einer Liste wird hier etwas besser sein. Um dies zu nutzen, rufen Sie unter: Hinweis: df ist der gespeicherte Schlüssel, der im PY-Tabellenspeicher verwendet wird. Sobald der Job fertig ist, stellen Sie sicher, dass Sie den verbleibenden Cache speichern und löschen: Nun ist Ihr komplettes DataFrame verfügbar über: Einige Kommentare: 5000 können angepasst werden, versuchen Sie mit einigen kleineren Zahlen, um Ihren Bedürfnissen anzupassen. Liste append ist O (1). DataFrame-Append ist O (len (df)). Bis du machst Statistiken oder Daten-Munging Sie nicht brauchen Pandas, verwenden, was am schnellsten. Dieser Code funktioniert mit mehreren Schlüsseln (Datenpunkte) kommen. Dies ist sehr wenig Code, und wohnten in Vanille-Python-Liste und dann Pandas Dataframe. Darüber hinaus, um die up to date liest können Sie eine get-Methode, die speichert und löscht vor dem Lesen zu definieren. Auf diese Weise würden Sie die meisten up to date Daten erhalten: Jetzt, wenn Sie Zugriff mit: youll erhalten die neuesten df zur Verfügung. Eine weitere Option ist etwas mehr beteiligt: eine benutzerdefinierte Tabelle in vanilla pytables definieren, siehe das Tutorial. Hinweis: Sie müssen die Feldnamen kennen, um den Spaltenbeschreiber zu erstellen. Vielen Dank. Aber mit dieser Methode können Sie nicht verwenden Pandas auf die neuesten Daten der letzten paar Sekunden. Let39s sagen, ich füge Daten heute um 15:23:00, 15:23:01, 15:23:02, 15:23:04. Dann, wenn ich auf df392015-12-15 15: 23: 0139, 392015-12-15 15: 23: 0339 zugreifen möchte. Ich kann nicht. Dann bedeutet es, dass ich meinen eigenen Code schreiben muss, um Zeilen nach Zeit im Cache zu filtern. Das heißt, wir müssen das Rad neu erfinden ndash Basj Dez 15 15 um 16:06
No comments:
Post a Comment