ALL PROJECTS/DATAINSIGHT DASHBOARD

Overview

A client came with a recurring, unglamorous problem: every new dataset that arrived had to be opened, squinted at, and manually checked before anyone could trust it. How many rows? How many columns are half-empty? Are there duplicates? Which fields are categorical and which are numeric, and what do their distributions actually look like?

The brief was a tool that answers all of that for any dataset, with no configuration — upload a file and read the answer. What makes that harder than it sounds is that the tool cannot know anything about the data in advance: it has to decide, per column and at runtime, what kind of thing it is looking at and how it should be drawn.

The result is a Streamlit dashboard that takes CSV and Excel files, reports the shape and health of the data in four headline numbers, and renders a set of distributions where every chart type was inferred rather than chosen by a human. It was built for a Fiverr client in Switzerland.

Problem

A dashboard built for one known dataset is easy. A dashboard built for any dataset has three problems the first one never has.

You cannot pre-configure the charts. With an unknown file, nothing can be hard-coded: not which column holds a category, not which holds a measurement, not how many bins a histogram needs. Every one of those decisions has to be made from the data itself, at the moment it is drawn.

Real datasets break naive charts. A column with two thousand distinct values — an identifier, a free-text field, a timestamp — will happily render as a bar chart with two thousand bars, and take the whole visualisation down with it. A generic tool that has not thought about this produces something unusable on precisely the messy real-world data it was built for.

A filter that only half-applies is worse than none. If a user narrows the view to three columns, every panel has to agree: the table, the null breakdown and the duplicate breakdown all have to be talking about the same three columns. A dashboard where one panel silently keeps showing the full dataset is quietly lying.

System Design

How It Works

01/04
01

A file becomes a health check

The first ten seconds — what a user learns before looking at a single chart.

  1. 1One or more spreadsheets are uploaded; the sidebar switches between them
  2. 2The active file is read into a frame — CSV, XLSX or XLS, decided from the file itself
  3. 3Rows, columns, total nulls and duplicate rows are computed and shown as four headline metrics
  4. 4Those four answer whether the file is worth trusting before any chart is drawn
02

A filter narrows everything at once

Why no panel can end up describing a different dataset from its neighbour.

  1. 1Columns are selected in the sidebar multiselect
  2. 2The selection produces a single filtered frame
  3. 3The table and both quality charts all read that same frame
  4. 4Every panel recomputes together, so the view is internally consistent by construction
03

The data chooses its own charts

The core of the tool — inference instead of configuration.

  1. 1Every column is inspected in turn, and its distinct-value count and type are read
  2. 2Text columns become a bar chart of value counts; numeric columns become a histogram binned from that column's own range
  3. 3Columns with more than twenty distinct values are added but start hidden behind the legend
  4. 4Unnamed spreadsheet index columns are skipped entirely, so the chart shows data rather than bookkeeping
04

The detail sits underneath

How the quick read stays quick without hiding the specifics.

  1. 1Column data types are listed so the inferred handling can be checked
  2. 2An entry number is generated so rows can be referred to unambiguously
  3. 3Full summary statistics are rendered for the numeric columns
  4. 4All of it sits below the headline metrics and the charts, in that order

Key Features

  • Works on any dataset — no configuration, no schema, no setup step
  • Multi-file upload across CSV, XLSX and XLS, with a sidebar switcher for moving between datasets in one session
  • Four headline health metrics — rows, columns, total nulls and duplicate rows
  • A sidebar column filter every panel below respects, so nothing drifts out of step
  • Proportion charts for nulls and duplicates, so data quality is a glance rather than a calculation
  • Automatic chart selection per column — bar charts for categories, histograms for numbers, bins computed from each column's own range
  • High-cardinality columns kept but hidden behind the legend, so a wide or messy dataset stays readable
  • Spreadsheet index columns skipped automatically, plus data types, entry numbering and full summary statistics underneath the visual read

Outcomes

  • Delivered a dataset-agnostic exploration tool: any CSV or Excel file can be dropped in and read in seconds, with no configuration step
  • Made chart selection automatic — the type, the binning and the visibility of every series are decided from the column itself at render time
  • Kept the tool usable on real, messy data by handling high-cardinality columns and spreadsheet index artefacts explicitly rather than letting them break the visualisation
  • Made the column filter authoritative across every panel, so the numbers and the charts can never describe different subsets
  • Put data-quality answers first — rows, columns, nulls and duplicates as headline metrics, with proportions charted rather than buried
  • Delivered as a self-contained tool the client runs locally — no infrastructure to stand up, no deployment step and nothing to maintain

More work