In Data Science scheinen viele Pandas- Datenrahmen als Datenspeicher zu verwenden. Welche Eigenschaften von Pandas machen es zu einem überlegenen Datenspeicher im Vergleich zu regulären relationalen Datenbanken wie MySQL , die zum Speichern von Daten in vielen anderen Programmierbereichen verwendet werden?
Während Pandas einige nützliche Funktionen für die Datenexploration bietet, können Sie SQL nicht verwenden und verlieren Funktionen wie Abfrageoptimierung oder Zugriffsbeschränkung.
Antworten:
Ich denke, die Prämisse Ihrer Frage hat ein Problem. Pandas ist kein "Datenspeicher" wie ein RDBMS. Pandas ist eine Python-Bibliothek zum Bearbeiten von Daten, die in den Speicher passen. Nachteile:
quelle
Von den Pandas ( Hauptseite )
Während Pandas sicherlich über SQL oder über mehrere andere Datenspeichermethoden auf Daten zugreifen können, besteht ihr Hauptzweck darin, die Verwendung von Python für die Datenanalyse zu vereinfachen.
Zu diesem Zweck stehen pandas verschiedene Methoden zur Verfügung, die einige relationale Algebraoperationen ermöglichen , die mit SQL verglichen werden können.
Auch Pandas bietet einfachen Zugriff auf NumPy , das
quelle
Neben der akzeptierten Antwort:
Relationale Datenbanken haben eine große Anzahl von Bytes pro Zeile (Beispiel: diese Frage ), die für die Buchhaltung verwendet werden, wobei Nullen von Nicht-Nullen unterschieden werden, um Standards wie ACID sicherzustellen . Jedes Mal, wenn Sie eine Spalte lesen / schreiben, werden nicht nur die wenigen Bytes gelesen, die den Wert dieser Spalte darstellen, sondern auch auf diese Buchhaltungsbytes zugegriffen und möglicherweise aktualisiert.
Im Gegensatz dazu ähneln Pandas (auch R data.table) eher einem speicherinternen Spaltenspeicher. Eine Spalte ist nur ein Array von Werten, und Sie können schnelle numpy vektorisierte Operationen / Listenangst verwenden, die nur auf Werte zugreifen, die Sie wirklich benötigen. Nur das für Tabellen mit wenigen primitiven Spalten macht relationale Datenbanken für viele datenwissenschaftliche Anwendungsfälle um ein Vielfaches langsamer.
quelle
Pandas ist ein In-Memory-Datenspeicher-Tool. Auf diese Weise können Sie sehr schnell sehr schnell über große Datenmengen rechnen.
SQL speichert (normalerweise) dauerhaft Daten und ist eine Datenbank. Es ist auch möglich, eine speicherinterne SQL-Datenbank auszuführen, die möglicherweise schneller ist als die Verwendung von Pandas wie SQLite.
quelle
Mit SQL können Sie viele verschiedene Beziehungstransaktionen beibehalten und ausführen und haben sie immer für mehrere verschiedene Zwecke zur Verfügung. Im Wesentlichen eine Quelle der Wahrheit oder des Ortes, an den man gehen kann. Es ist sicher über Kopf. Einige Analysen können jedoch sehr kompliziert sein und erfordern eine erhebliche Menge satzbasierter Operationen, die selbst einen kleinen Datensatz sehr schnell in einen großen verwandeln können. Ich hatte Datenprozesse mit über 2000 Abfragen, die Terabyte in weniger als 5 Minuten verarbeiten und am Ende Milliarden von Datensätzen für ein Vorhersagemodell erzielen können, und Python und Numpy haben einen Bruchteil des Datensatzes in 10-facher Zeit als relationaler Datenspeicher und bewertet Servieren Sie es bis zu einer Präsentationsebene.
Ein zusätzlicher Punkt, wenn Sie dies in der Cloud tun, stellen Sie sicher, dass Sie eine dynamische Instanz haben, die ihren Speicher skalieren kann. Bei SQL geht es darum, über eine Disc zu verfügen und genügend Rechenleistung zu haben, um dies rechtzeitig zu erledigen.
Ich sehe viele Möglichkeiten, wie sie in Synergie arbeiten können. Viele Data-Science-Jobs sind das, wofür Pandas entwickelt wurde. Einige Data-Science-Jobs sind das, wofür RDBs entwickelt wurden. Verwenden Sie beide im Gleichgewicht.
Es geht um das richtige Werkzeug, um den richtigen Job zu machen.
quelle