Warum ist Dask bei der Berechnung des Mittelwerts eines großen Datensatzes langsamer als Pandas und wie kann ich die Lei
Posted: 19 Jan 2025, 21:07
Ich lerne Dask, um meine Python-Projekte effizienter und skalierbarer zu machen. Um die Leistung besser zu verstehen, habe ich ein Skript geschrieben, das die Rechenzeit von Pandas und Dask bei der Berechnung des Mittelwerts einer Spalte in einem großen Datensatz vergleicht. Hier ist mein Code:
Wenn ich dieses Skript ausführe, stelle ich fest, dass Pandas den Mittelwert in etwa 0,02 Sekunden berechnet, während Dask mehr als 4,5 Sekunden benötigt. Dieses Ergebnis ist überraschend, da ich erwartet hatte, dass Dask aufgrund seiner Parallelverarbeitungsfähigkeiten schneller sein würde.
Für den Kontext:
Der Datensatz (large_dataset_3.csv) enthält 100 Millionen Zeilen mit einer Gesamtgröße von 292,4 MB.
Meine Systemspezifikationen sind:
Prozessor: Intel ® Core™ i5-8365U × 8 (4 Kerne, 8 Threads)
RAM: 16 GB
Meine Fragen:
Warum ist Dask in diesem Szenario langsamer als Pandas?
Gibt es Optimierungen oder Konfigurationen, die ich anwenden kann, um die Leistung von Dask zu verbessern?
Code: Select all
import pandas as pd
import dask.dataframe as dd
import time
from memory_profiler import memory_usage
filename = "large_dataset_3.csv"
df_pd = pd.read_csv(filename)
df_dask = dd.read_csv(filename, blocksize=75e6)
start = time.time()
mean_pd = df_pd["points"].mean()
stop = time.time()
print(f"Pandas Mean Computation Time {stop - start:.5f} seconds")
start = time.time()
mean_dask = df_dask["points"].mean().compute(num_workers=4)
stop = time.time()
print(f"Dask Mean Computation Time {stop - start:.5f} seconds")
Für den Kontext:
Der Datensatz (large_dataset_3.csv) enthält 100 Millionen Zeilen mit einer Gesamtgröße von 292,4 MB.
Meine Systemspezifikationen sind:
Prozessor: Intel ® Core™ i5-8365U × 8 (4 Kerne, 8 Threads)
RAM: 16 GB
Meine Fragen:
Warum ist Dask in diesem Szenario langsamer als Pandas?
Gibt es Optimierungen oder Konfigurationen, die ich anwenden kann, um die Leistung von Dask zu verbessern?