Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz dla każdego darczyńcy w gifts_2016 liczbę darowizn przekazanych w 2016 roku.
  • Oblicz dla każdego darczyńcy w gifts_2017 liczbę 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())
Edytuj i uruchom kod