Kom igångKom igång gratis

Skriva en iterator för att läsa in data i delar (5)

Nu är vi i mål. Du har lärt dig mycket om hur man bearbetar en stor datamängd i delar. I den här sista övningen samlar du all kod för databearbetningen i en enda funktion, så att du enkelt kan återanvända den utan att behöva skriva om samma saker på nytt.

Du ska definiera funktionen plot_pop(), som tar två argument: filnamnet på filen som ska bearbetas och landskoden för de rader du vill bearbeta i datamängden.

Eftersom all kod från de tidigare övningarna nu samlas i plot_pop(), utför ett anrop till funktionen automatiskt följande steg:

  • Läser in filen del för del,
  • Skapar den nya kolumnen med värden för stadsbefolkning, och
  • Ritar ett diagram över stadsbefolkningsdata.

Det är en hel del arbete – men nu gör funktionen det enkelt att upprepa samma process för vilken fil och landskod du än vill bearbeta och visualisera!

Du kommer att använda data från 'ind_pop_data.csv', som finns tillgänglig i din nuvarande katalog. Paketen pandas och matplotlib.pyplot har importerats som pd respektive plt.

När du är klar, ta ett ögonblick att titta på diagrammen och reflektera över de nya färdigheter du har förvärvat. Resan slutar inte här! Om du har tyckt om att arbeta med den här datamängden kan du fortsätta utforska den med hjälp av den förbearbetade versionen som finns på Kaggle.

Den här övningen är en del av kursen

Python Toolbox

Visa kurs

Övningsinstruktioner

  • Definiera funktionen plot_pop() med två argument: först filename för filen som ska bearbetas, och sedan country_code för landet som ska bearbetas i datamängden.
  • Anropa plot_pop() för att bearbeta data för landskoden 'CEB' i filen 'ind_pop_data.csv'.
  • Anropa plot_pop() för att bearbeta data för landskoden 'ARB' i filen 'ind_pop_data.csv'.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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'
Redigera och kör kod