import pandas as pd from datetime import datetime, timedelta # Kunden Dataset kunden = pd.DataFrame({ 'kunden_id': [1, 2, 3, 4, 5, 6, 7, 8], 'name': ['Anna Müller', 'Ben Schmidt', 'Clara Weber', 'David Klein', 'Eva Richter', 'Frank Braun', 'Greta Wolff', 'Hans Bauer'], 'email': ['anna.mueller@email.com', 'ben.schmidt@email.com', 'clara.weber@email.com', 'david.klein@email.com', 'eva.richter@email.com', 'frank.braun@email.com', 'greta.wolff@email.com', 'hans.bauer@email.com'], 'registriert_am': ['2024-01-15', '2024-01-22', '2024-02-03', '2024-02-10', '2024-02-28', '2024-03-05', '2024-03-12', '2024-03-20'] }) bestellungen = pd.DataFrame({ 'bestell_id': [101, 102, 103, 104, 105, 106, 107, 108, 109], 'kunden_id': [1, 2, 1, 3, 2, 4, 1, 5, 9], # Kunde 9 existiert nicht! 'bestelldatum': ['2024-01-20', '2024-01-25', '2024-02-01', '2024-02-05', '2024-02-12', '2024-02-15', '2024-03-01', '2024-03-10', '2024-03-15'], 'status': ['geliefert', 'geliefert', 'versandt', 'geliefert', 'storniert', 'geliefert', 'geliefert', 'versandt', 'geliefert'] }) print("\nBestellungen Dataset:") print(bestellungen) positionen = pd.DataFrame({ 'position_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], 'bestell_id': [101, 101, 102, 103, 103, 104, 105, 106, 107, 107, 108, 108, 109, 110], 'produkt': ['Laptop', 'Maus', 'Tastatur', 'Monitor', 'Webcam', 'Headset', 'Smartphone', 'Ladekabel', 'Tablet', 'Hülle', 'Drucker', 'Papier', 'Router', 'Kamera'], 'menge': [1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1], 'preis': [899.99, 29.99, 79.99, 299.99, 89.99, 149.99, 699.99, 24.99, 399.99, 19.99, 199.99, 29.99, 129.99, 549.99] }) print("\nBestellpositionen Dataset:") print(positionen) # Aufgabe 1: Bestellungen mit Kundennamen # - Nur bestellungen von existierenden Kunden order_customer = pd.merge(bestellungen, kunden, on="kunden_id", how="inner") print(order_customer) # Aufgabe 2: Vollständige Bestellübersicht (jede bestellung mit kunde und mit position mergen) step1 = pd.merge(bestellungen, kunden, on="kunden_id", how="left") result = pd.merge(step1, positionen, on="bestell_id", how="left") print(result) # Aufgabe 3: Kunden ohne Bestellungen finden [.isna()] kunden_ohne_best = pd.merge(kunden, bestellungen, on="kunden_id", how="left") print(kunden_ohne_best) print(kunden_ohne_best[kunden_ohne_best["bestell_id"].isna()][["kunden_id", "name"]])