Stop 03 · Data Manipulation & VisualizationProjects · 2/2

Interactive Data Dashboard

Part of the AI Engineer Roadmap

In short

A notebook is for you. A dashboard is for everyone else. Building one shows you can turn analysis into something a non-coder can use, which is a big part of real AI work.

A small web dashboard (Plotly Dash, Streamlit) that lets a user explore a dataset interactively — a portfolio piece that shows you can ship, not just analyze.

The purple blob turns a knob on a control panel full of dials and sliders.

Think of it like this

A control panel with knobs

In a control room, the operator turns a knob and the gauges respond instantly. Nobody needs to understand the wiring. Your dashboard is that panel: filters and sliders are the knobs, charts and numbers are the gauges, and pandas is the wiring behind the wall.

Watch it happen

One slider move in a Streamlit app

Viewer
Streamlit app
DataFrame
Chart

min order = ₹500

1/5The viewer drags a slider in the sidebar.

The big ideas

What you need to know

Plan the questions first

Decide the three questions a viewer should answer, then add only the filters and charts that help.

Filters in the sidebar

Dates, categories and thresholds go on the side. Results go in the main area.

Cache the slow parts

Loading and heavy cleaning should run once. Streamlit's st.cache_data does this with one decorator.

Deploy it

A live link beats a screenshot. Streamlit Community Cloud can host an app straight from a GitHub repo.

See it in code

Walk through the code

python
1import pandas as pd2import plotly.express as px3import streamlit as st4 5@st.cache_data6def load():7    return pd.read_csv("sales.csv", parse_dates=["date"])8 9df = load()10st.title("Sales explorer")11cities = st.sidebar.multiselect("City", sorted(df["city"].unique()))12min_amt = st.sidebar.slider("Minimum order (₹)", 0, int(df["amount"].max()), 0)13 14view = df[(df["city"].isin(cities) | (len(cities) == 0)) & (df["amount"] >= min_amt)]15st.metric("Revenue", f"₹{view['amount'].sum():,.0f}")16st.plotly_chart(px.line(view.groupby("date", as_index=False)["amount"].sum(), x="date", y="amount"))

1/4The CSV is read once and cached across reruns.

Save as app.py and run streamlit run app.py. It expects a sales.csv with date, city and amount columns, so make a small one to start.

Save yourself the pain

Common mistakes

Oops

Putting 15 charts on one page because you can.

Do this instead

Show the few that answer your three questions. Put details in an expander or a second page.

Oops

Reading the CSV on every interaction, so the app feels slow.

Do this instead

Wrap loading and heavy cleaning in @st.cache_data.

Your mission

First milestone: one filter, one chart

~40 min

Quick check

In Streamlit, what happens when a viewer moves a slider?

Go deeper

  1. 1Build a Streamlit or Dash app with at least two interactive filters/charts.
  2. 2Deploy it publicly (Streamlit Community Cloud is free) so it's linkable.
  3. 3Keep the UI focused on answering one clear question about the data.

More projects at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge