Écrire un itérateur pour charger des données par blocs (4)
Dans les exercices précédents, vous n'avez traité que les données du premier bloc de DataFrame. Cette fois, vous allez agréger les résultats pour l'ensemble des blocs de DataFrame du jeu de données. Autrement dit, vous allez maintenant traiter l'ensembles des données. C'est pratique, car vous pourrez manipuler un grand jeu de données en travaillant simplement sur de plus petits morceaux !
Vous allez utiliser les données de 'ind_pop_data.csv', disponible dans votre répertoire courant. Les modules pandas et matplotlib.pyplot ont été importés sous les alias pd et plt pour votre usage.
Cette activité fait partie du cours
Boîte à outils Python
Instructions de l’exercice
- Initialisez un DataFrame vide
dataà l'aide depd.DataFrame(). - Dans la boucle
for, itérez sururb_pop_readerafin de pouvoir traiter tous les blocs de DataFrame du jeu de données. - Concaténez
dataetdf_pop_ceben transmettant une liste de DataFrames àpd.concat().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()