Skip to content

Streamlit DataFrame: Anzeigen, Stylen und Optimieren von Pandas DataFrames

In der Welt der Datenwissenschaft ist die Fähigkeit, Daten zu visualisieren und mit ihnen zu interagieren, von entscheidender Bedeutung. Streamlit, eine Python-Bibliothek, hat die Art und Weise verändert, wie wir mit Daten interagieren, und es einfacher denn je gemacht, interaktive, datenreiche Webanwendungen zu erstellen. Eine der leistungsstärksten Funktionen von Streamlit ist seine Möglichkeit, mit DataFrames zu arbeiten, der von der beliebten Datenmanipulationsbibliothek Pandas verwendeten Datenstruktur. In diesem Artikel werden wir uns mit der Welt von Streamlit DataFrame befassen und untersuchen, wie Sie Ihre Pandas DataFrames zur nahtlosen Datenanalyse interaktiv anzeigen, stylen und optimieren können.

Was ist Streamlit DataFrame?

Streamlit DataFrame ist eine Funktion der Streamlit-Bibliothek, mit der Sie Pandas DataFrames auf interaktive und visuell ansprechende Weise anzeigen können. Es ist, als ob Sie Ihren Standard-Pandas DataFrame, der normalerweise in einem statischen Format in einem Jupyter Notebook oder einem Python-Skript angezeigt wird, nehmen und ihn in einer dynamischen, webbasierten Anwendung zum Leben erwecken.

Die DataFrame-Funktion von Streamlit basiert auf Pandas, einer leistungsstarken Datenmanipulationsbibliothek in Python. Pandas DataFrames sind zweidimensionale, änderbare, heterogene tabellarische Datenstrukturen mit beschrifteten Achsen. Sie sind unglaublich vielseitig und gehören zur Grundausstattung eines jeden Datenwissenschaftlers. Streamlit erweitert die Funktionalität von Pandas DataFrames, indem es eine Plattform bietet, auf der sie interaktiv angezeigt und manipuliert werden können.

Streamlit DataFrame Tutorial

Haben Sie von diesem fantastischen Tool zur Datenanalyse und -visualisierung gehört, mit dem Sie Ihre Streamlit-App ganz einfach in Tableau verwandeln können?

PyGWalker (opens in a new tab) ist eine Python-Bibliothek, die Ihnen dabei hilft, eine Tableau-ähnliche Benutzeroberfläche nahtlos in Ihre eigene Streamlit-App einzubetten. Schauen Sie sich dieses erstaunliche Video von Wie man Daten mit PyGWalker in Python erkundet (opens in a new tab) an, in dem die detaillierten Schritte zur Verbesserung Ihrer Streamlit-App mit dieser leistungsstarken Python-Bibliothek zur Datenvisualisierung erklärt werden!


Ein besonderer Dank geht an Sven und seine großartige Arbeit (opens in a new tab) für die PyGWalker-Community!

Darüber hinaus können Sie auch die PyGWalker GitHub-Seite (opens in a new tab) für weitere PyGWalker-Beispiele besuchen.

Erste Schritte mit Streamlit DataFrames

Um mit Streamlit DataFrame zu beginnen, müssen Sie zuerst Streamlit installieren. Dies können Sie tun, indem Sie den Befehl pip install streamlit in Ihrem Terminal ausführen. Sobald Streamlit installiert ist, können Sie es zusammen mit Pandas in Ihr Python-Skript importieren.

import streamlit as st
import pandas as pd

Als nächstes erstellen wir ein einfaches DataFrame, das angezeigt werden soll. Für dieses Beispiel verwenden wir ein DataFrame mit Daten zu verschiedenen Arten von Früchten.

data = {
    'Obst': ['Apfel', 'Banane', 'Kirsche', 'Dattel', 'Holunderbeere'],
    'Menge': [10, 15, 20, 25, 30],
    'Preis': [0.5, 0.25, 0.75, 1.0, 2.0]
}
df = pd.DataFrame(data)

Um dieses DataFrame in Streamlit anzuzeigen, müssen Sie lediglich die Funktion st.dataframe() verwenden.

st.dataframe(df)

Wenn Sie Ihre Streamlit-App ausführen, sehen Sie Ihr DataFrame als interaktive Tabelle angezeigt. Sie können die Tabelle nach den Spaltenüberschriften sortieren und die Breite und Höhe der Tabelle anpassen, indem Sie die Ecken ziehen.

Dies ist nur ein grundlegendes Beispiel für das, was Sie mit Streamlit DataFrame tun können. Wenn wir uns mit diesem Thema vertiefen, werden Sie eine Vielzahl von Funktionen und Techniken entdecken, die Ihnen helfen können, Ihre Datenvisualisierung auf die nächste Stufe zu heben.

Anzeigen von DataFrames in Streamlit

Wie man ein DataFrame als interaktive Tabelle mit Streamlit anzeigt

Ein DataFrame als interaktive Tabelle in Streamlit anzuzeigen, ist genauso einfach wie die Verwendung der Funktion st.dataframe(), wie wir bereits im vorherigen Abschnitt gesehen haben. Es geht jedoch um mehr als nur um die Anzeige des DataFrames. Sie können die Anzeige auch an Ihre Bedürfnisse anpassen.

Sie können beispielsweise mithilfe des Parameters height die Anzahl der anzuzeigenden Zeilen festlegen. Dies kann besonders nützlich sein, wenn Sie mit großen DataFrames arbeiten. Hier ist ein Beispiel:

st.dataframe(df, height=300)

In diesem Beispiel wird das DataFrame mit einer Höhe von 300 Pixeln angezeigt, was etwa 10 Zeilen entspricht. Wenn das DataFrame mehr als 10 Zeilen hat, wird ein Scrollbalken angezeigt, mit dem Sie durch die Daten scrollen können.

Sie können auch bestimmte Zellen im DataFrame basierend auf bestimmten Bedingungen hervorheben. Beispielsweise möchten Sie möglicherweise die Zellen hervorheben, die Werte über einem bestimmten Schwellenwert enthalten. Dies können Sie mit der style-Methode des DataFrames tun, wie folgt:

st.dataframe(df.style.highlight_max(axis=0))

In diesem Beispiel werden die Zellen mit den maximalen Werten in jeder Spalte hervorgehoben. Sie können die Hervorhebung an Ihre Bedürfnisse anpassen, indem Sie die Bedingungen in der highlight_max()-Methode ändern.

Umgang mit großen DataFrames in Streamlit

Der Umgang mit großen DataFrames in Streamlit kann ein wenig herausfordernd sein, insbesondere wenn es um Leistung und Benutzerfreundlichkeit geht. Streamlit bietet jedoch mehrere Funktionen, die Ihnen dabei helfen können, große DataFrames effektiv zu handhaben. Eine solche Funktion ist die Seitenumbruch (Pagination). Der Seitenumbruch ermöglicht es Ihnen, ein großes DataFrame in kleinere, überschaubarere Stücke aufzuteilen. Dies kann besonders nützlich sein, wenn Sie es mit einem DataFrame zu tun haben, das Hunderte oder sogar Tausende von Zeilen enthält.

Um den Seitenumbruch in Streamlit zu implementieren, können Sie die Funktion st.beta_container() zusammen mit einer for-Schleife verwenden. Hier ist ein Beispiel:

container = st.beta_container()
for i in range(0, len(df), 50):
    container.dataframe(df[i:i+50])

In diesem Beispiel wird das DataFrame in Abschnitte von jeweils 50 Zeilen unterteilt und jeder Abschnitt wird in einem separaten Container angezeigt. Sie können sich durch die Abschnitte mithilfe der Bildlaufleiste navigieren.

Styles für DataFrames in Streamlit

Kann ich ein DataFrame in Streamlit mit CSS stylen?

Ja, Sie können ein DataFrame in Streamlit mit CSS stylen. Streamlit ermöglicht es Ihnen, CSS-Styles auf Ihr DataFrame mit der Funktion st.markdown() anzuwenden. Diese Funktion ermöglicht es Ihnen, HTML- und CSS-Code direkt in Ihrer Streamlit-App zu schreiben.

Sie können zum Beispiel die Hintergrundfarbe Ihres DataFrames wie folgt ändern:

st.markdown("""
<style>
table {background-color: #f0f0f0;}
</style>
""", unsafe_allow_html=True)
st.dataframe(df)

In diesem Beispiel wird die Funktion st.markdown() verwendet, um einen CSS-Stil zu definieren, der die Hintergrundfarbe der Tabelle zu Hellgrau ändert. Der Parameter unsafe_allow_html=True ist notwendig, um die Verwendung von HTML und CSS in der Markdown zu erlauben.

Styling von DataFrames in Streamlit

Zusätzlich zu CSS bietet Streamlit auch eine Reihe von integrierten Funktionen zum Stylen Ihres DataFrames. Mit diesen Funktionen können Sie verschiedene Stile auf Ihr DataFrame anwenden, wie z.B. das Hervorheben bestimmter Zellen, das Ändern der Farbe des Textes und mehr.

Sie können zum Beispiel die Funktion highlight_max() verwenden, um die Zellen mit den maximalen Werten in jeder Spalte hervorzuheben, wie wir bereits gesehen haben. Sie können auch die Funktion background_gradient() verwenden, um Ihrem DataFrame einen Farbverlauf hinzuzufügen, wie folgt:

st.dataframe(df.style.background_gradient(cmap='Blues'))

In diesem Beispiel wird einem DataFrame ein Farbverlauf mit einer Farbintensität entsprechend den Werten im DataFrame hinzugefügt. Der Parameter cmap legt die Farbpalette fest, die für den Farbverlauf verwendet werden soll.

Optimierung von DataFrames in Streamlit

Wie können Sie ein Pandas DataFrame mit Streamlit optimieren?

Die Optimierung eines Pandas DataFrames in Streamlit beinhaltet die Verbesserung seiner Leistung und Effizienz, insbesondere bei der Arbeit mit großen Datensätzen. Streamlit bietet mehrere Funktionen, die Ihnen helfen können, Ihr DataFrame zu optimieren, wie z.B. Caching und Speicheroptimierung.

Caching in Streamlit kann die Leistung Ihrer App erheblich verbessern, wenn Sie mit großen DataFrames arbeiten. Mit dem @st.cache-Dekorator stellen Sie sicher, dass Ihr DataFrame nur einmal berechnet wird und das Ergebnis im Cache für nachfolgende Läufe gespeichert wird. Hier ist ein Beispiel:

@st.cache
def load_data():
    # Laden Sie Ihr DataFrame hier
    df = pd.read_csv('large_dataset.csv')
    return df
 
df = load_data()
st.dataframe(df)

In diesem Beispiel wird die Funktion load_data(), die ein großes DataFrame aus einer CSV-Datei lädt, mit @st.cache dekoriert. Das bedeutet, dass das DataFrame nur einmal geladen wird und das Ergebnis im Cache gespeichert wird. Wenn Sie Ihre Streamlit-App erneut ausführen, wird das DataFrame aus dem Cache geladen, anstatt erneut berechnet zu werden, was viel Zeit sparen kann.

Caching und Leistungstipps für Streamlit DataFrames

Die Nutzung der Möglichkeiten des Cachings in Streamlit kann die Leistung Ihrer App erheblich verbessern. Es ist jedoch wichtig, es sorgfältig zu verwenden, um unerwartetes Verhalten zu vermeiden. Hier sind einige wichtige Punkte, die Sie beachten sollten:

  • Eingabeparameter der Funktion: Der @st.cache-Dekorator cacht die Ergebnisse basierend auf den Eingabeparametern der Funktion. Wenn sich diese Parameter ändern, wird die Funktion neu berechnet. Diese Funktion kann besonders nützlich sein, wenn Sie Ihr DataFrame basierend auf Benutzereingaben aktualisieren möchten.
@st.cache
def load_data(file_name):
    # Laden Sie Ihr DataFrame hier
    df = pd.read_csv(file_name)
    return df
 
# Benutzereingabe für Dateiname
file_name = st.text_input('Geben Sie den Dateinamen ein')
df = load_data(file_name)
st.dataframe(df)
  • Output-Mutation: Streamlit ermöglicht es Ihnen, Funktionen zu cachen, die ihre Ausgabe mit dem Parameter allow_output_mutation=True im @st.cache-Dekorator verändern. Seien Sie jedoch vorsichtig, da dies zu unerwartetem Verhalten führen kann, wenn es nicht korrekt verwendet wird.
@st.cache(allow_output_mutation=True)
def load_and_process_data(file_name):
    # Laden und verarbeiten Sie Ihr DataFrame hier
    df = pd.read_csv(file_name)
    df['neue_Spalte'] = df['alte_Spalte'].apply(irgendeine_Funktion)
    return df
  • DataFrame-Anzeigelimit: Wenn Sie es mit großen DataFrames zu tun haben, ist es ratsam, die Menge der angezeigten Daten zu begrenzen. Dies können Sie mit dem Parameter height in der Funktion st.dataframe() erreichen. Dies kann die Leistung Ihrer App erheblich verbessern und die Benutzererfahrung verbessern.
# Nur einen Teil des DataFrame anzeigen
st.dataframe(df, height=300)

Fortgeschrittene Anwendungsfälle für Streamlit DataFrames

Filtern von Streamlit DataFrames

Filtern ist ein häufiger Vorgang in der Datenanalyse, der es Ihnen ermöglicht, eine Teilmenge Ihrer Daten basierend auf bestimmten Bedingungen auszuwählen. In Streamlit können Sie das Filtrieren von DataFrames mit Hilfe der interaktiven Widgets, die von der Bibliothek bereitgestellt werden, einfach implementieren.

Sie können zum Beispiel ein Dropdown-Menü verwenden, um dem Benutzer die Auswahl einer Spalte zum Filtern zu ermöglichen, und einen Schieberegler, um den Wertebereich auszuwählen, der eingeschlossen werden soll. Hier ist ein Beispiel:

column = st.selectbox('Wählen Sie die Spalte zum Filtern aus', df.columns)
min_val, max_val = st.slider('Wählen Sie den Wertebereich aus', min(df[column]), max(df[column]), (min(df[column]), max(df[column])))
filtered_df = df[(df[column] >= min_val) & (df[column] <= max_val)]
st.dataframe(filtered_df)

In diesem Beispiel kann der Benutzer eine Spalte auswählen, nach der gefiltert werden soll, und einen Wertebereich von einem Schieberegler auswählen. Der DataFrame wird dann basierend auf diesen Auswahlkriterien gefiltert und der gefilterte DataFrame angezeigt.

Streamlit Dataframes in Machine Learning

Streamlit ist nicht nur für die Datenvisualisierung gedacht, sondern auch ein leistungsstolles Werkzeug für maschinelles Lernen. Mit Streamlit können Sie interaktive maschinelle Lern-Apps erstellen, in denen Sie Ihre Daten anzeigen, Ihre Modelle trainieren und Ihre Ergebnisse visualisieren können - alles an einem Ort.

Beispielsweise können Sie eine Streamlit-App verwenden, um einen DataFrame Ihrer Trainingsdaten anzuzeigen, mit Optionen zum -Filtern und Sortieren der Daten. Sie können dann einen Button verwenden, um ein maschinelles Lernmodell mit diesen Daten zu trainieren und die Ergebnisse in einem interaktiven Plot anzuzeigen.

Hier ist ein einfaches Beispiel:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
 
# Den DataFrame anzeigen
st.dataframe(df)
 
# Button zum Trainieren des Modells
if st.button('Modell trainieren'):
    # Die Daten in Trainings- und Testdatensätze aufteilen
    X_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=42)
 
    # Das Modell trainieren
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)
 
    # Vorhersagen machen und die Genauigkeit berechnen
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
 
    # Die Genauigkeit anzeigen
    st.write(f'Genauigkeit: {accuracy*100:.2f}%')

In diesem Beispiel wird ein RandomForestClassifier auf einem DataFrame df trainiert, wobei 'target' als die Zielvariable festgelegt ist. Die Genauigkeit des Modells wird dann in der Streamlit-App angezeigt.

Dies ist nur ein einfaches Beispiel dafür, was Sie mit Streamlit im Bereich des maschinellen Lernens tun können. Die Möglichkeiten sind endlos und mit der interaktiven Natur von Streamlit können Sie leistungsstarke und benutzerfreundliche maschinelle Lern-Apps erstellen.

Fazit

Streamlit hat die Art und Weise, wie wir mit Daten interagieren, revolutioniert und es einfacher denn je gemacht, interaktive datenreiche Webanwendungen zu erstellen. Seine nahtlose Integration mit Pandas DataFrames hat eine Vielzahl von Möglichkeiten für Datenvisualisierung und Analysen eröffnet. Egal ob Sie ein erfahrener Datenwissenschaftler oder ein Anfänger sind, Streamlit bietet eine leistungsstarke und benutzerfreundliche Plattform, um Ihre DataFrames anzuzeigen, zu stylen und zu optimieren.

Also warum warten? Tauchen Sie ein und beginnen Sie noch heute die Welt der Streamlit DataFrames zu erkunden!

Haben Sie von diesem tollen Data-Analyse- und -Visualisierungstool gehört, das Ihre Streamlit-App in ein Tableau verwandelt?

PyGWalker (opens in a new tab) ist eine Python-Bibliothek, die Ihnen hilft, eine Tableau-ähnliche Benutzeroberfläche nahtlos in Ihre eigene Streamlit-App einzubetten.

PyGWalker für die Datenvisualisierung in Streamlit (opens in a new tab)

Häufig gestellte Fragen

  1. Wie kann ich einen DataFrame in Streamlit stylen? Sie können einen DataFrame in Streamlit sowohl mit CSS als auch mit eingebauten Styling-Funktionen stylen. Beispielsweise können Sie mit CSS die Hintergrundfarbe Ihres DataFrames ändern oder mit der Funktion background_gradient() einen Farbverlauf anwenden.

  2. Wie kann ich einen DataFrame in Streamlit filtern? Streamlit bietet interaktive Widgets, die Sie verwenden können, um Ihren DataFrame zu filtern. Sie können zum Beispiel ein Selectbox verwenden, um dem Benutzer die Auswahl einer Spalte zum Filtern zu ermöglichen, und ein Schieberegler, um den Wertebereich festzulegen.

  3. Kann ich Bilder in einem DataFrame in Streamlit anzeigen? Ja, Sie können Bilder in einem DataFrame in Streamlit anzeigen. Sie können die Funktion st.image() verwenden, um Bilder anzuzeigen, die in einem DataFrame gespeichert sind. Die Bilder müssen jedoch als URLs oder binäre Daten gespeichert sein, damit dies funktioniert.