Chunksize bei Pandas

Manav Narula 21 Juni 2023
Chunksize bei Pandas

Die Bibliothek pandas in Python erlaubt uns, mit DataFrames zu arbeiten. Daten sind in einem DataFrame in Zeilen und Spalten organisiert.

Wir können Daten aus mehreren Quellen in einen DataFrame einlesen.

In realen Situationen können wir mit Datensätzen umgehen, die Tausende von Zeilen und Spalten enthalten. Dieser Datensatz kann je nach Quelle in einen DataFrame eingelesen werden.

Chunksize bei Pandas

Manchmal verwenden wir beim Lesen großer Datensätze den Parameter chunksize, um den Datensatz in Datenblöcke zu unterteilen. Die Größe dieser Chunks geben wir mit dem Parameter chunksize an.

Dies spart Rechenspeicher und verbessert die Effizienz des Codes.

Lassen Sie uns zunächst eine CSV-Datei lesen, ohne den Parameter chunksize in der Funktion read_csv() zu verwenden. In unserem Beispiel lesen wir einen Beispieldatensatz, der Filmkritiken enthält.

import pandas as pd

df = pd.read_csv("ratings.csv")
print(df.shape)
print(df.info)

Ausgang:

(25000095, 4)
<bound method DataFrame.info of           userId  movieId  rating   timestamp
0              1      296     5.0  1147880044
1              1      306     3.5  1147868817
2              1      307     5.0  1147868828
3              1      665     5.0  1147878820
4              1      899     3.5  1147868510
...          ...      ...     ...         ...
25000090  162541    50872     4.5  1240953372
25000091  162541    55768     2.5  1240951998
25000092  162541    56176     2.0  1240950697
25000093  162541    58559     4.0  1240953434
25000094  162541    63876     5.0  1240952515

[25000095 rows x 4 columns]>

Im obigen Beispiel lesen wir den angegebenen Datensatz und zeigen seine Details an. Das Attribut shape gibt die Zeilen und Spalten 25000095 bzw. 4 zurück.

Wir zeigen auch einige Informationen über die Zeilen und Spalten des Datensatzes mit dem Attribut info an.

Wir können sehen, dass dieses Dataset 2500005 Zeilen enthält und dass viel Arbeitsspeicher des Computers benötigt wird, um solch große Datasets zu verarbeiten. In solchen Fällen können wir den Parameter chunksize verwenden.

Lassen Sie uns dazu zunächst verstehen, was Iteratoren in Python sind.

Eine iterierbare Sequenz kann mit einer for-Schleife durchlaufen werden. Die for-Schleife wendet intern die iter()-Methode auf solche Objekte an, um Iteratoren zu erstellen.

Mit der Funktion next() können wir auf die Elemente in der Sequenz zugreifen.

Wenn wir den Parameter chunksize verwenden, erhalten wir einen Iterator. Wir können dieses Objekt durchlaufen, um die Werte zu erhalten.

import pandas as pd

df = pd.read_csv("ratings.csv", chunksize=10000000)
for i in df:
    print(i.shape)

Ausgang:

(10000000, 4)
(10000000, 4)
(5000095, 4)

Im obigen Beispiel geben wir den Parameter chunksize mit einem Wert an, und er liest den Datensatz in Datenblöcke mit den angegebenen Zeilen. Für unseren Datensatz hatten wir drei Iteratoren, als wir den chunksize-Operator als 10000000 spezifizierten.

Das zurückgegebene Objekt ist kein DataFrame, sondern ein pandas.io.parsers.TextFileReader-Objekt.

Wir können das Objekt durchlaufen und auf die Werte zugreifen. Beachten Sie, dass die Anzahl der Spalten für jeden Iterator gleich ist, was bedeutet, dass der Parameter chunksize beim Erstellen der Iteratoren nur die Zeilen berücksichtigt.

Dieser Parameter ist mit anderen Funktionen verfügbar, die Daten aus anderen Quellen wie pandas.read_json, pandas.read_stata, pandas.read_sql_table, pandas.read_sas und mehr lesen können. Es wird empfohlen, die offizielle Dokumentation zu überprüfen, bevor Sie diesen Parameter verwenden, um seine Verfügbarkeit zu sehen.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn