始める無料で始める

2年分の絶対差

別の変数として、前年(2016年)の寄付回数と昨年(2017年)の寄付回数の絶対差を追加したいとします。 この変数を basetable に追加できるように、2016年と2017年の寄付が入った2つの pandas データフレーム gifts_2016gifts_2017 を用意してあります。

pandas のデータフレーム df で、列 id の各 id ごとの出現回数を groupby で数えられることを思い出してください。

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

また、2つのデータフレーム df1df2merge_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())
コードを編集して実行