Interaktive Tabelle mit Kennzahlen
Diagramme zur visuellen Darstellung deiner Daten sind großartig, um aggregierte Kennzahlen schnell zu erfassen. Manchmal musst du jedoch mehr Zahlen sehen, als in gängigen Visualisierungsformaten sinnvoll darstellbar ist.
Ein wichtiger Stakeholder im E‑Commerce-Unternehmen, der Leiter der Finanzabteilung, hat von deiner guten Arbeit gehört, braucht aber einige Kennzahlen in Tabellenform statt als Visualisierung. Er hat ein Dashboard angefordert, das einige aggregierte Statistiken tabellarisch zeigt. Er fragt sich jedoch, ob du auch etwas „Dash‑Magie“ einbauen könntest, um es interaktiver zu machen als seine bisherigen Excel-Tabellen?
Diese Übung ist Teil des Kurses
<Kurs>Dashboards mit Dash und Plotly erstellen</Kurs>Übungsanweisungen
- Richte unter Zeile
9das Objektmoney_fmtfür die USD-Währungsformatierung mit den passendenfunction- undstyle-Parametern ein. - Füge den
money_fmt-Formatter unter Zeile15in der Spalte'Total Sales ($)'incolumn_defshinzu.
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
from dash_ag_grid import AgGrid
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'
key_stats_tb = ecom_sales.groupby(['Country','Major Category', 'Minor Category'])['OrderValue'].agg(['sum', 'count', 'mean']).reset_index().rename(columns={'count':'Sales Volume', 'sum':'Total Sales ($)', 'mean':'Average Order Value ($)'})
# Set up the money object
money_fmt = {
"____": (
"""params.value.toLocaleString(
'en-US', {style: '____', currency: '____'})""")}
# Add the formatter to the relevant column
column_defs = [
{"field": "Major Category"},
{"field": "Total Sales ($)", "____": ____},
{"field": "Average Order Value ($)"},
{"field": "Sales Volume"}]
grid = AgGrid(
columnDefs=column_defs,
rowData=key_stats_tb.to_dict("records"))
app = Dash()
app.layout = [
html.Img(src=logo_link, style={'margin':'30px 0px 0px 0px'}),
html.H1('Sales Aggregations'),
html.Div([
html.H2('Key Aggregations'),
grid],
style={'width':'850px', 'height':'750px', 'margin':'0 auto'})
]
if __name__ == '__main__':
app.run(debug=True)