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 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