LoslegenKostenlos starten

Slider für Verkaufsdaten

Die Analyse von Trends und Mustern in den Daten des globalen E‑Commerce-Unternehmens wurde durch deine Date Picker stark verbessert. Nun gibt es die zusätzliche Bitte zu sehen, welche Kategorien die „Big-Ticket“-Bestellungen antreiben.

Das Unternehmen hat dich gebeten, ein Tool zu bauen, mit dem sie einen Wert auswählen können (wirklich jeden beliebigen!), und ein Diagramm zeigt dann, wie viele Verkäufe einen Bestellwert größer als dieser Wert hatten – aufgeschlüsselt nach Hauptkategorie.

Du weißt, dass sich das gut mit einer Range-Eingabe umsetzen lässt.

Diese Übung ist Teil des Kurses

<Kurs>Dashboards mit Dash und Plotly erstellen</Kurs>
Kurs ansehen

Übungsanweisungen

  • Füge unter Zeile 16 eine Slider-Komponente namens dcc.Slider mit dem Bezeichner value_slider hinzu, um einen minimalen Bestellwert auszuwählen.
  • Setze unter Zeile 20 den Parameter value des Sliders auf 0.
  • Setze unter Zeile 22 den Parameter step des Sliders auf 50.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px
import pandas as pd
ecom_sales = pd.read_csv('/usr/local/share/datasets/ecom_sales.csv')
logo_link = 'https://assets.datacamp.com/production/repositories/5893/datasets/fdbe0accd2581a0c505dab4b29ebb66cf72a1803/e-comlogo.png'

app = Dash()

app.layout = [
  html.Img(src=logo_link, style={'margin':'30px 0px 0px 0px'}),
  html.H1('Sales breakdowns'),
  html.Div([
        html.H2('Controls'),
        html.Br(),
        html.H3('Minimum OrderValue Select'),
        # Add a slider input
        ____(id='value_slider',
            min=ecom_sales['OrderValue'].min(),
            max=ecom_sales['OrderValue'].max(),
            # Set the starting value of the slider
            ____=____,
            # Set the step increment of the slider
            ____=____,
            vertical=False)],
        style={'width':'350px', 'height':'350px', 'display':'inline-block', 'vertical-align':'top', 'border':'1px solid black', 'padding':'20px'}),
  html.Div([
		dcc.Graph(id='sales_cat'),
		html.H2('Sales by Major Category', style={ 'border':'2px solid black', 'width':'400px', 'margin':'0 auto'})],
		style={'width':'700px','display':'inline-block'})
]

@callback(
    Output(component_id='sales_cat', component_property='figure'),
    Input(component_id='value_slider', component_property='value')
)
def update_plot(min_val):
    sales = ecom_sales.copy(deep=True)
    if min_val:
        sales = sales[sales['OrderValue'] >= min_val]
    ecom_bar_major_cat = sales.groupby('Major Category')['OrderValue'].size().reset_index(name='Total Sales Volume')
    bar_fig_major_cat = px.bar(
        title=f'Sales with order value: {min_val}',data_frame=ecom_bar_major_cat, orientation='h', 
        x='Total Sales Volume', y='Major Category')
    return bar_fig_major_cat
  
if __name__ == '__main__':
    app.run(debug=True)
Code bearbeiten und ausführen