开始使用免费开始使用

两年间的绝对差

作为另一个变量,您可能希望加入 2017 年的捐赠次数与其前一年(2016 年)的捐赠次数之间的绝对差。 要把该变量添加到 basetable,我们已为您构建了两个 pandas 数据框 gifts_2016gifts_2017,分别包含 2016 年和 2017 年的捐赠记录。

回顾一下,您可以在 pandas 数据框 df 中,针对列 id 的每个值统计出现次数,使用 groupby 函数:

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

此外,您可以使用以下代码,将两个数据框 df1df2 按给定的 merge_id 做左连接:

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

本练习是课程的一部分

Python 预测分析进阶

查看课程

练习说明

  • 计算 gifts_2016 中每位捐赠人的 2016 年捐赠次数。
  • 计算 gifts_2017 中每位捐赠人的 2017 年捐赠次数。
  • 将 2016 年和 2017 年的捐赠次数添加到 basetable。
  • 在 basetable 中计算 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())
编辑并运行代码