Aan de slagGa gratis aan de slag

Van taak naar subtaken

In deze oefening ga je parallel computing gebruiken om de functie take_mean_age() toe te passen, die de gemiddelde leeftijd van atleten in een bepaald jaar berekent in de dataset met Olympische evenementen. De DataFrame athlete_events is voor je geladen en bevat onder andere twee kolommen:

  • Year: het jaar waarin het Olympisch evenement plaatsvond
  • Age: de leeftijd van de Olympiër

Je gaat de multiprocessor.Pool-API gebruiken, waarmee je je werklast over meerdere processen kunt verdelen. De functie parallel_apply() is gedefinieerd in de voorbeeldcode. Die neemt als invoer de toe te passen functie, de gebruikte groepering en het aantal cores dat voor de analyse nodig is. Let op: de decorator @print_timing wordt gebruikt om elke bewerking te timen.

Deze oefening maakt deel uit van de cursus

Introductie tot Data Engineering

Cursus bekijken

Oefeninstructies

  • Maak de code af zodat je take_mean_age eerst met 1 core toepast, daarna met 2 en tot slot met 4 cores.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Function to apply a function over multiple cores
@print_timing
def parallel_apply(apply_func, groups, nb_cores):
    with Pool(nb_cores) as p:
        results = p.map(apply_func, groups)
    return pd.concat(results)

# Parallel apply using 1 core
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)

# Parallel apply using 2 cores
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)

# Parallel apply using 4 cores
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)
Code bewerken en uitvoeren