numpy.ndarray vs pandas.DataFrame
Ich brauche, um eine strategische Entscheidung über die Wahl der basis für die Daten-Struktur-holding-statistische Daten-frames in meinem Programm.
Ich speichern Hunderte oder Tausende von Datensätzen in einer großen Tabelle. Jedes Feld würde von einem anderen Typ sein, einschließlich kurze strings. Ich würde führen Sie die multiple Regressionsanalyse und Manipulationen auf den Daten, die getan werden müssen, schnell, in Echtzeit. Ich brauche auch etwas zu benutzen, das ist relativ beliebt und gut unterstützt.
Weiß ich über die folgenden Kandidaten:
Liste der array.array
Dass ist die einfachste Sache zu tun. Leider ist es nicht support-strings. Und ich numpy sowieso für den statistischen Teil, so ist diese eine Frage.
numpy.ndarray
Den ndarray
hat die Fähigkeit zu halten-arrays verschiedene Typen, in jeder Spalte (z.B. np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
). Es scheint ein natürlicher Sieger, aber...
pandas.DataFrame
Diese gebaut statistische Zwecke im Auge, aber ist es auch effizient genug ist?
Ich gelesen, dass die pandas.DataFrame
ist nicht mehr auf der numpy.ndarray
(obwohl es teilt die gleiche Schnittstelle). Kann jemand etwas Licht auf Sie? Oder vielleicht gibt es eine noch bessere Datenstruktur, die es gibt?
- "Ich habe gelesen, dass die
pandas.DataFrame
ist nicht mehr auf der Grundlage dernumpy.ndarray
". Nicht wirklich - die API-änderung, die Sie sich beziehen bedeutet nur, dasspandas.Series
UnterklassenNDFrame
anstatt direkt Unterklassennumpy.ndarray
, aber die interne Speicherung verwendetNDFrame
besteht noch ausnumpy.ndarrays
. - führen Sie einige tests. Mit einigen test-Daten, und eine operation, die Sie wahrscheinlich tun das die meisten, bauen Sie einen Weg, es zu tun in beiden numpy.ndarray und pandas. Zeit, die Ergebnisse zu bestimmen, welche Methode schneller ist. Sie werden bemerken, während der tests die man verfügt über die erforderliche Funktionalität, die Sie benötigen, sowie eine einfache Umsetzung.
- die Durchführung von tests würde bedeuten, dass ich brauchen würde, um zwei Versionen von meiner Anwendung, und schreiben, mehr tests, als ich halten meine Anwendung wirklich braucht. Ich wählte Python, weil ich erwarte, um zu beenden diese Aufgabe in wenigen Werktagen max. Ich habe diese Frage gestellt, um eine subjektive Meinung von denen von Euch, die haben einige Erfahrung in beiden frameworks (oder vielleicht mehr).
- Sie müssen nicht unbedingt zwei vollständige Versionen des Programms. Nur extrahieren Sie eine einzelne Funktion zum testen. Die Idee hinter dem Gebäude der tests ist zu sehen, nicht nur die schnellere, sondern auch zu lernen, jede Bibliothek ein bisschen mehr. Sie entdecken sollten, die-Bibliothek gibt Ihnen die einfachste Umsetzung dessen, was Sie zu tun versuchen. Dies mag auf den ersten langweilig, aber du wirst das wissen erlangen, so dass die nächste mal, wenn Sie stoßen ein ähnliches problem, werden Sie sofort wissen, welche option zu nehmen. Mit einer schnelleren Laufzeit ist ein bonus, wenn in Verbindung mit der Umsetzung Zeit. Aber es ist Ihr Anruf auf dieser.
- Verwandte Frage: stackoverflow.com/questions/12052067/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
pandas.DataFrame
ist genial, und interagiert sehr gut mit viel von numpy. Viel von derDataFrame
ist geschrieben in Cython und ist ziemlich optimiert. Ich vermute, der Benutzerfreundlichkeit und der Reichtum der Pandas-API wird stark überwiegen alle möglichen Vorteile, die Sie erhalten konnten, indem Sie Ihre eigenen Rollen Schnittstellen rund um numpy.