Listings Winkler/Scholz Jupyter Notebook

Listing 1: Arbeiten mit dem Datentyp datetime
from datetime import datetime
df.columns = [datetime.strptime(f.split("M")[0] + "-" + f.split("M")[1] + "-01", "%Y-%m-%d")
                if f.startswith("20") or f.startswith("19") else f for f in df.columns]

----

Listing 2: Den DataFrame einrichten
# Länder wählen
cci_mix = df[(df["country"].isin(["DE", "EA19", "SE"])) & 
                       (df["indic"] == "BS-CSMCI") & (df["s_adj"] == "NSA")]
# nur bestimmte Spalte behalten und transponieren (Zeit nach unten)
cci_mix = cci_mix[[c for c in cci_mix.columns 
                                     if (isinstance(c, datetime) and c.year>=2000) or c == "country"]].set_index("country").transpose()
# Index in Zeit wandeln
cci_mix.index = pd.DatetimeIndex(cci_mix.index)

-----

Listing 3: Werte aus dem DataFrame auslesen
de_cci = df[(df["country"] == "DE") & (df["indic"] == "BS-CSMCI") & (df["s_adj"] == "NSA")]
de_cci = de_cci[[c for c in de_cci.columns if isinstance(c, datetime) and (c.year==2020 or c.year==2019)]]
de_cci.index = ["Consumer confidence indicator"]
de_cci.transpose()[::-1].plot.bar(figsize=(16,9))

----

Listing 4: Den DataFrame mit der Funktion melt anpassen
columns = [datetime(y, m, 1) for y in range(2010, 2021) for m in range(1, 13)]
# die letzten beiden Spalten sind für November/Dezember 2020, da gibt es heute noch keine Daten
csmci_unwrapped = pd.melt(csmci[["country"] + columns[:-2]].dropna(), 
                          id_vars=["country"], var_name="month", value_name="csmci")
csmci_unwrapped

-----

Listing 5: Länder sortieren
import matplotlib.pyplot as plt
import seaborn as sns
csmci_unwrapped["country"] = [realnames_g[i] for i in csmci_unwrapped["country"]]
labels = csmci_unwrapped.groupby("country").agg({"csmci": "median"}).sort_values("csmci").index.values
plt.figure(figsize=(8, 10))
sns.boxplot(y="country", x="csmci", data=csmci_unwrapped, order=labels, palette="viridis")



