Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man große CSV-Dateien in Python 2.7 effektiv verarbeiten?

Wie kann man große CSV-Dateien in Python 2.7 effektiv verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-11-08 03:32:02
Original
635 Leute haben es durchsucht

How to Effectively Handle Large CSV Files in Python 2.7?

Lesen großer CSV-Dateien in Python

Problem:Lesen riesiger CSV-Dateien (bis zu 1 Million Zeilen, 200 Spalten) in Python 2.7 stößt auf Speicherfehler.

Der anfängliche Ansatz durchläuft die gesamte Datei und speichert Daten als Listen im Speicher. Bei großen Dateien wird diese Methode jedoch unpraktisch, da sie übermäßig viel Speicher verbraucht.

Lösung:

1. Verarbeiten Sie Zeilen, während sie erstellt werden:

Vermeiden Sie das Laden der gesamten Datei in den Speicher. Verarbeiten Sie stattdessen Zeilen, während sie mit einer Generatorfunktion generiert werden.

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
Nach dem Login kopieren

2. Verwenden Sie Generatorfunktionen zum Filtern:

Filtern Sie Daten, während Sie die Datei mithilfe von Generatorfunktionen durchlaufen. Dieser Ansatz ermöglicht den Abgleich mehrerer aufeinanderfolgender Zeilen, die ein bestimmtes Kriterium erfüllen.

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        yield from takewhile(
            lambda r: r[3] == criterion,
            dropwhile(lambda r: r[3] != criterion, datareader))
        return
Nach dem Login kopieren

3. Speicherverbrauch optimieren:

Refaktorisieren Sie getdata(), um auch eine Generatorfunktion zu verwenden und sicherzustellen, dass immer nur eine Zeile im Speicher gehalten wird.

def getdata(filename, criteria):
    for criterion in criteria:
        for row in getstuff(filename, criterion):
            yield row
Nach dem Login kopieren

Zusätzliche Tipps für Geschwindigkeit:

  • Verwenden Sie csv.reader mit einem Blockgrößenparameter:Lesen Sie Dateien in kleineren Blöcken, um den Speicherbedarf zu reduzieren.
  • Erwägen Sie die Verwendung einer Datenbank-Engine:Wenn die Daten passen, speichern Sie sie in einer Datenbank für eine schnellere und effizientere Verarbeitung.

Das obige ist der detaillierte Inhalt vonWie kann man große CSV-Dateien in Python 2.7 effektiv verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage