So führen Sie mit Pandas speichereffiziente Operationen an großen Datensätzen durch
Bild vom Herausgeber | Midjourney

Lassen Sie uns lernen, wie Sie in Pandas Operationen mit großen Datensätzen durchführen.

Vorbereitung

Da wir über das Pandas-Paket sprechen, sollten Sie eines installiert haben. Zusätzlich würden wir auch das Numpy-Paket verwenden. Installieren Sie additionally beide.

Kommen wir dann zum zentralen Teil des Tutorials.

Führen Sie speichereffiziente Operationen mit Pandas durch

Pandas sind normalerweise nicht dafür bekannt, große Datensätze zu verarbeiten, da speicherintensive Vorgänge mit dem Pandas-Paket zu viel Zeit in Anspruch nehmen oder sogar Ihren gesamten RAM verschlingen können. Es gibt jedoch Möglichkeiten, die Effizienz von Panda-Vorgängen zu verbessern.

In diesem Tutorial zeigen wir Ihnen, wie Sie Ihre Erfahrung mit großen Datensätzen in Pandas verbessern können.

Versuchen Sie zunächst, den Datensatz mit einem Speicheroptimierungsparameter zu laden. Versuchen Sie außerdem, den Datentyp zu ändern, insbesondere in einen speicherfreundlichen Typ, und löschen Sie alle unnötigen Spalten.

import pandas as pd

df = pd.read_csv('some_large_dataset.csv', low_memory=True, dtype={'column': 'int32'}, usecols=('col1', 'col2'))

Das Konvertieren von Integer und Float mit dem kleinsten Typ würde helfen, den Speicherbedarf zu reduzieren. Die Verwendung des Kategorietyps für die kategorische Spalte mit einer kleinen Anzahl eindeutiger Werte würde ebenfalls helfen. Kleinere Spalten tragen auch zur Speichereffizienz bei.

Als Nächstes können wir den Chunk-Prozess verwenden, um die Nutzung des gesamten Speichers zu vermeiden. Es wäre effizienter, wenn es iterativ verarbeitet würde. Wir möchten beispielsweise den Spaltenmittelwert ermitteln, aber der Datensatz ist zu groß. Wir können 100.000 Daten gleichzeitig verarbeiten und das Gesamtergebnis erhalten.

chunk_results = ()

def column_mean(chunk):
    chunk_mean = chunk('target_column').imply()
    return chunk_mean

chunksize = 100000
for chunk in pd.read_csv('some_large_dataset.csv', chunksize=chunksize):
    chunk_results.append(column_mean(chunk))

final_result = sum(chunk_results) / len(chunk_results) 

Vermeiden Sie außerdem die Verwendung der Methode apply mit Lambda-Funktionen; sie könnte speicherintensiv sein. Alternativ ist es besser, vektorisierte Operationen oder die .apply Methode mit normaler Funktion.

df('new_column') = df('existing_column') * 2

Für bedingte Operationen in Pandas ist es auch schneller zu verwenden np.the placeanstatt die Lambda-Funktion direkt mit .apply

import numpy as np 
df('new_column') = np.the place(df('existing_column') > 0, 1, 0)

Dann verwenden Sie inplace=Truein vielen Pandas-Operationen ist viel speichereffizienter als die Rückzuweisung zu ihrem DataFrame. Es ist viel effizienter, weil die Rückzuweisung einen separaten DataFrame erstellen würde, bevor wir sie in dieselbe Variable einfügen.

df.drop(columns=('column_to_drop'), inplace=True)

Und schließlich: Filtern Sie die Daten möglichst frühzeitig, bevor Sie irgendwelche Operationen durchführen. Dadurch begrenzen Sie die Datenmenge, die wir verarbeiten.

df = df(df('filter_column') > threshold)

Versuchen Sie, diese Tipps zu beherrschen, um Ihre Pandas-Erfahrung mit großen Datensätzen zu verbessern.

Zusätzliche Ressourcen

Cornellius Yudha Wijaya ist Information Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert