Bezwzględna różnica między dwoma latami
Kolejną zmienną, którą warto dodać, jest bezwzględna różnica między liczbą darowizn przekazanych w ostatnim roku (2017) a liczbą darowizn z roku poprzedniego (2016).
Aby dodać tę zmienną do basetable, przygotowano dla ciebie dwie ramki danych pandas – gifts_2016 i gifts_2017 – zawierające odpowiednio darowizny z 2016 i 2017 roku.
Przypomnij sobie, że możesz zliczyć wystąpienia w ramce danych pandas df dla każdego identyfikatora w kolumnie id przy użyciu funkcji groupby:
df_grouped = df.groupby("id")["value"].count().reset_index()
oraz że lewe złączenie dwóch ramek danych df1 i df2 po kolumnie merge_id wykonujesz za pomocą poniższego kodu:
merged_df = pd.merge(df1, df2, on=["merge_id"], how="left")
To ćwiczenie jest częścią kursu
Pośrednia analityka predykcyjna w Pythonie
Instrukcje do ćwiczenia
- Oblicz dla każdego darczyńcy w
gifts_2016liczbę darowizn przekazanych w 2016 roku. - Oblicz dla każdego darczyńcy w
gifts_2017liczbę darowizn przekazanych w 2017 roku. - Dodaj liczbę darowizn z 2016 i 2017 roku do basetable.
- Oblicz różnicę między liczbą darowizn z 2017 i 2016 roku i dodaj ją do basetable.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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())