Écrire un itérateur pour charger des données par blocs (3)
Vous avez désormais l’habitude de lire et de traiter des données par blocs. Améliorons vos compétences en ajoutant une colonne à un DataFrame.
En repartant du code de l’exercice précédent, vous allez utiliser une compréhension de liste pour créer les valeurs d’une nouvelle colonne 'Total Urban Population' à partir de la liste de tuples générée plus tôt. Rappelez-vous que les premier et deuxième éléments de chaque tuple correspondent respectivement aux valeurs des colonnes 'Total Population' et 'Urban population (% of total)'. Les valeurs de cette nouvelle colonne 'Total Urban Population' sont donc le produit du premier et du deuxième élément de chaque tuple. De plus, comme le 2ᵉ élément est un pourcentage, vous devez diviser le résultat par 100, ou, alternativement, le multiplier par 0.01.
Vous tracerez également les données de cette nouvelle colonne afin de visualiser les données de population urbaine.
Les packages pandas et matplotlib.pyplot ont été importés sous les alias pd et plt pour votre usage.
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Écrivez une compréhension de liste pour générer une liste de valeurs à partir de
pops_listpour la nouvelle colonne'Total Urban Population'. L’expression de sortie (output expression) doit être le produit des premier et deuxième éléments de chaque tuple danspops_list. Comme le deuxième élément est un pourcentage, vous devez également multiplier le résultat par0.01ou le diviser par100. De plus, notez que la colonne'Total Urban Population'ne doit contenir que des entiers. Pour cela, veillez à convertir l’expression de sortie en entier avecint(). - Créez un graphique de type scatter où l’axe des x correspond aux valeurs de la colonne
'Year'et l’axe des y aux valeurs de la colonne'Total Urban Population'.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()