NBA Game ETL & Interactive Dashboard

ETL practice

Featured image

This project showcases a complete ETL pipeline—taking raw NBA game data from the web and turning it into an interactive dashboard. The main goal was to practice end-to-end Extract ∙ Transform ∙ Load skills.

Key Steps

  1. Extract — A Python script calls the free balldontlie API, paginates safely, respects rate-limits, and stores raw JSON data.
  2. Transform — Using pandas, the raw data is flattened: columns are renamed, dates parsed, and season/team features engineered into a tidy clean_games.csv.
  3. Load — The cleaned data is pushed into a PostgreSQL database (nba_data.games) via SQLAlchemy + psycopg2.
  4. Explore — A Streamlit app connects to Postgres, lets users filter by season and team, and visualizes score differentials.

What I Practiced

All code, requirements, and setup instructions are available on GitHub, making it easy to reproduce, schedule nightly refreshes, or plug into Tableau.