My most recent attempt to push myself to write more yielded an article, but so far I have not followed through with that series of posts. Fortunately for me, and for you reading this now, I had another, probably more interesting, idea to write about with regards to fantasy football. While fantasy baseball is my favorite of the fantasy sports to partake in, besides dungeons and dragons, fantasy football is definitely a close second. I started playing fantasy football in the fall of 2012 against my college friends, won the league, and from there I was hooked. I have joined many a league over the years since and have had some mixed success, but I have not been able to be as successfully as I generally am with fantasy baseball.
Part of the reason I like fantasy baseball more is I have a better understanding of the advanced stats and how I can leverage them to my advantage. While there are some advanced statistics out there, I have not taken the time to fully understand them and their connection to winning fantasy football leagues. In fact, most of what I use comes from reddit or the folks over at CBS. That said, every year I try to do something new to help give myself an advantage in my leagues and this year I finally decided to act upon an idea I have had for a few years now. I have started to track the average draft position (ADP) from Fantasys Pros over time in order to determine the value of players in the preseason. Enough of this long intro, let’s get to it!
I have decided to put this data over time into a Tableau Dashboard in order to make it easily accessible to anyone who wanted to use it. For those who do not want to read anymore and get right to the dashboard, here it it: https://public.tableau.com/profile/ivthoughts#!/vizhome/FantasyFootballTrendingAverageDraftPosition/FantasyFootballADP
For those of you who want to read more about my process for putting this project together, keep reading.
About the Dashboard
The goal of this dashboard is to display the Fantasy Pros ADP data over time for the 2019 Football Preseason. The earliest data in the dashboard goes back to July 19th, 2019, which was when I completed my code for data gathering (more on that in the section below). From that date forward, I have ADP for all the players tracked by Fantasy Pros in each of the three scoring formats they have: Standard, Half Point Per Reception (PPR), and Full PPR. Users are able to use the Format Select parameter filter to switch between the different data in for each format. The additional filters I included are for the dates the data was pulled, position of the football players, football teams the players play for, and of course the players themselves. As of publishing this post, the default state of the dashboard only shows the earliest date and August 4th, 2019 of ADP data in order to to not overwhelm the user.
As for the content of the dashboard, it is a simple table with three descriptive dimensions: player name, their position, and the team they play for. Those three dimensions, along with the date field, allow for users to see the following measures over time: Rank, the player’s rank in the particular scoring format on the select date. POS Rank, the player’s rank within their position group in the particular scoring format on the select date. Difference in Rank, the difference in the player’s rank from the previous displayed date to the current date. Please note, there needs to be at least two dates selected for this field to be filled in the second and beyond dates. It will always be blank for the the earliest selected date on the dashboard. Players with a positive Difference in Rank are falling in their ADP between the two dates while the ADP of players with a negative Difference in Rank are rising. Unfortunately, this dashboard does not take the next step and provide context as to why the movement is actually happening. I have also included a change log to keep track of all the major updates I make to this dashboards (more on that further below).
My original idea was to manually pull the data from Fantasy Pros for each format, put it into a google sheet, and create the dashboard based off of that data. Steps two and three of that process remain in place, but manually copying and formatting the data for the google sheet would have been such a monotonous and time consuming process. Fantasy Pros does not make it easy to copy data from their site. Thankfully, I have some experience using Python to web scrape data and thus wrote code to do that. Additionally, I was able to format the data using the pandas Python library within the code to create a nice and neat CSV file. With the file created, I can simply copy and past the data into the google sheet and the Tableau dashboard will update with new data. Since I have the Python script to gather and format the data, which runs in seconds, I can easily add data points to data set every few days or so.
Right now, I think the dashboard in its simple state is useful as is to provide myself and users with ADP over time. However, I hope to follow up on this in the future in the following ways:
- I will definitely continue to add more ADP data for the remainder of the preseason, providing more points in time to analyze.
- I hope to put my Python code on my own github site, finally learning how to use the site in the process.
- I hope to write at least one article detailing the largest and most interesting movers in ADP over time.
- I hope to add some useful visualizations to accompany this data allowing for easier analysis.
- I hope to clean up some of the data issues with the Fantasy Pros data.
- I hope to continue this project next year in 2020 and start much sooner in order to get more data points to analyze. I hope to do perform this task for fantasy baseball ADP for 2020 as well .
If you have any questions, comments, or see any issues with this dashboard, please feel free to reach out to me on twitter or comment below. If you have a useful idea for a new feature to add to this dashboard, do not hesitate to reach out and I will do my best to get it done.
Thanks for reading and have a great day!