Začněte nyníZačněte zdarma

Psaní iterátoru pro načítání dat po částech (5)

Tohle je poslední krok. Hodně ses naučil/a o zpracování velkého datasetu po částech. V tomto závěrečném cvičení zabalíš veškerý kód pro zpracování dat do jediné funkce, abys ho mohl/a snadno použít znovu, aniž bys musel/a vše přepisovat od začátku.

Definuješ funkci plot_pop(), která přijímá dva argumenty: název souboru, který má být zpracován, a kód země, jejíž řádky chceš z datasetu zpracovat.

Protože veškerý kód z předchozích cvičení bude součástí funkce plot_pop(), její zavolání automaticky zajistí:

  • načtení souboru po částech,
  • vytvoření nového sloupce s hodnotami městského obyvatelstva a
  • vykreslení grafu s daty o městském obyvatelstvu.

Je toho hodně, ale díky této funkci teď můžeš celý postup snadno opakovat pro libovolný soubor a kód země!

Budeš pracovat s daty ze souboru 'ind_pop_data.csv', který je dostupný v tvém aktuálním adresáři. Balíčky pandas a matplotlib.pyplot jsou již naimportovány jako pd a plt.

Až budeš hotov/a, věnuj chvíli pohledu na grafy a zamysli se nad tím, co nového ses naučil/a. Cesta tím ale nekončí! Pokud tě práce s těmito daty bavila, můžeš v jejich prozkoumávání pokračovat pomocí předzpracované verze dostupné na Kaggle.

Toto cvičení je součástí kurzu

Python Toolbox

Zobrazit kurz

Pokyny k cvičení

  • Definuj funkci plot_pop() se dvěma argumenty: filename pro soubor ke zpracování a country_code pro kód země, jejíž data chceš zpracovat.
  • Zavolej plot_pop() pro zpracování dat země s kódem 'CEB' ze souboru 'ind_pop_data.csv'.
  • Zavolej plot_pop() pro zpracování dat země s kódem 'ARB' ze souboru 'ind_pop_data.csv'.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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'
Upravit a spustit kód