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

Абсолютная разница между двумя годами

В качестве ещё одной переменной можно добавить абсолютную разницу между количеством пожертвований, сделанных в последнем году (2017), и количеством пожертвований за предыдущий год (2016). Чтобы добавить эту переменную в basetable, для вас уже созданы два датафрейма pandas — gifts_2016 и gifts_2017, содержащие данные о пожертвованиях за 2016 и 2017 годы соответственно.

Напомним, что подсчитать количество вхождений для каждого идентификатора в столбце id датафрейма df можно с помощью функции groupby:

df_grouped = df.groupby("id")["value"].count().reset_index()

а левое соединение двух датафреймов df1 и df2 по ключу merge_id выполняется следующим образом:

merged_df = pd.merge(df1, df2, on=["merge_id"], how="left")

Это упражнение является частью курса

Средний уровень прогностической аналитики на Python

Посмотреть курс

Инструкции к упражнению

  • Вычислите для каждого донора в gifts_2016 количество пожертвований, сделанных в 2016 году.
  • Вычислите для каждого донора в gifts_2017 количество пожертвований, сделанных в 2017 году.
  • Добавьте количество пожертвований за 2016 и 2017 годы в базовую таблицу.
  • Вычислите разницу между количеством пожертвований за 2017 и 2016 годы и добавьте её в базовую таблицу.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Number of gifts in 2016 and 2017 for each donor
gifts_2016_bydonor = gifts_2016.____("____").____().reset_index()
gifts_2016_bydonor.columns = ["donor_ID", "donations_2016"]
gifts_2017_bydonor = gifts_2017.____("____").____().reset_index()
gifts_2017_bydonor.columns = ["donor_ID", "donations_2017"]

# Add number of gifts in 2016 and 2017 to the basetable
basetable = pd.merge(____, ____, on="donor_ID", how="____")
basetable = pd.merge(____, ____, on="donor_ID", how="____")

# Calculate the number of gifts in 2017 minus number of gifts in 2016
basetable.fillna(0)
basetable["gifts_2017_min_2016"] = ____["____"] - ____["____"]
print(basetable.head())
Редактировать и запускать код