Ecrire un itérateur pour charger des données par morceaux (4)
Dans les exercices précédents, vous n'avez traité que les données du premier bloc DataFrame. Cette fois, vous allez agréger les résultats sur tous les blocs DataFrame de l'ensemble de données. Cela signifie que vous allez maintenant traiter l'ensemble des données. C'est génial parce que vous allez pouvoir traiter la totalité d'un grand ensemble de données en travaillant simplement sur de plus petits morceaux !
Vous allez utiliser les données de 'ind_pop_data.csv'
, disponibles dans votre répertoire actuel. Les paquets pandas
et matplotlib.pyplot
ont été importés sous les noms pd
et plt
respectivement pour votre usage.
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Initialiser un DataFrame vide
data
en utilisantpd.DataFrame()
. - Dans la boucle
for
, itérez sururb_pop_reader
pour pouvoir traiter tous les blocs DataFrame de l'ensemble de données. - Concaténer
data
etdf_pop_ceb
en passant une liste de DataFrame àpd.concat()
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()