CommencerCommencer gratuitement

Écrire un itérateur pour charger les données par blocs (5)

C’est la dernière étape. Vous avez beaucoup appris sur le traitement d’un grand jeu de données par blocs. Dans cet ultime exercice, vous allez regrouper tout le code de traitement des données dans une seule fonction afin de pouvoir le réutiliser sans tout réécrire à chaque fois.

Vous allez définir la fonction plot_pop() qui prend deux arguments : le nom du fichier à traiter et le code pays des lignes à extraire du jeu de données.

Comme tout le code des exercices précédents sera encapsulé dans plot_pop(), appeler cette fonction effectuera déjà les actions suivantes :

  • Chargement du fichier bloc par bloc,
  • Création de la nouvelle colonne des valeurs de population urbaine, et
  • Tracé des données de population urbaine.

Cela fait beaucoup de travail, mais la fonction vous permet désormais de reproduire facilement le même processus pour n’importe quel fichier et code pays à traiter et à visualiser !

Vous allez utiliser les données de 'ind_pop_data.csv', disponible dans votre répertoire courant. Les packages pandas et matplotlib.pyplot ont été importés respectivement sous les alias pd et plt pour votre usage.

Une fois terminé, prenez un moment pour regarder les graphiques et réfléchir aux nouvelles compétences que vous avez acquises. Le voyage ne s’arrête pas là ! Si vous avez apprécié 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

Afficher le cours

Instructions

  • Définissez la fonction plot_pop() avec deux arguments : filename pour le fichier à traiter, puis country_code pour le pays à traiter dans le jeu 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'
Modifier et exécuter le code