两年间的绝对差
作为另一个变量,您可能希望加入 2017 年的捐赠次数与其前一年(2016 年)的捐赠次数之间的绝对差。
要把该变量添加到 basetable,我们已为您构建了两个 pandas 数据框 gifts_2016 和 gifts_2017,分别包含 2016 年和 2017 年的捐赠记录。
回顾一下,您可以在 pandas 数据框 df 中,针对列 id 的每个值统计出现次数,使用 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 年的捐赠次数添加到 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())