НачатьНачать бесплатно

Создание итератора для загрузки данных по частям (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'
Редактировать и запускать код