CommencezCommencez gratuitement

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

Voici la dernière étape. Vous avez beaucoup appris sur le traitement d'un grand jeu de données par blocs. Dans cet exercice final, vous allez regrouper tout le code de traitement 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 de pays des lignes à traiter dans le jeu de données.

Comme tout le code des exercices précédents sera regroupé dans plot_pop(), appeler la fonction fera déjà ce qui suit :

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

C'est beaucoup de travail, mais la fonction rend maintenant facile la répétition du même processus pour n'importe quel fichier et code de pays que vous voulez traiter et visualiser !

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

Quand vous aurez terminé, prenez un moment pour regarder les graphiques et réfléchir aux nouvelles compétences que vous avez acquises. Le parcours ne s'arrête pas ici ! Si vous avez aimé travailler avec ces données, vous pouvez continuer à les explorer à l'aide de la version prétraitée offerte sur Kaggle.

Cette activité fait partie du cours

Boîte à outils Python

Voir le cours

Instructions de l’exercice

  • Définissez la fonction plot_pop() qui prend deux arguments : d'abord 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 de pays 'CEB' dans le fichier 'ind_pop_data.csv'.
  • Appelez plot_pop() pour traiter les données du code de pays 'ARB' dans le fichier 'ind_pop_data.csv'.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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