
Wie aus dem Titel hervorgeht, werden wir über die Panel-Bibliothek sprechen, mit der Sie Jupyter-Notebooks in sichere Webanwendungen konvertieren können, bei denen die Füllung nicht technischen Benutzern verborgen bleibt. Es bleibt jedoch die Freiheit, interne Parameter zu manipulieren, dh nicht nur die Daten neu zu erstellen, sondern auch Anforderungen an den Kernel zu stellen. TL; DR Shiny für Python.
Eines der Hauptprobleme der Geschäftsanalyse ist, dass, egal wie cool es ist,
Es erreicht oft nicht den Benutzer, der darauf basierende Entscheidungen trifft. Laut IBM CTO für KI und Data Science gehen nur 13% der Projekte im Bereich Data Science in die Produktion. Einer der Hauptgründe ist die schwierige Zusammenarbeit aller an den Projekten Beteiligten. Wenn Sie die Lücke zwischen dem Datatatanisten, dem Programmierer, der das Projekt bereitstellt, und dem betreffenden Analysten schließen, können Sie den Gesamtauspuff erheblich erhöhen, die Zeit verkürzen und das Endprodukt durchdachter machen.
Dieses Problem wird durch mehrere Produkte gelöst, die derzeit in dieser Nische erhältlich sind.
Für eine gute, skalierbare Bereitstellung gibt es
Dash . In meinem letzten
Beitrag habe ich ein wenig getan
Abbildung am Beispiel einer Gebrauchtwagenmarktanalyse. Für die Vorteile von Dasha müssen Sie einen Preis in Form einer separaten App zahlen, die separat geschrieben werden muss. Plotly wird von Grafiken unterstützt. Sie müssen die Benutzeroberfläche entwerfen, CSS / HTML optimieren und beim Aktualisieren des Analysemodells in Notebooks im Allgemeinen zwei Codes unterstützen nicht sehr praktisch, während das Projekt in der Entwicklung ist.
Am anderen Ende lösen
Voila und
Panel das Problem (Voila muss in D'Artagnanowskis Stimme schneidig sein, um „Voila!“ Zu sagen). Voila kommt von einem Notizblock und unterstützt interaktive Jupyter-Widgets, mit denen es unabhängig von seiner Sprache mit einem Kernel aus einer Webanwendung kommunizieren kann (die Entwickler sprechen über Sprachunabhängigkeit, aber für R ist es nicht relevant, Shiny zu haben, und es gibt keine Geschäftsanalyse für Julia ) Mit Voila können Sie eine interaktive App mit zwei Klicks erstellen (ohne die Einführung, z. B. ipywidgets, müssen Sie anständig klicken). Panel ist eine reine Python-Lösung und geht von der anderen Seite auf dasselbe Problem über - vom Server aus, während Notepad und Jupyter optional sind. Das Modell kann in einer regulären Python-Datei gespeichert werden und der Server benötigt nicht das gesamte Jupyter-Ökosystem. Das Panel ist nicht auf eine bestimmte Bibliothek für Grafiken zugeschnitten (
Beispiele finden Sie auf matplotlib, bokeh, altair und plotly).
Beide Optionen - Panel und Voila sind nicht optimal für die Verwendung als geladene Anwendungen, aber sie sind nicht dafür gedacht. Die Idee ist, eine Analyse durchzuführen, ein Dashboard mit den Ergebnissen abzulegen, den Link zum Analysten / Manager zu löschen, sie mit den Parametern und Anforderungen spielen zu lassen und das Zwischenprodukt zu reparieren Ergebnis. Wenn Sie plötzlich einen langlebigen Antrag für eine Vielzahl von Personen stellen müssen, können Sie zu Dash wechseln und in Bronze gießen.
Als nächstes eine kleine Illustration, wie der Prozess aussieht. Lassen Sie uns ein einfaches Dashboard erstellen, das auf Daten zum Gebrauchtwagenmarkt in Frankreich und Deutschland basiert (nur weil es verfügbar ist, können Sie die Details des Datensatzes in einem anderen
Beitrag kennenlernen ). Aus der Funktion wird es möglich sein, Durchschnittspreise in Abhängigkeit vom Alter und ihrer Standardabweichung basierend auf Statistiken von Angeboten für Modelle zu berechnen und Preisverteilungen zu erstellen, die innerhalb eines Jahres vom Lärm geglättet werden.
Erstellen Sie zuerst ein Dashboard in Panel und verwenden Sie dann Voila. Notizblöcke und Daten können aus dem
Repository heruntergeladen oder durch nbviewer (
panel ,
voila )
durchsucht werden .
Aktionen, die sich nicht von der Analyse in einem Notizbuch unterscheiden, werde ich ohne Details belassen. Sie können in Notizbüchern über Links angezeigt werden. Dort gibt es nichts Neues.
Zu Beginn importieren wir die Bibliotheken und Daten. Ich werde Bokeh für Grafiken verwenden, da ich es als Standard habe und es Leerzeichen zum Kopieren und Einfügen gibt.
Als nächstes werden wir verschiedene Funktionen vorbereiten:
wm und std, um sie beim Gruppieren von Daten in Pandas zu verwenden
default_graph und default_bar_plot - Erstellen Sie leere Diagrammrohlinge
color_picker - zum Verteilen ausgewählter Objekte in der Farbpalette
Im Hauptteil deklarieren wir die verwendeten Widgets
Als nächstes erstellen wir eine Funktion, die die Interaktion mit dem Dekorator beschreibt.
@pn.depends(multi_select.param.value, year_slider.param.value, checkbox.param.value) def update(models, year, checkbox_status):
Mit Widgets können Sie eine Liste von Modellen auswählen, ein Jahr auswählen, um die Verteilung der Angebote nach Preis anzuzeigen, und die Standardabweichung des Preises vom Jahresdurchschnitt in einem Trenddiagramm anzeigen / ausblenden.
Innerhalb der Interaktion erstellen wir unsere Diagrammrohlinge und erstellen dann für alle ausgewählten Elemente Statistiken, Diagrammelemente (Linien, Markierungen, Fehlerstatistiken).
Fügen Sie alles zusammen und geben Sie die Grafiken als zwei Registerkarten für die kompakte Anzeige zurück.
return pn.Tabs(('Distribution', bokehdist), ('Trend', bokehfig))
Als Nächstes erstellen wir unser Layout, indem wir Widgets und Registerkarten mit Grafiken darin platzieren.
Das Verfahren überzeugt durch seine Einfachheit und Flexibilität in Eichenholz aufgrund einer einfachen tabellarischen Darstellung.
pn.Row(pn.Column('### Dashboard demo', multi_select, year_slider, checkbox), update).servable()
Die servable () -Methode stellt unser Dashboard für die Ausführung durch den Panel-Server zur Verfügung
unabhängig von der Befehlszeile Ändern der Servereinstellungen. Wenn wir weiterhin mit dem Editor arbeiten, stehen uns alle interaktiven Funktionen zur Verfügung. Für eine Testansicht, wie die Anwendung für einen externen Benutzer aussehen wird, fügen wir die show () -Methode hinzu. Damit sind alle unsere zusätzlichen Anstrengungen beendet und sie unterscheiden sich nicht wesentlich von der Erstellung von Diagrammen.
So sieht ein Dashboard in einem Notizbuch aus.

Wenn wir das Dashboard von außerhalb des lokalen Hosts zugänglich machen möchten, müssen wir Anfragen von außen mit sorgfältiger Whitelist oder mit einer breiten Geste wie bearbeiten können
panel serve Dashboard_demo_panel.ipynb --allow-websocket-origin=*
Die Anwendung, die der Analyst sehen wird, unterscheidet sich nicht von der im Notizbuch

Die Autoren sagen, dass es nicht möglich ist, Code von Drittanbietern auszuführen, aber der Schutzgrad bei einem kürzlich durchgeführten
Webinar wurde als etwas ausweichend bezeichnet. Mit Analysten zu teilen - das ist genug, es ist nicht nötig, dass solche Dinge, die auf dem Knie gesammelt werden, herausragen.
Lassen Sie uns abschließend vergleichen, wie Sie dasselbe mit Voila tun.
Die Version mit ipywidgets und Bokeh flog für mich nicht hoch und schwor auf Javascript in der Ausgabe.
Daher habe ich es in statischen Matplotlib-Diagrammen gesehen.
Das Zusammenstellen derselben Benutzeroberfläche aus ipywidgets mit einer Dropdown-Liste, einem Schieberegler, einem Kontrollkästchen und zwei Registerkarten erforderte einige Anstrengungen und Krücken, denen die gleiche Tabellenflexibilität fehlte. Der Hauptteil der Hauptfunktion musste abgesägt werden, um die Grafiken über die Registerkarten zu ziehen, dh das Notebook musste viel stärker angepasst werden als im ersten Fall.
Um die Webanwendung mit der für Jupyter installierten Erweiterung zu starten, reicht ein Klick aus. Das Bild ist ziemlich ähnlich. Aufgrund der unterschiedlichen Funktionalität berechnet das verwendete interaktive Widget die Funktion nicht standardmäßig, daher werden die Diagramme erst nach der ersten Interaktion mit dem Benutzer angezeigt.

Persönlich hat das Panel meiner Meinung nach in Bezug auf die Benutzerfreundlichkeit eindeutig gewonnen. Das gleiche Ergebnis wurde für eine viel geringere Anzahl von Aktionen erzielt, und zusätzliche Anstrengungen zum Hinzufügen zum Notizbuch sind minimal. Also ist alles freundlich und bewegt sich freudig zum Panel!