Streamlit: Der schnellste Weg, um Daten-Apps in Python zu erstellen
Einführung
Streamlit ist eine Open-Source-Python-Bibliothek, die darauf abzielt, Datenwissenschaftlern und Machine-Learning-Ingenieuren die schnelle und einfache Erstellung von ansprechenden und interaktiven Webanwendungen zu ermöglichen. Sie vereinfacht den Prozess der Umwandlung von Data-Science-Skripten in gemeinsam nutzbare Web-Apps, ohne dass Frontend-Entwicklungserfahrung erforderlich ist.
Kernideen:
- Python-Skripte nutzen: Streamlit ermöglicht es Ihnen, Anwendungen mit reinen Python-Skripten zu erstellen, ohne HTML, CSS oder JavaScript schreiben zu müssen.
- Echtzeit-Aktualisierungen: Streamlit-Anwendungen werden automatisch aktualisiert, wenn Sie Code ändern und speichern, was eine schnelle Iteration und Experimentierung ermöglicht.
- Einfache Bedienung: Streamlit bietet eine intuitive API, mit der Sie problemlos verschiedene UI-Elemente wie Text, Diagramme, Schieberegler, Schaltflächen usw. hinzufügen können.
- Datengesteuert: Streamlit wurde speziell für Data-Science-Workflows entwickelt und ermöglicht die einfache Anzeige und Bearbeitung von Daten.
- Keine Frontend-Erfahrung erforderlich: Streamlit abstrahiert die Komplexität der Frontend-Entwicklung, sodass Sie sich auf Daten und Modelle konzentrieren können.
Projekt-Repository-Informationen
- GitHub-Repository: https://github.com/streamlit/streamlit
- Hauptprogrammiersprache: Python
- Lizenz: Apache License 2.0
- Stars: 23k+ (Stand: 26. Januar 2024)
- Forks: 2k+ (Stand: 26. Januar 2024)
- Mitwirkende: 300+
Hauptmerkmale
- Einfach zu bedienende API: Streamlit bietet eine übersichtliche API zum Erstellen verschiedener UI-Elemente, wie z. B.:
st.write()
: Zeigt Text, Daten, Diagramme usw. an.
st.slider()
: Erstellt ein Schieberegler-Steuerelement.
st.button()
: Erstellt ein Schaltflächen-Steuerelement.
st.selectbox()
: Erstellt ein Dropdown-Auswahlfeld.
st.dataframe()
: Zeigt ein Pandas DataFrame an.
st.line_chart()
: Zeigt ein Liniendiagramm an.
st.map()
: Zeigt eine Karte an.
st.file_uploader()
: Lädt Dateien hoch.
- Automatisches erneutes Ausführen: Streamlit-Anwendungen werden automatisch neu ausgeführt, wenn Sie Code ändern und speichern, was eine schnelle Iteration ermöglicht.
- Caching: Streamlit verfügt über einen integrierten Caching-Mechanismus, der Berechnungsergebnisse zwischenspeichern kann, um die Leistung der Anwendung zu verbessern. Verwenden Sie den
@st.cache_data
-Dekorator, um Funktionsergebnisse zu cachen.
- Sitzungszustand: Streamlit ermöglicht es Ihnen, den Zustand der Anwendung mit
st.session_state
zu verwalten, um komplexere interaktive Anwendungen zu erstellen.
- Komponenten: Streamlit unterstützt benutzerdefinierte Komponenten, mit denen Sie die Funktionalität von Streamlit erweitern und Bibliotheken von Drittanbietern integrieren können.
- Themen: Streamlit ermöglicht es Ihnen, das Erscheinungsbild Ihrer Anwendung anzupassen, einschließlich Farben, Schriftarten usw.
- Bereitstellung: Streamlit-Anwendungen können einfach auf verschiedenen Plattformen bereitgestellt werden, z. B. Streamlit Community Cloud, Heroku, AWS, Google Cloud usw.
- Community-Unterstützung: Streamlit verfügt über eine aktive Community, die umfangreiche Dokumentation, Tutorials und Beispiele bietet.
Kernmodule und -funktionen
- streamlit: Die Kernbibliothek, die die API zum Erstellen von Anwendungen enthält.
- streamlit.components.v1: Die API zum Erstellen benutzerdefinierter Komponenten.
- streamlit.config: Zum Konfigurieren des Verhaltens von Streamlit-Anwendungen.
- streamlit.delta_generator: Die API zum Generieren von UI-Elementen.
- streamlit.runtime: Die Laufzeitumgebung für Streamlit-Anwendungen.
- streamlit.web: Der Webserver für Streamlit-Anwendungen.
Anwendungsfälle
Streamlit kann zum Erstellen verschiedener Datenanwendungen verwendet werden, z. B.:
- Datenvisualisierung: Erstellen Sie interaktive Diagramme und Dashboards, um Daten zu erkunden und zu analysieren.
- Bereitstellung von Machine-Learning-Modellen: Stellen Sie Machine-Learning-Modelle als Webanwendungen bereit, damit Benutzer mit den Modellen interagieren können.
- Datenerkundung: Erstellen Sie interaktive Tools, um Daten zu erkunden und zu verstehen.
- Datenannotation: Erstellen Sie Datenannotationstools, um die Annotation von Daten zu unterstützen.
- Bildung und Präsentation: Erstellen Sie interaktive Präsentationen, um Data-Science-Konzepte und -Techniken zu demonstrieren.
- Interne Tools: Erstellen Sie interne Datentools, um die Effizienz des Teams zu verbessern.
Beispielcode
Hier ist ein einfaches Beispiel für eine Streamlit-Anwendung:
import streamlit as st
import pandas as pd
import numpy as np
st.title('Meine erste Streamlit-App')
st.write('Hallo Welt!')
# Erstellen eines DataFrame
data = pd.DataFrame({
'col1': [1, 2, 3, 4],
'col2': [5, 6, 7, 8]
})
# Anzeigen des DataFrame
st.write('Hier ist ein DataFrame:')
st.dataframe(data)
# Erstellen eines Schiebereglers
x = st.slider('Wählen Sie einen Wert für x', 0, 100, 50)
# Anzeigen des Werts des Schiebereglers
st.write('Der Wert von x ist:', x)
# Erstellen eines Zufallszahlendiagramms
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
Installation
Streamlit kann mit pip installiert werden:
pip install streamlit
Ausführen
Um eine Streamlit-Anwendung auszuführen, führen Sie den folgenden Befehl in der Befehlszeile aus:
streamlit run your_app.py
Dabei ist your_app.py
die Python-Datei Ihrer Streamlit-Anwendung.
Vorteile
- Schnelle Entwicklung: Streamlit ermöglicht es Ihnen, schnell Datenanwendungen zu erstellen, ohne viel Code schreiben zu müssen.
- Einfache Bedienung: Streamlit bietet eine intuitive API, mit der Sie problemlos verschiedene UI-Elemente hinzufügen können.
- Interaktivität: Streamlit-Anwendungen sind interaktiv und ermöglichen es Benutzern, mit Daten zu interagieren.
- Bereitstellbarkeit: Streamlit-Anwendungen können einfach auf verschiedenen Plattformen bereitgestellt werden.
- Community-Unterstützung: Streamlit verfügt über eine aktive Community, die umfangreiche Dokumentation, Tutorials und Beispiele bietet.
Nachteile
- Begrenzte Anpassbarkeit: Die Anpassbarkeit von Streamlit ist relativ begrenzt und kann möglicherweise nicht alle Anwendungsanforderungen erfüllen.
- Leistung: Bei komplexen Anwendungen ist die Leistung von Streamlit möglicherweise nicht so gut wie bei herkömmlichen Web-Frameworks.
- Schwache Frontend-Kontrolle: Keine so feine Kontrolle über die Benutzeroberfläche wie bei traditionellen Frontend-Frameworks.
Zusammenfassung
Streamlit ist ein leistungsstarkes Tool, das Datenwissenschaftlern und Machine-Learning-Ingenieuren helfen kann, schnell ansprechende und interaktive Webanwendungen zu erstellen. Es vereinfacht den Prozess der Umwandlung von Data-Science-Skripten in gemeinsam nutzbare Web-Apps, ohne dass Frontend-Entwicklungserfahrung erforderlich ist. Obwohl es in Bezug auf Anpassbarkeit und Leistung einige Einschränkungen gibt, machen seine Benutzerfreundlichkeit und schnelle Entwicklung es zu einer idealen Wahl für viele Data-Science-Projekte.