Shawn the...

Data Scientist

Python

Analyzing and visualizing data

SQL

Querying from multiple databases

Tableau

Creating interactive dashboards

Excel

Logging and tracking spending data

Python

Scraping, analyzing, and visualizing data

SQL

Querying from large databases

Tableau

Creating interactive dashboards

Excel

Logging and tracking spending data

After spending 40+ hours a week staring at a screen for work I proceed to spend my free time… doing the exact same thing

Projects

Created a twitter bot @StatcastAwards that tweeted the leaders in various categories (longest homer, fastest pitch, etc.) from the previous day’s MLB games. Statcast data was downloaded from baseballsavant, cleaned, entered into a database,  analyzed, formatted into a tweet, and then published. During the playoffs, graphics were created to show the most impactful moments from each game. Access to Twitter’s API was made a premium feature in February 2023 so it is not currently active.

  • Written in Python, mostly in Jupyter Notebook
  • SQLite3 library for querying data
  • Pandas library for manipulating data
  • Tweepy library for connecting to Twitter API (RIP)
  • PIL library for automating creation of graphics
  • Pybaseball library for downloading data (previously scraped with Selenium)

About five months out from my first internship, I asked what tools I should sharpen up prior to starting. Their response was that Python and specifically Pandas would be most useful. I started playing around with pitch-by-pitch MLB data because I’m a huge baseball fan. I got a little carried away and some exploratory analysis turned into a full-on passion project. Plain text tweets evolved into much more as I continually made improvements all the way through the World Series in November. While @StatcastAwards is retired after just one season (cause of death: Elon Musk), this project will always hold a special place in my heart for making me realize I am capable of much more than I previously thought and motivating me to raise my celing as a data scientist.

  • Reached 1090 followers
  • Followed by Jayson Stark, Eduardo Perez, and other local baseball writers
  • Received interaction from multiple players’ parents and team accounts
  • Entirely automated
Summary

Created a twitter bot @StatcastAwards that tweeted the leaders in various categories (longest homer, fastest pitch, etc.) from the previous day’s MLB games. Statcast data was downloaded from baseballsavant, cleaned, entered into a database,  analyzed, formatted into a tweet, and then published. During the playoffs, graphics were created to show the most impactful moments from each game. Access to Twitter’s API was made a premium feature in February 2023 so it is currently only semi-active.

Tools
  • Written in Python, mostly in Jupyter Notebook
  • SQLite3 library for querying data
  • Pandas library for manipulating data
  • Tweepy library for connecting to Twitter API (RIP)
  • PIL library for automating creation of graphics
  • Pybaseball library for downloading data (previously scraped with Selenium)
Story

About five months out from my first internship, I asked what tools I should sharpen up prior to starting. Their response was that Python and specifically Pandas would be most useful. I started playing around with pitch-by-pitch MLB data because I’m a huge baseball fan. I got a little carried away and some exploratory analysis turned into a full-on passion project. Plain text tweets evolved into much more as I continually made improvements all the way through the World Series in November. While @StatcastAwards is retired after just one season (cause of death: Elon Musk), this project will always hold a special place in my heart for making me realize I am capable of much more than I previously thought and motivating me to raise my celing as a data scientist.

Accomplishments
  • Reached 1090 followers
  • Followed by Jayson Stark, Eduardo Perez, and other local baseball writers
  • Received interaction from multiple players’ parents and team accounts
  • Entirely automated

Tweet Library

Version 1

Original Format

Version 2

Lined Up Spacing

Final Version

Added Line Breaks, hashtags

Weekly Leaders

Sent Every Monday

Season Leaders

Sent at End of Year

All Star Break

Mid-Season Awards

Most Liked

Rockies Sweep Leaderboard

Willson Contreras

Previous Favorite Player

Seiya Suzuki

Current Favorite Player

Playoffs

Most Impactful Plays

Playoffs

Statcast Leaders

Playoffs

World Series Winner

Analyzed how MLB’s upcoming ban on defensive shifting would effect the league. Used 2022 season data to segment player base and teams by their offensive and defensive shifting success. Generated visuals using Plotly, then wrote article describing findings.

  • Written in Python, mostly in Jupyter Notebook
  • SQLite3 library for querying data
  • Pandas library for manipulating data
  • Plotly for creating interactive visualizations

MLB announced a series of rule changes starting in 2023: among them a ban on shifting. This project was meant to investigate what players and teams will be most impacted by the change. I used it as a way to learn the Plotly library which has arguably surpassed Matplotlib as the premier Python viz tool. I focused on creating a theme to match my @StatcastAwards Twitter bot. I then wrote a short blog article to accompany the graphs and challenge my writing skills, which are certainly lacking. Eventually I would like to regularly write blog posts.

  • Wrote first blog post and published to Medium
  • Created attractive and informative visuals
Summary

Analyzed how MLB’s upcoming ban on defensive shifting would effect the league. Used 2022 season data to segment player base and teams by their offensive and defensive shifting success. Generated visuals using Plotly, then wrote article describing findings.

Tools
  • Written in Python, mostly in Jupyter Notebook
  • SQLite3 library for querying data
  • Pandas library for manipulating data
  • Plotly for creating interactive visualizations
Story

MLB announced a series of rule changes starting in 2023: among them a ban on shifting. This project was meant to investigate what players and teams will be most impacted by the change. I used it as a way to learn the Plotly library which has arguably surpassed Matplotlib as the premier Python viz tool. I focused on creating a theme to match my @StatcastAwards Twitter bot. I then wrote a short blog article to accompany the graphs and challenge my writing skills, which are certainly lacking. Eventually I would like to regularly write blog posts.

Accomplishments
  • Wrote first blog post and published to Medium
  • Created attractive and informative visuals

Visuals

Created an analytical baseball website locally using Flask. Connect to external database to dynamically fill pages with yesterday’s data and season-to-date numbers. Includes a page where a customized dashboard is displayed upon input for player name and stats to include.

  • Created with Flask library
  • Dynamic portions written in Python
  • Pages written in HTML
  • Some custom CSS
  • SQLIte3 library for connecting to database

As I dove deeper into the Twitter bot project, a vision began to form. I wanted to eventually create a website to showcase all the baseball-related projects that I had in mind. Knowing literally nothing about web development, this was a project for the distant future- until I got bored in class one day. I copied from CSS files from W3 and slowly started building a website locally on my laptop. It was fun, and I loved how dynamic it was. But it quickly became clear that I was very limited in what I could accomplish with my lack of CSS/HTML knowledge. So I moved to WordPress, leaving it to waste away.

  • Dynamically filled tables with recent data
  • Took user input and developed custom dashboards
Summary

Created an analytical baseball website locally using Flask. Connect to external database to dynamically fill pages with yesterday’s data and season-to-date numbers. Includes a page where a customized dashboard is displayed upon input for player name and stats to include.

Tools
  • Created with Flask library
  • Dynamic portions written in Python
  • Pages written in HTML
  • Some custom CSS
  • SQLIte3 library for connecting to database
Story

As I dove deeper into the Twitter bot project, a vision began to form. I wanted to eventually create a website to showcase all the baseball-related projects that I had in mind. Knowing literally nothing about web development, this was a project for the distant future- until I got bored in class one day. I copied from CSS files from W3 and slowly started building a website locally on my laptop. It was fun, and I loved how dynamic it was. But it quickly became clear that I was very limited in what I could accomplish with my lack of CSS/HTML knowledge. So I moved to WordPress, leaving it to waste away.

Accomplishments
  • Dynamically filled tables with recent data
  • Took user input and developed custom dashboards

Pages

Roomba decorated for my mechanical engineering senior design project.

Interfaced a LiDAR sensor with a Roomba using a Raspberry Pi to prototype an autonomous vehicle as part of my mechanical engineering senior design project. Soldered a USB C head to wire leads, which were soldered to the Roomba’s battery to power the Raspberry Pi and LiDAR sensor. Wrote Python script to drive Roomba in a predefined route while continually monitoring nearby objects using the LidAR sensor, automatically stopping the Roomba when it is about to run into something.

  • Python
  • Raspberry Pi
  • Slamtec RPlidar Sensor
  • Roomba Create 2

Every UW-Madison engineer takes a two-semester senior design course, but by this point I was fully committed to a career in data analytics. Luckily one project still piqued my interest, and neither of my groupmates voted so we got assigned it. Our prompt was to decorate a Roomba to look like the Bucky Wagon and make it autonomously drive around the ME Building. At our first meeting with our faculty advisor, he laughed and said we couldn’t do that (he was right, but we got much closer than he thought we would).

My groupmates were responsible for the mechanical engineering parts of the project (laser-printing decoration panels and building a frame to connect them to the Roomba). I was trusted to take care of the whole autonomous part of the project. It was fun, but with zero robotics experience I had no idea what I was doing.

Through much struggle I figured out how to control the Roomba from the Raspberry Pi, then how to process the sensor data, then how to put it all together. The final product was not very impressive considering all it did was drive in circles and stop before running into walls or people’s feet. But I consider that good enough to call it self-driving*.

  • Continually read LiDAR output data
  • Powered Raspberry Pi and LiDAR using Roomba battery
  • Control Roomba using Python
  • Automatically stop when facing obstacles
Summary

Interfaced a LiDAR sensor with a Roomba using a Raspberry Pi to prototype an autonomous vehicle as part of my mechanical engineering senior design project. Soldered a USB C head to wire leads, which were soldered to the Roomba’s battery to power the Raspberry Pi and LiDAR sensor. Wrote Python script to drive Roomba in a predefined route while continually monitoring nearby objects using the LidAR sensor, automatically stopping the Roomba when it is about to run into something.

Tools
  • Python
  • Raspberry Pi
  • Slamtec RPlidar Sensor
  • Roomba Create 2
Story

Every UW-Madison engineer takes a two-semester senior design course, but by this point I was fully committed to a career in data analytics. Luckily one project still piqued my interest, and neither of my groupmates voted so we got assigned it. Our prompt was to decorate a Roomba to look like the Bucky Wagon and make it autonomously drive around the ME Building. At our first meeting with our faculty advisor, he laughed and said we couldn’t do that (he was right, but we got much closer than he thought we would).

My groupmates were responsible for the mechanical engineering parts of the project (laser-printing decoration panels and building a frame to connect them to the Roomba). I was trusted to take care of the whole autonomous part of the project. It was fun, but with zero robotics experience I had no idea what I was doing.

Through much struggle I figured out how to control the Roomba from the Raspberry Pi, then how to process the sensor data, then how to put it all together. The final product was not very impressive considering all it did was drive in circles and stop before running into walls or people’s feet. But I consider that good enough to call it self-driving*.

Accomplishments
  • Continually read LiDAR output data
  • Powered Raspberry Pi and LiDAR using Roomba battery
  • Control Roomba using Python
  • Automatically stop when facing obstacles

Created number guessing game on Ti-84 calculator. Included various difficulties ranging from 0-10 to -9,999,999-9,999,999. Took input from player then returned “Higher” or “Lower”. Kept track of number of guesses and high scores (locally). Had a home screen and About Me page.

  • TI-Basic

While I didn’t start programming until learning Python in 2019, this project foreshadowed my future. In 8th grade my math teacher Mr. Klein impressed my group of friends during study hall one day by creating an animation on our calculators. All it did was move text across the screen, but it piqued my curiosity. I was soon scouring the internet to learn how to do make a game on my own. The result was Guess Me. Yes, it is painfully simple. But everyone wanted it downloaded onto their own calculator. Sadly, I lost it (and other sad attempts at games) when my calculator fully died sometime in high school. It is unknown if any copies still remain.

  • My friends all wanted it downloaded onto their own calculator
  • Foreshadowed my future long before I knew anything about programming
Summary

Created number guessing game on Ti-84 calculator. Included various difficulties ranging from 0-10 to -9,999,999-9,999,999. Took input from player then returned “Higher” or “Lower”. Kept track of number of guesses and high scores (locally). Had a home screen and About Me page.

Tools
  • TI-Basic
Story

While I didn’t start programming until learning Python in 2019, this project foreshadowed my future. In 8th grade my math teacher Mr. Klein impressed my group of friends during study hall one day by creating an animation on our calculators. All it did was move text across the screen, but it piqued my curiosity. I was soon scouring the internet to learn how to do make a game on my own. The result was Guess Me. Yes, it is painfully simple. But everyone wanted it downloaded onto their own calculator. Sadly, I lost it (and other sad attempts at games) when my calculator fully died sometime in high school. It is unknown if any copies still remain.

Accomplishments
  • My friends all wanted it downloaded onto their own calculator
  • Foreshadowed my future long before I knew anything about programming

Reviews

Best game I've ever played!
JC
Friend
Shawn is a genius!
Kaelin
Friend
Iowa sucks!
Ryan
Friend

Lots of very sophisticated stuff.

  • Everything

I get paid to do data analysis and I happen to really enjoy it.

  • Hopefully made my company money?
Summary

Lots of very sophisticated stuff.

Tools
  • Everything
Story

I get paid to do data analysis and I happen to really enjoy it.

Accomplishments
  • Hopefully made my company money?

Does this website have anything to do with data science? No. But neither does half the other stuff on this page, and I spent way too much time building this to not include it.

Built the website using WordPress and a small amount of HTML/CSS to create custom color schemes for each page.

  • WordPress
  • HTML
  • CSS

After working on the local website for a little I realized that I had no interest in learning enough CSS to build a full website from scratch. I worked through a LinkedIn Learning course to learn how to use WordPress until I had the basics down. It was time to purchase a domain. Knowing how many Shawn Riemers there are out there (and the fact that shawnreimer.com was already taken), I rushed to purchase this one before it was too late. I had no actual plan for what to use it for. I decided to just have fun with it and build something to amuse myself and showcase some of my personal interests. The result is this completely useless but maybe-mildly-interesting site.

  • Amuses myself
Summary

Does this website have anything to do with data science? No. But I spent too much time on to not include it.

Built the website using WordPress and a small amount of HTML/CSS to create custom color schemes for each page.

Tools
  • WordPress
  • HTML
  • CSS
Story

After working on the local website for a little I realized that I had no interest in learning enough CSS to build a full website from scratch. I worked through a LinkedIn Learning course to learn how to use WordPress until I had the basics down. It was time to purchase a domain. Knowing how many Shawn Riemers there are out there (and the fact that shawnreimer.com was already taken), I rushed to purchase this one before it was too late. I had no actual plan for what to use it for. I decided to just have fun with it and build something to amuse myself and showcase some of my personal interests. The result is this completely useless but maybe-mildly-interesting site.

Accomplishments
  • Amuses myself