Compare commits

...

2 Commits

Author SHA1 Message Date
b56166a780 Aufräumen 2025-05-31 11:10:57 +02:00
0f6518aa1f Einfügen Tabelle statistische Werte 2025-05-31 11:09:38 +02:00

View File

@ -1,14 +1,13 @@
import os, re, sys, unicodedata, subprocess
from pathlib import Path
import pandas as pd import pandas as pd
import plotly.graph_objs as go import plotly.graph_objs as go
import os from collections import defaultdict
import re
import unicodedata
import subprocess
from config_lms import plotly_theme, export_fig_visual, export_fig_png from config_lms import plotly_theme, export_fig_visual, export_fig_png
import sys from ci_template.plotly_template import (
sys.path.append("/Users/jochen_hanisch-johannsen/Documents/scripte/Jochen-Hanisch/CI/ci_template") get_standard_layout, get_colors, set_theme,
from plotly_template import get_standard_layout, get_colors, set_theme plot_table_from_dict, plot_table_from_dataframe
from pathlib import Path )
set_theme(plotly_theme) set_theme(plotly_theme)
# --- Hilfsfunktionen für Export und Slugify --- # --- Hilfsfunktionen für Export und Slugify ---
@ -44,8 +43,6 @@ def export_figure(fig, name, export_flag_html, export_flag_png):
except Exception as e: except Exception as e:
print("❌ Fehler beim PNG-Export:", str(e)) print("❌ Fehler beim PNG-Export:", str(e))
# PNG-Exportpfad definieren
png_export_path = Path(__file__).parent.parent.parent / "Allgemein beruflich" / "Research" / "Charité - Universitätsmedizin Berlin" / "Dissertation" / "Abbildungen"
# Ursprüngliche Datentabelle (bitte bei Bedarf anpassen) # Ursprüngliche Datentabelle (bitte bei Bedarf anpassen)
df = pd.DataFrame({ df = pd.DataFrame({
@ -80,9 +77,11 @@ df = pd.DataFrame({
] ]
}) })
# Zentrale Definition der Themenbereiche
THEMENBEREICHE = ["medizinisch", "rettungsdienstlich", "bezugswissenschaftlich", "Einführung/Prüfung"]
# --- Automatische Berechnung Themenbereichsanteile pro Kurs --- # --- Automatische Berechnung Themenbereichsanteile pro Kurs ---
# Ausschließlich systematische APrV-Zuordnung aus lms-verteilung.xlsx und zuordnung_praezise verwenden # Ausschließlich systematische APrV-Zuordnung aus lms-verteilung.xlsx und zuordnung_praezise verwenden
from collections import defaultdict
zuordnung_praezise = { zuordnung_praezise = {
# Medizinisch # Medizinisch
@ -162,10 +161,6 @@ apr_kompetenz_df = pd.DataFrame({
"Anteil (%)": [24, 15, 11, 50] "Anteil (%)": [24, 15, 11, 50]
}) })
# Umbenennung "unbekannt" → "Einführung/Prüfung" für valide Kategorisierung # Umbenennung "unbekannt" → "Einführung/Prüfung" für valide Kategorisierung
df["Themenbereich"] = df["Themenbereich"].replace("unbekannt", "Einführung/Prüfung") df["Themenbereich"] = df["Themenbereich"].replace("unbekannt", "Einführung/Prüfung")
@ -196,18 +191,13 @@ gruppe = df.groupby("Themenbereich").agg({
gruppe.columns = ['Ø Aufgaben', 'SD Aufgaben', 'Anzahl Kurse', 'Ø Dauer', 'SD Dauer'] gruppe.columns = ['Ø Aufgaben', 'SD Aufgaben', 'Anzahl Kurse', 'Ø Dauer', 'SD Dauer']
print("\nStatistik nach Themenbereich:\n", gruppe) print("\nStatistik nach Themenbereich:\n", gruppe)
def plot_boxplots(df): def plot_boxplots(df):
colors = get_colors() colors = get_colors()
# Spezifische Reihenfolge: medizinisch, rettungsdienstlich, bezugswissenschaftlich, Einführung/Prüfung # Spezifische und dokumentierte Reihenfolge der Boxplots
kategorie_order = [] kategorie_order = []
for k in ["medizinisch", "rettungsdienstlich", "bezugswissenschaftlich", "Einführung/Prüfung"]: for kategorie in ["medizinisch", "rettungsdienstlich", "bezugswissenschaftlich", "Einführung/Prüfung"]:
if k in df["Themenbereich"].unique(): if kategorie in df["Themenbereich"].unique():
kategorie_order.append(k) kategorie_order.append(kategorie)
# Ergänze ggf. andere Kategorien (falls weitere vorkommen)
for k in sorted(df["Themenbereich"].unique()):
if k not in kategorie_order:
kategorie_order.append(k)
# Aufgaben-Boxplot # Aufgaben-Boxplot
fig1 = go.Figure() fig1 = go.Figure()
@ -247,7 +237,6 @@ def plot_boxplots(df):
export_figure(fig2, fig2.layout.title.text, export_fig_visual, export_fig_png) export_figure(fig2, fig2.layout.title.text, export_fig_visual, export_fig_png)
fig2.show() fig2.show()
def plot_aprv_pies(): def plot_aprv_pies():
colors = get_colors() colors = get_colors()
@ -286,7 +275,6 @@ def plot_aprv_pies():
export_figure(fig2, fig2.layout.title.text, export_fig_visual, export_fig_png) export_figure(fig2, fig2.layout.title.text, export_fig_visual, export_fig_png)
fig2.show() fig2.show()
def plot_vergleich_lehrplan_aprv(): def plot_vergleich_lehrplan_aprv():
# Gruppierung der Kursdauer nach Themenbereich # Gruppierung der Kursdauer nach Themenbereich
nfsh_theme = df.groupby("Themenbereich")["Dauer [d]"].sum().reset_index() nfsh_theme = df.groupby("Themenbereich")["Dauer [d]"].sum().reset_index()
@ -314,9 +302,6 @@ def plot_vergleich_lehrplan_aprv():
export_figure(fig, fig.layout.title.text, export_fig_visual, export_fig_png) export_figure(fig, fig.layout.title.text, export_fig_visual, export_fig_png)
fig.show() fig.show()
def plot_vergleich_kompetenz_aprv(): def plot_vergleich_kompetenz_aprv():
# Automatische Zuordnung der Kompetenzbereiche basierend auf CSV-Datei # Automatische Zuordnung der Kompetenzbereiche basierend auf CSV-Datei
kuerzel_df = pd.read_csv(Path(__file__).parent / "APrV-Kuerzel_zu_Kompetenzbereichen.csv") kuerzel_df = pd.read_csv(Path(__file__).parent / "APrV-Kuerzel_zu_Kompetenzbereichen.csv")
@ -372,10 +357,13 @@ def plot_vergleich_kompetenz_aprv():
export_figure(fig, fig.layout.title.text, export_fig_visual, export_fig_png) export_figure(fig, fig.layout.title.text, export_fig_visual, export_fig_png)
fig.show() fig.show()
# --- Visualisierungen aufrufen --- # --- Visualisierungen aufrufen ---
# Alle Visualisierungen in sinnvoller Reihenfolge aufrufen # Alle Visualisierungen in sinnvoller Reihenfolge aufrufen
plot_aprv_pies() plot_aprv_pies()
plot_vergleich_lehrplan_aprv() plot_vergleich_lehrplan_aprv()
plot_vergleich_kompetenz_aprv() plot_vergleich_kompetenz_aprv()
plot_boxplots(df) plot_boxplots(df)
# Tabellen-Visualisierungen nach bisherigen Plots aus ci_template aufrufen
plot_table_from_dict(gesamt_stats, "Gesamtstatistik der curricularen Struktur", export_figure, export_fig_visual, export_fig_png)
plot_table_from_dataframe(gruppe, "Themenbereich", "Gruppierte Statistik nach Themenbereichen", export_figure, export_fig_visual, export_fig_png)