„Large Data“-Workflows mit Pandas

| | | | | | | | |

Ich habe viele Monate lang versucht, eine Antwort auf diese Frage zu finden, während ich Pandas lernte. Ich verwende SAS für meine tägliche Arbeit und es ist großartig für seinen Out-of-Core-Support. SAS ist jedoch aus zahlreichen anderen Gründen als Software schrecklich.

Eines Tages Ich hoffe, meine Verwendung von SAS durch Python und Pandas ersetzen zu können, aber mir fehlt derzeit ein Out-of-Core-Workflow für große Datensätze. Ich spreche nicht von „Big Data“, die ein verteiltes Netzwerk erfordern, sondern von Dateien, die zu groß dafür sind passen in den Speicher, aber klein genug, um auf eine Festplatte zu passen.

Mein erster Gedanke ist, HDFStore zu verwenden, um große Datensätze auf der Festplatte zu speichern und nur die Teile, die ich brauche, in Datenrahmen zu ziehen zur Analyse. Andere haben MongoDB als einfacher zu verwendende Alternative erwähnt. Meine Frage lautet:

Was sind einige Best-Practice-Workflows, um Folgendes zu erreichen:

  1. Laden von Flatfiles in eine permanente Datenbankstruktur auf der Festplatte
  2. Abfragen dieser Datenbank zum Abrufen von Daten zum Einspeisen in eine Pandas-Datenstruktur
  3. Aktualisieren der Datenbank nach dem Manipulieren von Teilen in Pandas

Beispiele aus der Praxis wären sehr willkommen , besonders von jedem, der Pandas für "große Datenmengen" verwendet.

Bearbeiten -- ein Beispiel dafür, wie dies funktionieren soll:

  1. Iterative import a large flat- Datei und speichern Sie sie in einer permanenten Datenbankstruktur auf der Festplatte. Diese Dateien sind normalerweise zu groß, um in den Speicher zu passen.
  2. Um Pandas zu verwenden, möchte ich Teilmengen dieser Daten (normalerweise nur ein paar Spalten auf einmal) lesen, die in den Speicher passen.
  3. Ich würde neue Spalten erstellen, indem ich verschiedene Operationen an den ausgewählten Spalten ausführe.
  4. Ich müsste diese neuen Spalten dann in die Datenbankstruktur einfügen.

Ich versuche, einen Best-Practice-Weg zu finden, um diese Schritte durchzuführen. Beim Lesen von Links über Pandas und Pytables scheint das Anhängen einer neuen Spalte ein Problem zu sein.

Bearbeiten -- Spezielle Antworten auf Jeffs Fragen:

  1. Ich baue Verbraucher Kreditrisikomodelle. Zu den Datenarten gehören Telefon-, SSN- und Adressmerkmale, Immobilienwerte, abfällige Informationen wie Vorstrafen, Insolvenzen usw. Die Datensätze, die ich täglich verwende, haben im Durchschnitt fast 1.000 bis 2.000 Felder gemischter Datentypen: kontinuierliche, nominale und ordinale Variablen sowohl numerischer als auch Zeichendaten. Ich hänge selten Zeilen an, aber ich führe viele Operationen aus, die neue Spalten erstellen.
  2. Typische Operationen beinhalten das Kombinieren mehrerer Spalten mit bedingter Logik zu einer neuen Verbindung Beispiel: if var1 > 2 then newvar = "A" elif var2 = 4 then newvar = "B" Das Ergebnis dieser Operationen ist eine neue Spalte für jeden Datensatz in meinem Datensatz.
  3. Schließlich möchte ich diese neuen Spalten in die Datenstruktur auf der Festplatte einfügen d Wiederholen Sie Schritt 2, untersuchen Sie die Daten mit Kreuztabellen und beschreibenden Statistiken und versuchen Sie, interessante, intuitive Beziehungen zum Modellieren zu finden.
  4. Eine typische Projektdatei ist normalerweise etwa 1 GB groß. Dateien sind so organisiert, dass eine Zeile aus einem Datensatz mit Verbraucherdaten besteht. Jede Zeile hat die gleiche Anzahl von Spalten für jeden Datensatz. Dies wird immer der Fall sein.
  5. Es kommt ziemlich selten vor, dass ich beim Erstellen einer neuen Spalte Untergruppen nach Zeilen mache. Es kommt jedoch ziemlich häufig vor, dass ich Zeilen unterteile, wenn ich Berichte erstelle oder Beschreibungen erstelle Statistiken. Beispielsweise möchte ich vielleicht eine einfache Häufigkeit für einen bestimmten Geschäftsbereich erstellen, sagen wir Einzelhandelskreditkarten. Dazu würde ich nur die Datensätze auswählen, in denen die Branche = Einzelhandel ist, zusätzlich zu den Spalten, über die ich berichten möchte. Beim Erstellen neuer Spalten würde ich jedoch alle Datenzeilen ziehen und nur die Spalten, die ich für die Operationen benötige.
  6. Der Modellierungsprozess erfordert, dass ich jede Spalte analysiere, nach interessanten Beziehungen mit einigen Ergebnisvariablen suche, und erstellen Sie neue zusammengesetzte Spalten, die diese Beziehungen beschreiben. Die Kolumnen, die ich untersuche, werden normalerweise in kleinen Sätzen erstellt. Zum Beispiel werde ich mich auf eine Reihe von sagen wir 20 Spalten konzentrieren, die sich nur mit Immobilienwerten befassen, und beobachten, wie sie sich auf einen Kreditausfall beziehen. Sobald diese untersucht und neue Spalten erstellt wurden, gehe ich zu einer anderen Gruppe von Spalten über, z. B. Hochschulbildung, und wiederhole den Vorgang. Ich erstelle Kandidatenvariablen, die die Beziehung zwischen meinen Daten und einem Ergebnis erklären. Ganz am Ende dieses Prozesses wende ich einige Lerntechniken an, die aus diesen zusammengesetzten Spalten eine Gleichung erstellen.

Es kommt selten vor, dass ich jemals Zeilen zum Datensatz hinzufüge. Ich werde fast immer neue Spalten erstellen (Variablen oder Funktionen in der Statistik/im Sprachgebrauch des maschinellen Lernens).

„Large Data“-Workflows mit Pandas __del__: Questions

„Large Data“-Workflows mit Pandas _files: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method