ПочатиПочніть безкоштовно

Створення ітератора для завантаження даних частинами (5)

Фінішна пряма. Ви опанували чимало прийомів обробки великих наборів даних частинами. У цій заключній вправі ви зберете весь код для обробки даних у одній функції, щоб надалі перевикористовувати його без повторного написання.

Ви визначите функцію plot_pop(), яка приймає два аргументи: назву файла для обробки та код країни для рядків, які слід опрацювати в наборі даних.

Оскільки весь попередній код з попередніх вправ буде зібрано в plot_pop(), виклик цієї функції вже виконує таке:

  • Завантажує файл частинами,
  • Створює новий стовпець із значеннями міського населення, та
  • Будує графік даних про міське населення.

Це чималий обсяг роботи, проте тепер функцію зручно застосовувати щоразу, коли потрібно обробити та візуалізувати будь-який файл і код країни!

Ви використаєте дані з 'ind_pop_data.csv', доступного у вашому поточному каталозі. Пакети pandas і matplotlib.pyplot вже імпортовано як pd і plt відповідно.

Після завершення погляньте на графіки та оцініть нові навички, які ви здобули. На цьому все не закінчується! Якщо вам сподобалося працювати з цими даними, продовжуйте дослідження за допомогою попередньо обробленої версії на Kaggle.

Ця вправа є частиною курсу

Набір інструментів Python

Переглянути курс

Інструкції до вправи

  • Визначте функцію plot_pop() з двома аргументами: перший — filename (файл для обробки), другий — country_code (код країни, який оброблятиметься в наборі даних).
  • Викличте plot_pop() для обробки даних з кодом країни 'CEB' у файлі 'ind_pop_data.csv'.
  • Викличте plot_pop() для обробки даних з кодом країни 'ARB' у файлі 'ind_pop_data.csv'.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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'
Редагувати та запускати код