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
- Summary
- Tools
- Story
- Accomplishments
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
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.
- 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
Tweet Library
Version 1
Original Format
Longest Homers [ft] (2022-05-05)
1. Byron Buxton (MIN): 452 2. Brendan Rodgers (COL): 438 3. Christian Yelich (MIL): 434 — Statcast Awards (@StatcastAwards) May 7, 2022
Version 2
Lined Up Spacing
Longest Homers [ft] (2022-06-30) 1. Christopher Morel (CHC): 440 2. Oneil Cruz (PIT): 431 3. Michael Harris II (ATL): 424
— Statcast Awards (@StatcastAwards) July 1, 2022
Final Version
Added Line Breaks, hashtags
Longest Homers 💣
— Statcast Awards (@StatcastAwards) July 11, 2022
(7/10/2022)
1. Nelson Velázquez @Cubs
428 ft
#ItsDifferentHere
2. Bo Bichette @BlueJays
427 ft
#NextLevel
3. Tyler Stephenson @Reds
425 ft
#ATOBTTR
Weekly Leaders
Sent Every Monday
🚀 The ROCKET AWARD 🚀
— Statcast Awards (@StatcastAwards) August 30, 2022
(highest exit velocity)
for 8/22 to 8/28
goes to…
🏆 ONEIL CRUZ @Pirates
who barrelled a single
on 8/24
at 122.4 mph!#LetsGoBucs
Season Leaders
Sent at End of Year
2022's Slowest Pitches 🐌
— Statcast Awards (@StatcastAwards) October 7, 2022
1. Frank Schwindel @Cubs
32.3 mph (6/15/22)
#ItsDifferentHere
2. Frank Schwindel @Cubs
32.7 mph (6/15/22)
#ItsDifferentHere
3. Donovan Walton @SFGiants
33.7 mph (6/3/22)
#SFGameUp
All Star Break
Mid-Season Awards
⭐️ ALL-STAR BREAK AWARDS ⭐️
— Statcast Awards (@StatcastAwards) July 20, 2022
Lowest Pitch Swung At
(ft below plate)
1. Jonathan India @Reds
-1.68 ft
#ATOBTTR
https://t.co/GVm4KvkD4G
2. Giancarlo Stanton @Yankees
-1.36 ft
#RepBX
3. Brian Serven @Rockies
-1.16 ft
#Rockies#AllStarGame
Willson Contreras
Previous Favorite Player
Longest Homers 💣
— Statcast Awards (@StatcastAwards) August 19, 2022
(8/18/2022)
1. Willson Contreras @Cubs
447 ft
#ItsDifferentHere
2. Andrew McCutchen @Brewers
415 ft
#ThisIsMyCrew
3. Mark Canha @Mets
412 ft
#LGM
Seiya Suzuki
Current Favorite Player
Longest Homers 💣
— Statcast Awards (@StatcastAwards) September 12, 2022
(9/11/2022)
1. Seiya Suzuki @Cubs
435 ft
#ItsDifferentHere
2. Michael Harris II @Braves
433 ft
#ForTheA
3. Brandon Nimmo @Mets
426 ft
#LGM
Playoffs
Most Impactful Plays
ALDS Game 1 – (10/11/22)
— Statcast Awards (@StatcastAwards) October 12, 2022
Mariners @ Astros#SeaUsRise#LevelUp#Postseason pic.twitter.com/EPjGJtnISf
Playoffs
Statcast Leaders
2022 MLB Playoffs
— Statcast Awards (@StatcastAwards) October 9, 2022
10/8/22 Statcast Leaders#Postseason pic.twitter.com/bRY5mHqiWI
Playoffs
World Series Winner
The Houston Astros are 2022 World Series Champions🏆
— Statcast Awards (@StatcastAwards) November 6, 2022
WS Game 6 – (11/5/22)
Phillies @ Astros#RingTheBell#LevelUp#WorldSeries pic.twitter.com/Fjmli4xVXw
- Summary
- Tools
- Story
- Accomplishments
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
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
Visuals
- Summary
- Tools
- Story
- Accomplishments
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
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
Pages
- Spring 2022
- Python
- Raspberry Pi
- Summary
- Tools
- Story
- Accomplishments
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
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
- Fall 2013
- TI-Basic
- Summary
- Tools
- Story
- Accomplishments
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
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
Reviews
- Everyday
- Python
- SQL
- Tableau
- Excel
- Summary
- Tools
- Story
- Accomplishments
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?
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?
- Spring 2023
- WordPress
- HTML
- Summary
- Tools
- Story
- Accomplishments
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
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.
- 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
Copyright 2023 | All rights reserved