Aan de slagGa gratis aan de slag

Een iterator schrijven om data in stukken te laden (4)

In de vorige oefeningen heb je alleen de data uit de eerste DataFrame-chunk verwerkt. Deze keer ga je de resultaten over alle DataFrame-chunks in de gegevensset aggregeren. Dat betekent eigenlijk dat je nu de hele gegevensset verwerkt. Mooi, want zo kun je een grote gegevensset verwerken door met kleinere stukken te werken!

Je gaat de data gebruiken uit 'ind_pop_data.csv', beschikbaar in je huidige map. De pakketten pandas en matplotlib.pyplot zijn respectievelijk geïmporteerd als pd en plt voor je gebruik.

Deze oefening maakt deel uit van de cursus

Python-gereedschapskist

Cursus bekijken

Oefeninstructies

  • Initialiseer een lege DataFrame data met pd.DataFrame().
  • Itereer in de for-lus over urb_pop_reader zodat je alle DataFrame-chunks in de gegevensset kunt verwerken.
  • Concateneer data en df_pop_ceb door een lijst met de DataFrames door te geven aan pd.concat().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Initialize reader object: urb_pop_reader
urb_pop_reader = pd.read_csv('ind_pop_data.csv', chunksize=1000)

# Initialize empty DataFrame: data
data = ____

# Iterate over each DataFrame chunk
for df_urb_pop in ____:

    # Check out specific country: df_pop_ceb
    df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == 'CEB']

    # Zip DataFrame columns of interest: pops
    pops = zip(df_pop_ceb['Total Population'],
                df_pop_ceb['Urban population (% of total)'])

    # Turn zip object into list: pops_list
    pops_list = list(pops)

    # Use list comprehension to create new DataFrame column 'Total Urban Population'
    df_pop_ceb['Total Urban Population'] = [int(tup[0] * tup[1] * 0.01) for tup in pops_list]
    
    # Concatenate DataFrame chunk to the end of data: data
    data = ____

# Plot urban population data
data.plot(kind='scatter', x='Year', y='Total Urban Population')
plt.show()
Code bewerken en uitvoeren