Contents

import csv
from collections import defaultdict

# Datei einlesen und in Dictionaries umwandeln
def lade_umfragedaten(pfad):
    daten = []
    with open(pfad, newline="") as f:
        reader = csv.DictReader(f)
        for zeile in reader:
            zeile["Alter"] = int(zeile["Alter"])
            zeile["Schlafstunden"] = float(zeile["Schlafstunden"])
            zeile["Stresslevel"] = int(zeile["Stresslevel"])
            zeile["Bildschirmzeit"] = float(zeile["Bildschirmzeit"])
            daten.append(zeile)
    return daten

# 1. Durchschnittliche Schlafdauer berechnen
def durchschnitt_schlaf(daten):
    schlafstunden = [person["Schlafstunden"] for person in daten]
    return sum(schlafstunden) / len(schlafstunden)

# 2. Person mit höchster Bildschirmzeit
def max_bildschirmzeit(daten):
    return max(daten, key=lambda p: p["Bildschirmzeit"])

# 3. Anzahl der Informatik-Studierenden
def zaehle_informatiker(daten):
    return sum(1 for p in daten if p["Studiengang"] == "Informatik")

# 4. Filter: Personen mit Stresslevel > 3
def stress_hoch(daten):
    return [p for p in daten if p["Stresslevel"] > 3]

# 5. Durchschnittliche Bildschirmzeit pro Studiengang
def durchschnitt_bildschirmzeit_pro_studiengang(daten):
    gruppiert = defaultdict(list)
    for p in daten:
        gruppiert[p["Studiengang"]].append(p["Bildschirmzeit"])
    
    ergebnis = {}
    for studiengang, werte in gruppiert.items():
        ergebnis[studiengang] = sum(werte) / len(werte)
    return ergebnis

# Hauptprogramm
if __name__ == "__main__":
    daten = lade_umfragedaten("umfrage.csv")
    
    print("📊 Umfrageanalyse")
    print("-" * 30)
    
    print(f"1. Durchschnittlicher Schlaf: {durchschnitt_schlaf(daten):.2f} Stunden")
    
    max_pers = max_bildschirmzeit(daten)
    print(f"2. Höchste Bildschirmzeit: {max_pers['Name']} ({max_pers['Bildschirmzeit']} Std.)")
    
    inf_count = zaehle_informatiker(daten)
    print(f"3. Anzahl Informatik-Studierende: {inf_count}")
    
    stressige = stress_hoch(daten)
    print(f"4. Personen mit hohem Stresslevel (>3):")
    for p in stressige:
        print(f"   - {p['Name']} ({p['Stresslevel']})")
    
    print("5. Durchschnittliche Bildschirmzeit pro Studiengang:")
    for studiengang, schnitt in durchschnitt_bildschirmzeit_pro_studiengang(daten).items():
        print(f"   {studiengang}: {schnitt:.2f} Std.")