slogan3

Ontwikkel een Python Script voor Data Visualisatie en Dashboarding

description

Met deze prompt kan de gebruiker complexe datasets omzetten in inzichtelijke, interactieve dashboards die helpen bij het maken van data-gedreven beslissingen. Het lost het probleem op van het presenteren van data op een begrijpelijke en visueel aantrekkelijke manier, en is praktischer dan statische grafieken omdat het interactieve elementen bevat.

prompt

Help me een Python script te schrijven dat data visualiseert en een interactief dashboard maakt op basis van de volgende dataset: <voer de dataset of het type data in>. Gebruik visualisati ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hieronder geef ik een overzicht van hoe je een Python script kunt schrijven dat een interactief dashboard maakt voor jouw verkoopgegevens, met behulp van de bibliotheken Plotly en Dash. Stap 1: Installeer de benodigde bibliotheken Open je terminal of command prompt en voer uit: ```bash pip install pandas plotly dash ``` Stap 2: Laad en verwerk je data Veronderstel dat je dataset in een CSV-bestand staat, bijvoorbeeld `verkoopgegevens.csv`. De data bevat kolommen: `datum`, `product`, en `omzet`. Stap 3: Schrijf het Python script Hier is een voorbeeld van een basis dashboard dat de totale omzet per datum en per product visualiseert, en interactieve filters bevat: ```python import pandas as pd import plotly.express as px from dash import Dash, dcc, html, Input, Output # Data laden df = pd.read_csv('verkoopgegevens.csv', parse_dates=['datum']) # Maak een app aan app = Dash(__name__) # Layout van het dashboard app.layout = html.Div([ html.H1("Verkoop Dashboard Webwinkel"), # Dropdown voor product selectie html.Div([ html.Label("Selecteer product:"), dcc.Dropdown( options=[{'label': p, 'value': p} for p in df['product'].unique()] + [{'label': 'Alle', 'value': 'Alle'}], value='Alle', id='product-dropdown' ) ]), # Graph voor omzet over tijd dcc.Graph(id='omzet-tijd-grafiek'), # Graph voor omzet per product dcc.Graph(id='omzet-product-grafiek') ]) # Callback voor interactieve grafieken @app.callback( [Output('omzet-tijd-grafiek', 'figure'), Output('omzet-product-grafiek', 'figure')], [Input('product-dropdown', 'value')] ) def update_graphs(selected_product): if selected_product == 'Alle': df_filtered = df else: df_filtered = df[df['product'] == selected_product] # Omzet over tijd omzet_tijd = df_filtered.groupby('datum')['omzet'].sum().reset_index() fig1 = px.line(omzet_tijd, x='datum', y='omzet', title='Totale omzet over tijd') # Omzet per product (alle producten of geselecteerd) if selected_product == 'Alle': omzet_product = df.groupby('product')['omzet'].sum().reset_index() else: omzet_product = df_filtered.groupby('product')['omzet'].sum().reset_index() fig2 = px.bar(omzet_product, x='product', y='omzet', title='Omzet per product') return fig1, fig2 if __name__ == '__main__': app.run_server(debug=True) ``` Hoe werkt dit? - **Bibliotheken**: - `pandas` voor dataverwerking. - `plotly.express` voor interactieve grafieken. - `dash` voor het maken van het webdashboard. - **Layout**: - Een titel, een dropdown menu voor productselectie, en twee grafieken. - De dropdown is interactief en beïnvloedt de grafieken via callbacks. - **Callbacks**: - Wanneer je een product selecteert, worden de grafieken automatisch bijgewerkt. - De eerste grafiek toont de omzet over tijd, de tweede grafiek toont de omzet per product. Met deze aanpak maak je een overzichtelijk, interactief dashboard dat je verder kunt uitbreiden met filters, meerdere grafiektypes, of andere visualisaties. **Tip:** Zorg dat je dataset correct is ingeladen en dat de kolomnamen kloppen. Pas de code aan indien nodig. Veel succes met je datavisualisatie!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een stapsgewijze uitleg voor het maken van een interactief dashboard met Python: ## Vereiste bibliotheken installeren ```bash pip install pandas plotly dash ``` ## Basis scriptstructuur ```python import pandas as pd import plotly.express as px import plotly.graph_objects as go from dash import Dash, dcc, html, Input, Output # Data inladen (voorbeeld) df = pd.read_csv('verkoopgegevens.csv') df['datum'] = pd.to_datetime(df['datum']) ``` ## Dashboard opzetten met Dash ```python app = Dash(__name__) app.layout = html.Div([ html.H1("Webwinkel Verkoopdashboard", style={'text-align': 'center'}), # Interactieve elementen dcc.Dropdown( id='product_filter', options=[{'label': product, 'value': product} for product in df['product'].unique()], value=None, placeholder="Selecteer een product" ), dcc.DatePickerRange( id='date_range', start_date=df['datum'].min(), end_date=df['datum'].max() ), # Grafieken dcc.Graph(id='omzet_trend'), dcc.Graph(id='product_performance'), dcc.Graph(id='maandelijkse_omzet') ]) ``` ## Interactieve callbacks ```python @app.callback( [Output('omzet_trend', 'figure'), Output('product_performance', 'figure'), Output('maandelijkse_omzet', 'figure')], [Input('product_filter', 'value'), Input('date_range', 'start_date'), Input('date_range', 'end_date')] ) def update_graphs(selected_product, start_date, end_date): # Data filteren filtered_df = df.copy() if selected_product: filtered_df = filtered_df[filtered_df['product'] == selected_product] if start_date and end_date: filtered_df = filtered_df[ (filtered_df['datum'] >= start_date) & (filtered_df['datum'] <= end_date) ] # 1. Omzet trendgrafiek trend_fig = px.line( filtered_df, x='datum', y='omzet', title='Omzet Trend over Tijd', labels={'omzet': 'Omzet (€)', 'datum': 'Datum'} ) # 2. Productprestatie (staafdiagram) product_df = filtered_df.groupby('product')['omzet'].sum().reset_index() product_fig = px.bar( product_df, x='product', y='omzet', title='Totale Omzet per Product', color='product' ) # 3. Maandelijkse omzet monthly_df = filtered_df.copy() monthly_df['maand'] = monthly_df['datum'].dt.to_period('M') monthly_sales = monthly_df.groupby('maand')['omzet'].sum().reset_index() monthly_fig = px.area( monthly_sales, x='maand', y='omzet', title='Maandelijkse Omzet' ) return trend_fig, product_fig, monthly_fig ``` ## Dashboard starten ```python if __name__ == '__main__': app.run_server(debug=True) ``` ## Geavanceerde visualisatietechnieken ```python # Heatmap voor dagelijkse verkooppatronen def create_heatmap(): df_heatmap = df.copy() df_heatmap['dag_van_week'] = df_heatmap['datum'].dt.day_name() df_heatmap['uur'] = df_heatmap['datum'].dt.hour heatmap_data = df_heatmap.pivot_table( values='omzet', index='dag_van_week', columns='uur', aggfunc='sum' ) fig = px.imshow(heatmap_data, title='Omzet Heatmap per Dag en Uur') return fig # Interactieve scatter plot scatter_fig = px.scatter( df, x='datum', y='omzet', color='product', size='omzet', hover_data=['product'], title='Omzet Verdeling' ) ``` ## Tips voor effectief dashboard design: 1. **Gebruik Plotly Express** voor snelle, mooie visualisaties 2. **Voeg tooltips toe** met extra informatie bij hover 3. **Implementeer filters** voor producten, datums en categorieën 4. **Gebruik responsive design** voor verschillende schermgroottes 5. **Voeg downloadopties toe** voor grafieken en data Het dashboard start je met: `python dashboard.py` en is bereikbaar op `http://localhost:8050` Wil je dat ik specifieke onderdelen verder uitwerk of aanpas?