Der pythonische Weg, eine Liste von Listen zu erstellen

8

Ich habe eine große Datei (2 GB) von kategorischen Daten (meistens "Nan" - aber hier und da mit tatsächlichen Werten gefüllt), die zu groß ist, um in einen einzelnen Datenrahmen zu lesen. Ich hatte eine ziemlich schwierige Zeit mit einem Objekt, um alle einzigartigen Werte für jede Spalte zu speichern (Welches ist mein Ziel - schließlich muss ich dies für die Modellierung faktorisieren)

Was ich damit gemacht habe, war, die Datei in Blöcken in einen Datenrahmen zu lesen und dann die eindeutigen Werte jeder Spalte zu erhalten und sie in einer Liste von Listen zu speichern. Meine Lösung funktioniert, schien aber am unpythonischsten - gibt es einen saubereren Weg, dies in Python (Version 3.5) zu erreichen. Ich kenne die Anzahl der Spalten (~ 2100).

%Vor%

Danach ist meine letzte Aufgabe für alle einzigartigen Werte wie folgt:

%Vor%

daher gibt mir master [i] den Spaltennamen und dann eine Liste mit eindeutigen Werten - grob, aber es funktioniert - mein Hauptanliegen ist es, die Liste nach Möglichkeit "besser" zu erstellen.

    
RDS 27.09.2016, 05:18
quelle

1 Antwort

8

Ich würde anstelle von list von list s vorschlagen, indem Sie % co_de verwenden %

Sagen Sie, dass Sie mit

beginnen %Vor%

Nun kann die Schleife in etwa so aussehen:

%Vor%

Beachten Sie Folgendes:

  1. collections.defaultdict(set) hat immer eine defaultdict für set (dafür ist es da), also kannst du uniques[col] und so weiter überspringen.

  2. Bei einem gegebenen initialized aktualisieren Sie einfach den Eintrag mit der Vereinigungsmenge des aktuellen Satzes (die anfangs leer ist, aber das spielt keine Rolle) und den neuen eindeutigen Elementen.

Bearbeiten

Wie Raymond Hettinger bemerkt (danke!), ist es besser

zu verwenden %Vor%     
Ami Tavory 27.09.2016, 05:40
quelle

Tags und Links