Vorteile des Pandas-Datenrahmens für die reguläre relationale Datenbank


13

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.


5
pandas ist kein Datenspeicher. Schalten Sie Ihren Computer aus und Ihr Datenrahmen ist nicht vorhanden. Pandas ist zum Munging in Erinnerung. Das heißt, wenn es nicht in den Speicher passt, funktioniert es nicht. Aber es hat einen großen Bruder namens Spark, also ist das keine große Sache. Der große Bruder unterstützt tatsächlich die SQL- und Abfrageoptimierung. Siehe auch pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Antworten:


8

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:

  • Pandas speichert keine Daten. Es hat sogar eine (langsame) Funktion namens TO_SQL, die Ihren Pandas-Datenrahmen in einer RDBMS-Tabelle festhält.
  • Pandas verarbeiten nur Ergebnisse, die in den Speicher passen, der leicht zu füllen ist. Sie können entweder dask verwenden, um dies zu umgehen, oder Sie können die Daten im RDBMS (das alle möglichen Tricks wie temporären Speicherplatz verwendet) bearbeiten, um Daten zu verarbeiten, die den Arbeitsspeicher überschreiten.

2

Von den Pandas ( Hauptseite )

Python-Datenanalysebibliothek¶

pandas ist eine Open-Source-Bibliothek mit BSD-Lizenz, die leistungsstarke, benutzerfreundliche Datenstrukturen und Datenanalysetools für die Programmiersprache Python bietet.

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

ist das grundlegende Paket für wissenschaftliches Rechnen mit Python. Es enthält unter anderem:

  • ein leistungsfähiges N-dimensionales Array-Objekt
  • ausgefeilte (Rundfunk-) Funktionen
  • Tools zur Integration von C / C ++ - und Fortran-Code
  • nützliche Funktionen für lineare Algebra, Fourier-Transformation und Zufallszahlen

2

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.


2

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.


0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.