Data Analyst Portfolio

Turning messy data into clear answers

I work with SQL, Python, and Tableau to find patterns, tell stories, and help people make better decisions. Here's some of what I've built.

Tools & Skills

Query & Databases

  • SQL (PostgreSQL, MySQL)
  • dbt
  • BigQuery
  • Redshift

Analysis & Python

  • pandas
  • NumPy
  • Jupyter
  • scikit-learn

Visualization

  • Tableau
  • Power BI
  • matplotlib
  • seaborn

Workflow & Tools

  • Git / GitHub
  • Excel / Google Sheets
  • Notion
  • dbt Cloud

Case Studies

Four Years of Running: A Personal Performance Analysis
Personal Analytics

Four Years of Running: A Personal Performance Analysis

I exported four years of GPS watch data and built a full analysis of my training patterns, race performance, and recovery trends — then turned it into an interactive Tableau dashboard.

Challenge

Raw GPS exports are messy: duplicate entries, missing elevation data, inconsistent distance units across devices. The first challenge was building a reliable cleaning pipeline before any analysis could happen.

Approach

Used Python (pandas) to clean and normalize ~1,400 activity files. Engineered features like training load, weekly mileage rolling averages, and pace-per-elevation-gain. Visualized in Tableau with filters by year, activity type, and race vs. training.

Outcome

Identified that my best race performances followed a specific taper pattern I hadn't consciously noticed. Adjusted my training plan accordingly — and ran a 4-minute PR at my next half marathon.

PythonpandasTableauPostgreSQL
View on GitHub
Garden Yield Tracker: Three Seasons of Data
Personal Analytics

Garden Yield Tracker: Three Seasons of Data

I've been logging every harvest from my raised beds since 2024 — weight, variety, date, weather conditions. This project turns that log into a dashboard that actually helps me plan next season.

Challenge

The data was collected inconsistently across three seasons (different units, missing weather entries, variety names that changed). Reconciling it required careful normalization and a few judgment calls.

Approach

Built a Google Sheets → PostgreSQL pipeline using Python. Modeled yield by variety, bed location, and weather correlation. Created a Tableau dashboard with season-over-season comparisons and a planting calendar recommendation engine.

Outcome

Discovered that my east-facing bed produces 40% more tomato yield than the west-facing bed despite identical soil. Moved my tomato starts accordingly for the 2026 season.

PythonPostgreSQLTableauGoogle Sheets API
View on GitHub

More Projects

Reading the Room: NLP Analysis of 500 Journal Entries
NLP / Text Analysis

Reading the Room: NLP Analysis of 500 Journal Entries

A sentiment and topic analysis of five years of personal journal entries — exploring how mood, themes, and language patterns shift across seasons, life events, and time of day.

PythonspaCyVADERscikit-learnmatplotlib
View on GitHub

Let's work together

I'm available for freelance data analysis projects, consulting, and collaborations. If you have a dataset that needs a story, I'd love to hear about it.