Aan de slagGa gratis aan de slag

Een iterator schrijven om data in chunks te laden (3)

Je raakt nu gewend aan het in stukken (chunks) lezen en verwerken van data. Laten we je skills nog wat verder oprekken door een kolom toe te voegen aan een DataFrame.

Vertrekkend van de code uit de vorige oefening gebruik je een lijstcomprehensie om de waarden te maken voor een nieuwe kolom 'Total Urban Population' op basis van de lijst met tuples die je eerder hebt gegenereerd. Denk terug aan de vorige oefening: het eerste en tweede element van elke tuple bestaan respectievelijk uit waarden uit de kolommen 'Total Population' en 'Urban population (% of total)'. De waarden in de nieuwe kolom 'Total Urban Population' zijn dus het product van het eerste en tweede element in elke tuple. Omdat het 2e element een percentage is, moet je de uitkomst delen door 100, of als alternatief vermenigvuldigen met 0.01.

Je maakt ook een plot van de data uit deze nieuwe kolom om een visualisatie van de stedelijke bevolking te maken.

De pakketten pandas en matplotlib.pyplot zijn respectievelijk als pd en plt geïmporteerd voor je gebruik.

Deze oefening maakt deel uit van de cursus

Python-gereedschapskist

Cursus bekijken

Oefeninstructies

  • Schrijf een lijstcomprehensie om een lijst met waarden uit pops_list te genereren voor de nieuwe kolom 'Total Urban Population'. De output expression moet het product zijn van het eerste en tweede element in elke tuple in pops_list. Omdat het 2e element een percentage is, moet je het resultaat ook vermenigvuldigen met 0.01 of delen door 100. Let er bovendien op dat de kolom 'Total Urban Population' alleen gehele waarden mag bevatten. Zorg hiervoor dat je de output expression cast naar een integer met int().
  • Maak een scatter-plot waarbij de x-as de waarden uit de kolom 'Year' zijn en de y-as de waarden uit de kolom 'Total Urban Population'.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Code from previous exercise
urb_pop_reader = pd.read_csv('ind_pop_data.csv', chunksize=1000)
df_urb_pop = next(urb_pop_reader)
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == 'CEB']
pops = zip(df_pop_ceb['Total Population'], 
           df_pop_ceb['Urban population (% of total)'])
pops_list = list(pops)

# Use list comprehension to create new DataFrame column 'Total Urban Population'
df_pop_ceb['Total Urban Population'] = [____]

# Plot urban population data
df_pop_ceb.plot(kind=____, x=____, y=____)
plt.show()
Code bewerken en uitvoeren