Ecrire un itérateur pour charger des données par morceaux (5)
C'est la dernière étape. Vous avez beaucoup appris sur le traitement d'un grand ensemble de données par morceaux. Dans ce dernier exercice, vous mettrez tout le code de traitement des données dans une seule fonction afin de pouvoir réutiliser le code sans avoir à réécrire les mêmes choses.
Vous allez définir la fonction plot_pop()
qui prend deux arguments : le nom du fichier à traiter et le code pays des lignes que vous souhaitez traiter dans l'ensemble de données.
Comme tout le code que vous avez écrit dans les exercices précédents sera logé dans plot_pop()
, l'appel de la fonction a déjà l'effet suivant :
- Chargement du fichier morceau par morceau,
- Création de la nouvelle colonne des valeurs de la population urbaine, et
- Représentation graphique des données relatives à la population urbaine.
C'est beaucoup de travail, mais la fonction permet maintenant de répéter le même processus pour tout fichier et code de pays que vous souhaitez traiter et visualiser !
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.
Une fois que vous avez terminé, prenez le temps de regarder les tracés et de réfléchir aux nouvelles compétences que vous avez acquises. Le voyage ne s'arrête pas là ! Si vous avez aimé travailler avec ces données, vous pouvez continuer à les explorer en utilisant la version prétraitée disponible sur Kaggle.
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Définissez la fonction
plot_pop()
qui a deux arguments : le premier estfilename
pour le fichier à traiter et le second estcountry_code
pour le pays à traiter dans l'ensemble de données. - Appelez
plot_pop()
pour traiter les données du code pays'CEB'
dans le fichier'ind_pop_data.csv'
. - Appelez
plot_pop()
pour traiter les données du code pays'ARB'
dans le fichier'ind_pop_data.csv'
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Define plot_pop()
def ____(____, ____):
# Initialize reader object: urb_pop_reader
urb_pop_reader = pd.read_csv(filename, chunksize=1000)
# Initialize empty DataFrame: data
data = pd.DataFrame()
# Iterate over each DataFrame chunk
for df_urb_pop in urb_pop_reader:
# Check out specific country: df_pop_ceb
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == country_code]
# 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 = pd.concat([data, df_pop_ceb])
# Plot urban population data
data.plot(kind='scatter', x='Year', y='Total Urban Population')
plt.show()
# Set the filename: fn
fn = 'ind_pop_data.csv'
# Call plot_pop for country code 'CEB'
# Call plot_pop for country code 'ARB'