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.
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:
collections.defaultdict(set)
hat immer eine defaultdict
für set
(dafür ist es da), also kannst du uniques[col]
und so weiter überspringen.
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%Tags und Links python list nested-lists