Ich habe eine relativ große (1 GB) Textdatei, die ich durch Addition verschiedene Kategorien in der Größe reduzieren will:Wie zum Streamen in und eine große Datendatei in Python manipuliert
Geography AgeGroup Gender Race Count
County1 1 M 1 12
County1 2 M 1 3
County1 2 M 2 0
An:
Geography Count
County1 15
County2 23
Dies wäre eine einfache Angelegenheit, wenn die gesamte Datei in den Speicher passen könnte, aber pandas.read_csv()
ergibt MemoryError
. Also habe ich nach anderen Methoden gesucht, und es scheint viele Optionen zu geben - HDF5? Mit itertools
(was kompliziert scheint - Generatoren?) Oder einfach mit den Standard-Datei Methoden in der ersten Geographie (70 Zeilen) zu lesen, summieren Sie die Spalte zählen, und schreiben Sie vor dem Laden in weiteren 70 Zeilen.
Hat jemand irgendwelche Vorschläge für den besten Weg, dies zu tun? Ich mag besonders die Idee, Daten zu streamen, besonders weil ich mir viele andere Orte vorstellen kann, an denen das nützlich wäre. Ich interessiere mich am meisten für diese Methode, oder eine, die ähnlich die grundlegendste Funktionalität verwendet, die möglich ist.
Bearbeiten: In diesem kleinen Fall möchte ich nur die Summen der Zählung nach Geographie. Es wäre jedoch ideal, wenn ich einen Chunk einlesen, eine beliebige Funktion spezifizieren könnte (z. B. 2 Spalten addieren oder das Maximum einer Spalte nach Geografie nehmen), die Funktion anwenden und die Ausgabe vor dem Einlesen eines neuen Chunks schreiben .
Sie wollen also nicht die 3 Spalten in der Mitte? – ayhan
Ich bearbeitet Frage zu klären, danke – HFBrowning
Kennen Sie über [Chunked liest in Pandas] (http://pandas.pydata.org/pandas-docs/stable/io.html#iterating-through-files-chunk-by- Stück)? 'pd.read_csv ('myfile.csv', chunksize = 1000) '. Dann können Sie Teile innerhalb einer Schleife bearbeiten. – chrisaycock