Shiny for Python

Ein Vergleich gegenüber anderen Frameworks und Vorteile

Was ist Shiny (for Python)?

Shiny wurde 2012 als R-Paket entwickelt und ermöglicht Data Scientists, interaktive Webanwendungen und Dashboards direkt in R zu erstellen. Nutzer können damit Daten erkunden, visualisieren und analysieren, ohne selbst programmieren zu müssen. Dadurch wird Datenanalyse einer breiteren Gruppe von Entscheidungsträger:innen zugänglich und datenbasierte Entscheidungsfindung gefördert.

2022 erweiterte Posit das Shiny-Ökosystem um Shiny for Python, sodass Anwendungen auch in Python entwickelt werden können. Während sich um R-Shiny historisch eine eher akademische Community gebildet hat, orientiert sich die schnell wachsende Python-Community stärker an wirtschaftlichen Anforderungen. Bei eoda nutzen wir Shiny for Python für interaktive Webanwendungen mit komplexen Analysen, die Unternehmen bei datenbasierten Entscheidungen unterstützen.

R-Shiny und Shiny for Python folgen denselben Prinzipien hinsichtlich Architektur, reaktiver Programmierlogik, Deployment und Skalierung. Python-EntwicklerInnen können dadurch interaktive Dashboards und Webanwendungen direkt in Python erstellen. Die Integration von Bibliotheken wie NumPy, Polars, PyTorch oder TensorFlow sowie die Einbindung in moderne Entwicklungs- und CI/CD-Prozesse machen Shiny for Python besonders geeignet für produktionsnahe Datenprodukte und ML-gestützte Anwendungen.

Wofür eignet sich Shiny (for für Python)?

Seit über 15 Jahren entwickeln wir datenbasiere Lösungen und Dashboards für unterschiedlichste Branchen. Shiny ist dabei ein Werkzeug, welches sich, unserer Erfahrung nach am besten eignet für:

  • Unternehmen / Organisationen, die Daten nicht nur visualisieren, sondern auf deren Basis Entscheidungen treffen und ausführen wollen
  • Unterschiedliche User haben, die Zugriff auf diese Informationen in ihrer täglichen Arbeit benötigen.
  • Verständliche Darstellungen von Informationen mit anderen teilen wollen

Shiny for Python ergibt Sinn besonders für Teams, die

  • bereits etablierte Python-basierte Pipelines für Entwicklung, Testing und Bereitstellung im Einsatz haben,
  • schnelle Visualisierungen und interaktive Webanwendungen erstellen, nutzen und teilen möchten,
  • das umfangreiche Pythoin-Ökosystem rund um Bibliotheken und Tools für Machine Learning, Datenanalyse, Visualisierung weiterhin nutzen möchten.

Shiny for Python im Vergleich

Shiny for Python vs Streamlit

Streamlit ist ein Open-Source-Framework für Python, mit dem sich schnell interaktive Webanwendungen für Datenanalyse und Machine Learning erstellen lassen. Streamlit verfolgt einen sehr einfachen und deklarativen Ansatz. Eine Anwendung wird im Grunde wie ein normales Python-Skript geschrieben, das bei jeder Benutzerinteraktion vollständig neu ausgeführt wird. Dadurch ist der Einstieg besonders leicht und richtet sich vor allem an Data Scientists, die ohne umfangreiche Webentwicklungskenntnisse Prototypen oder einfache Daten-Apps bauen möchten.

Shiny for Python nutzt jedoch eine reaktive Logik, mit der eine Eingabe eine direkte Neuberechnung / Änderung nur entsprechenden Komponenten bewirkt, auf die sich die Eingabe bezieht. Wie auch R-Shiny trennt Shiny for Python zwischen Benutzeroberfläche und Server, was die Wartung und Skalierbarkeit selbst bei komplexen Anwendungen erleichtert. Aus diesem Grund wählen wir Shiny (for Python) für Anwendungen, die sich mit der Zeit weiterentwickeln werden.

Shiny for Python Streamlit
ReaktivitätAutomatischKomplettes Skript wird bei Interaktion neu ausgeführt
LernkurveEtwas strukturierter, konzeptionell stärkerSehr niedrige Einstiegshürde
AnwendungsfälleStrukturierte Business- oder Analyse-AppsSchnelle Prototypen, Data-Demos, ML-Showcases
SkalierbarkeitGut skalierbar durch modulare Architektur und reaktives ModellBegrenzt skalierbar bei sehr großen oder komplexen Anwendungen
ZielgruppeData Scientists mit Bedarf an skalierbarer ArchitekturData Scientists, die schnell Ergebnisse zeigen wollen

Shiny for Python vs Dash

Shiny for Python und Dash unterscheiden sich in der Programmierlogik: Dash nutzt ein explizites Callback-System, bei dem genau definiert sein muss, welche Eingaben welche Ausgaben beeinflussen. Das bietet maximale Kontrolle über den Datenfluss, erfordert aber mehr manuelle Strukturierung.

Auch hier setzt Shiny for Python auf reaktive Programmierung: Abhängigkeiten zwischen Eingaben und Ausgaben werden automatisch erkannt, sodass sich nur die betroffene Teile der Anwendung selbstständig aktualisieren. Dadurch entsteht wenig Boilerplate-Code und komplexe, stark verknüpfte Oberflächen lassen sich vergleichsweise elegant umsetzen.

Während Shiny besonders für dynamische, datengetriebene Anwendungen mit vielen reaktiven Elementen geeignet ist, überzeugt Dash durch seine klare Architektur und die enge Integration mit Visualisierungen.

Shiny for Python Dash
ReaktivitätAutomatischexplizite Callbacks
LernkurveIntuitiverKlar sturkturiert
AnwendungsfälleKomplexe Analyse- und Business-Apps mit
vielen interaktiven Abhängigkeiten
Interaktive Dashboards, datengetriebene Web-Apps
SkalierbarkeitGut für wachsende, modulare AppsGut skalierbar bei sauberem Architekturdesign
ZielgruppeData Scientists mit Bedarf an skalierbarer ArchitekturEntwicklerInnen & Data Scientists, die volle Kontrolle über den Datenfluss wollen

Shiny for Python und Jupyter Notebooks

Shiny for Python lässt sich direkt in Jupyter Notebook oder JupyterLab verwenden und verbindet damit interaktive Web-App-Funktionalität mit dem klassischen Data-Science-Workflow. Während Jupyter primär für explorative, lineare Analyse gedacht ist, ergänzt Shiny diesen Ansatz um echte Reaktivität: UI-Elemente reagieren automatisch auf Änderungen und aktualisieren nur die betroffenen Teile der Anwendung. Dadurch eignet sich Shiny in Jupyter besonders für interaktive Datenanalysen, Lehrzwecke und schnelle Prototypen. Für produktive, skalierbare Mehrnutzer-Anwendungen wird Shiny jedoch meist als eigenständige Web-App außerhalb des Notebooks betrieben.

Shiny for Python (in Jupyter) Klassisches Jupyter Notebook
ReaktivitätAutomatischKeine echte Reaktivität, manuelles erneutes Ausführen von Zellen
LernkurveEtwas höher durch reaktives KonzeptSehr niedrig, da lineares Skriptprinzip
AnwendungsfälleKomplexe WebanwendungenExplorative Analyse, Experimente, Dokumentation
SkalierbarkeitBegrenzt im Notebook, besser als eigenständige AppNicht für skalierbare Web-Anwendungen gedacht
ZielgruppeData Scientists mit Bedarf an interaktiven Analyse-InterfacesData Scientists, Forschende, Studierende für explorative Arbeit

Shiny Express

Shiny Express ist eine vereinfachte Form von Shiny for Python, die auf eine möglichst schnelle und unkomplizierte Entwicklung interaktiver Anwendungen abzielt. Anstelle einer strikten Trennung von Oberfläche und Serverlogik nutzt es eine kompakte, skriptähnliche Herangehensweise. Dadurch entsteht weniger struktureller Aufwand und Anwendungen lassen sich mit überschaubarem Code realisieren. Besonders für kleinere Vorhaben, Demonstrationen oder den Einsatz in Lehrkontexten ist dieser Ansatz gut geeignet. Für umfangreichere Projekte bietet die klassische Shiny-Variante jedoch mehr organisatorische Klarheit und langfristige Erweiterungsmöglichkeiten.

Shiny for Python Shiny Express
ReaktivitätAutomatischKeine echte Reaktivität, manuelles erneutes Ausführen von Zellen
LernkurveMittel bis höher – Reaktivitätskonzept und App-Struktur müssen verstanden werdenNiedrig – schneller Einstieg durch reduzierte Komplexität
AnwendungsfälleProduktive Analyse-Tools, Business-Apps, komplexe DashboardsPrototypen, Lehrbeispiele, schnelle Daten-Demos
SkalierbarkeitGut für langfristige, skalierbare AnwendungenBegrenzt bei stark wachsenden Anwendungen
ZielgruppeData Scientists und EntwicklerInnen mit Struktur- und SkalierungsbedarfEinsteigerInnen, Lehrende, schnelle Projektumsetzungen

Shiny for Python Serverless (Shinylive)

Mit Hilfe von Shinylive und WebAssembly (Wasm) lassen sich Shiny-Apps ganz einfach in einem Browser nutzen – ohne die Notwendigkeit eines Python-Servers. Dabei wird der Python-Code direkt im Browser ausgeführt, sodass keine serverseitige Infrastruktur erforderlich ist. Jedoch muss hier ein Kompromiss geschlossen werden: Wegen der kaum möglichen Datenbereitstellungen, sind die Möglichkeiten komplexer Apps hier deutlich eingeschränkten gegenüber der klassischen Sever-Client-Architektur einer Shiny-App. Das Ergebnis ist eine statische Website, die dennoch interaktive Shiny-Funktionalität bietet. Dadurch werden Deployment, Skalierung und Wartung deutlich vereinfacht. Shinylive eignet sich besonders für öffentliche Dashboards, Dokumentationen, Lernmaterialien oder Anwendungen mit vielen gleichzeitigen Nutzenden, bei denen keine serverseitige Logik wie Datenbankzugriffe notwendig ist.

Testing mit Playwright in Shiny for Python

Playwright ist ein modernes Testwerkzeug zur automatisierten Überprüfung von Webanwendungen. Für Shiny for Python-Apps kann Playwright verwendet werden, um die Funktionalität und Interaktionen einer App automatisiert zu testen.

Dabei simuliert Playwright reale Nutzeraktionen, z.B. das Klicken auf Buttons, das Ausfüllen von Eingabefeldern oder das Navigieren durch die Oberfläche. So lässt sich überprüfen, ob die Anwendung wie erwartet reagiert und ob Änderungen im Code unbeabsichtigte Fehler verursachen.

Automatisierte Tests mit Playwright tragen somit zur Qualitätssicherung bei und unterstützen eine stabile Weiterentwicklung von Shiny-Anwendungen.

Beispiel eines Playwright-Test:

from services.data import filter_species

def test_filter_species():
    df = ...
    out = filter_species(df, "setosa")
    assert (out["Species"] == "setosa").all()

Tipps & Hinweise

Nutzen Sie anfangs Starter-Templates / Boilerplates um sich den Einstieg zu erleichtern z. B.

  • Inline Dokumentation helfen bei der Nachvollziehbarkeit
  • Schrittweise Vorgehen und bei jeder Iteration Feedback von Usern einholen
  • Nutzen Sie zur Versionskontrolle verschiedene Tools wie Git
  • Testing, Testing, Testing: Schreiben Sie Unit-Tests und End-to-End-Tests. Shiny for Python bietet hier ein eigenes Framework

 

 

Fazit

Mit Shiny for Python eröffnen sich für Python-EntwicklerInnen neue Möglichkeiten der Visualisierung und Interaktion mit Daten. Durch sein reaktives Programmiermodell, die klare Trennung von UI und Serverlogik sowie die gute Integration in bestehende Python-Ökosysteme eignet es sich besonders für datengetriebene Business-Anwendungen und produktionsnahe Analyse-Tools. Mit einer klaren Projektstruktur, sauber getrennten Services, konsequentem Testing und iterativer Entwicklung lassen sich Shiny-Apps nachhaltig, wartbar und teamfähig umsetzen.

Sie haben das Potenzial von Shiny for Python erkannt und möchte dieses Live erleben?

Seit über 15 Jahren sind wir der führende Anbieter für R-basierte Projekte und Shiny-App-Entwicklung – sprechen Sie uns an und gemeinsam gehen wir die nächsten Schritte.

Veröffentlicht: 19. Juli 2023

AutorIn

Christian Schreiner

Christian Schreiner ist im Bereich Marketing der eoda GmbH tätig. Hier betreut er die Themen Dateninfrastrukturen und Lösungen rund um das Thema Marketing. Privat interessiert er sich für Suchmaschinen-Optimierung und Trends in der Online-Kommunikation.

Row edge-slant Shape Decorative svg added to top
Row edge-slant Shape Decorative svg added to bottom

Starten Sie jetzt durch:
Wir freuen uns auf den Austausch mit Ihnen. 







    Nach oben scrollen