„Large Data“ -Arbeitsabläufe 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, wenn der Kern des Supports überschritten wird. SAS ist jedoch aus zahlreichen anderen Gründen als Software schrecklich.

Ich hoffe, dass ich eines Tages SAS durch Python und Pandas ersetzen kann, aber mir fehlt derzeit ein nicht zum Kern gehörender Workflow für große Datenmengen. Ich spreche nicht von "Big Data", das ein verteiltes Netzwerk erfordert, sondern von Dateien, die zu groß sind, um in den Arbeitsspeicher zu passen, aber klein genug, um auf eine Festplatte zu passen.

Mein erster Gedanke ist zu verwendenHDFStore große Datensätze auf der Festplatte zu halten und nur die Teile, die ich benötige, in Datenrahmen für die Analyse zu ziehen. Andere haben MongoDB als einfach zu verwendende Alternative erwähnt. Meine Frage lautet:

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

Laden von Flatfiles in eine permanente Datenbankstruktur auf der FestplatteAbfragen dieser Datenbank, um Daten abzurufen, die in eine Pandas-Datenstruktur eingespeist werden sollenAktualisierung der Datenbank nach der Bearbeitung von Teilen in Pandas

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

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

Importieren Sie iterativ eine große Flat-File-Datei und speichern Sie sie in einer permanenten Datenbankstruktur auf der Festplatte. Diese Dateien sind normalerweise zu groß, um in den Arbeitsspeicher zu passen.Um Pandas verwenden zu können, möchte ich Teilmengen dieser Daten (normalerweise nur wenige Spalten gleichzeitig) lesen, die in den Speicher passen.Ich würde neue Spalten erstellen, indem ich verschiedene Operationen an den ausgewählten Spalten durchführe.Ich müsste dann diese neuen Spalten in die Datenbankstruktur anhängen.

Ich versuche, eine Best-Practice-Methode für die Ausführung dieser Schritte zu finden. Beim Lesen von Links zu Pandas und Pytabellen scheint das Anhängen einer neuen Spalte ein Problem zu sein.

Bearbeiten - speziell auf Jeffs Fragen antworten:

Ich baue Verbraucherkredit-Risikomodelle auf. Die Arten von Daten umfassen Telefon-, SSN- und Adressmerkmale; Eigenschaftswerte; abfällige Informationen wie Strafregister, Insolvenzen usw. Die Datensätze, die ich täglich verwende, enthalten im Durchschnitt fast 1.000 bis 2.000 Felder gemischter Datentypen: fortlaufende, nominale und ordinale Variablen sowohl aus numerischen Daten als auch aus Zeichendaten. Ich hänge selten Zeilen an, aber ich führe viele Operationen aus, die neue Spalten erstellen.Typische Operationen umfassen das Kombinieren mehrerer Spalten unter Verwendung von Bedingungslogik zu einer neuen zusammengesetzten Spalte. Zum Beispiel,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'. Das Ergebnis dieser Vorgänge ist eine neue Spalte für jeden Datensatz in meinem Datensatz.Abschließend möchte ich diese neuen Spalten in die Datenstruktur auf der Festplatte einfügen. Ich würde Schritt 2 wiederholen und die Daten mit Kreuztabellen und beschreibenden Statistiken untersuchen, um interessante, intuitive Beziehungen zum Modell zu finden.Eine typische Projektdatei ist normalerweise etwa 1 GB groß. Dateien sind so organisiert, dass eine Zeile aus einem Datensatz von Kundendaten besteht. Jede Zeile hat für jeden Datensatz die gleiche Anzahl von Spalten. Dies wird immer der Fall sein.Es ist ziemlich selten, dass ich beim Erstellen einer neuen Spalte eine Teilmenge nach Zeilen erstellt habe. Es ist jedoch ziemlich häufig, dass ich beim Erstellen von Berichten oder beim Generieren von beschreibenden Statistiken Teilmengen in Zeilen erstelle. Ich möchte beispielsweise eine einfache Frequenz für einen bestimmten Geschäftsbereich erstellen, z. B. Privatkreditkarten. Zu diesem Zweck würde ich nur die Datensätze auswählen, bei 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 und nur die Spalten abrufen, die ich für die Vorgänge benötige.Der Modellierungsprozess erfordert, dass ich jede Spalte analysiere, nach interessanten Beziehungen mit einer Ergebnisvariablen suche und neue zusammengesetzte Spalten erstelle, die diese Beziehungen beschreiben. Die von mir untersuchten Spalten werden normalerweise in kleinen Gruppen erstellt. Ich werde mich zum Beispiel auf eine Reihe von etwa 20 Spalten konzentrieren, die sich nur mit Immobilienwerten befassen, und beobachten, wie sie mit dem Ausfall eines Kredits zusammenhängen. Sobald diese erforscht und neue Spalten erstellt sind, gehe ich zu einer anderen Gruppe von Spalten über, z. B. zur Hochschulausbildung, und wiederhole den Vorgang. Ich erstelle Kandidatenvariablen, die die Beziehung zwischen meinen Daten und einem bestimmten Ergebnis erklären. Am Ende dieses Prozesses wende ich einige Lerntechniken an, die aus diesen zusammengesetzten Spalten eine Gleichung erstellen.

Es ist selten, dass ich dem Datensatz jemals Zeilen hinzufüge. Ich werde fast immer neue Spalten erstellen (Variablen oder Features in Statistik / Maschinelles Lernen).

Antworten auf die Frage(13)

Ihre Antwort auf die Frage