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ät | Automatisch | Komplettes Skript wird bei Interaktion neu ausgeführt |
| Lernkurve | Etwas strukturierter, konzeptionell stärker | Sehr niedrige Einstiegshürde |
| Anwendungsfälle | Strukturierte Business- oder Analyse-Apps | Schnelle Prototypen, Data-Demos, ML-Showcases |
| Skalierbarkeit | Gut skalierbar durch modulare Architektur und reaktives Modell | Begrenzt skalierbar bei sehr großen oder komplexen Anwendungen |
| Zielgruppe | Data Scientists mit Bedarf an skalierbarer Architektur | Data 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ät | Automatisch | explizite Callbacks |
| Lernkurve | Intuitiver | Klar sturkturiert |
| Anwendungsfälle | Komplexe Analyse- und Business-Apps mit vielen interaktiven Abhängigkeiten | Interaktive Dashboards, datengetriebene Web-Apps |
| Skalierbarkeit | Gut für wachsende, modulare Apps | Gut skalierbar bei sauberem Architekturdesign |
| Zielgruppe | Data Scientists mit Bedarf an skalierbarer Architektur | EntwicklerInnen & 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ät | Automatisch | Keine echte Reaktivität, manuelles erneutes Ausführen von Zellen |
| Lernkurve | Etwas höher durch reaktives Konzept | Sehr niedrig, da lineares Skriptprinzip |
| Anwendungsfälle | Komplexe Webanwendungen | Explorative Analyse, Experimente, Dokumentation |
| Skalierbarkeit | Begrenzt im Notebook, besser als eigenständige App | Nicht für skalierbare Web-Anwendungen gedacht |
| Zielgruppe | Data Scientists mit Bedarf an interaktiven Analyse-Interfaces | Data 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ät | Automatisch | Keine echte Reaktivität, manuelles erneutes Ausführen von Zellen |
| Lernkurve | Mittel bis höher – Reaktivitätskonzept und App-Struktur müssen verstanden werden | Niedrig – schneller Einstieg durch reduzierte Komplexität |
| Anwendungsfälle | Produktive Analyse-Tools, Business-Apps, komplexe Dashboards | Prototypen, Lehrbeispiele, schnelle Daten-Demos |
| Skalierbarkeit | Gut für langfristige, skalierbare Anwendungen | Begrenzt bei stark wachsenden Anwendungen |
| Zielgruppe | Data Scientists und EntwicklerInnen mit Struktur- und Skalierungsbedarf | EinsteigerInnen, 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.
Weiterführende Links
Veröffentlicht: 19. Juli 2023
AutorIn
Starten Sie jetzt durch:
Wir freuen uns auf den Austausch mit Ihnen.