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 der numpy.ndarray". Nicht wirklich - die API-änderung, die Sie sich beziehen bedeutet nur, dass pandas.Series Unterklassen NDFrame anstatt direkt Unterklassen numpy.ndarray, aber die interne Speicherung verwendet NDFrame besteht noch aus numpy.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/...
Schreibe einen Kommentar