- Zeile 6 ist obsolet, da ``reader`` (würde ich anders nennen!) bereits iterierbar ist und somit *direkt* an ``groupby`` übergeben werden kann. Insbesondere bei *großen* Daten wird Dein Code damit deutlich schneller.
- Wieso nutzt Du beim schreibenden Zugriff auf eine Datei *nicht* ``with``?
- Noch effizienter wäre es, wenn Du ``data`` nicht als Liste, sondern Generator-Ausdruck umschreibst. Damit könntest Du Lesen, Verarbeiten und Schreiben effizient vereinen, weil immer nur *ein* Objekt gelesen, bearbeitet und sofort geschrieben wird.
Ich würde mir also drei Funktionen schreiben: Eine zum Lesen (erwartet einen Dateinamen), die einen Iterator von Zeilen zurückliefert (yield!). Eine zum Verarbeiten, die einen Iterator von Zeilen erwartet und einen Iterator von bearbeiteten Objekten zurückliefert. Und schlussendlich eine zum Schreiben, die als Eingabe einen Iterator von bearbeiteten Objekten erwartet und einen Dateinamen.
Diese kannst Du dann so kombinieren:
Code: Alles auswählen
dump(process_data(load("in.csv")), "out.csv")