Data Analyst | Musician
Email me
View My LinkedIn Profile
Here is the Tableau Public link for this project.
Recently, I watched Moneyball for the first time, and I wonder why I never watched it sooner. Baseball is not my favorite sport, but I knew that stats and analytics has transformed other sports as well, including basketball. It’s a dream of mine to work for my hometown team, the San Antonio Spurs, one day. While I never played basketball outside of recreational leagues, I know I can still apply my statistical and mathematical knowledge to be of value to any team.
In this project, I practiced my data visualization skills on the most recent NBA season’s data. While these aggregations and summaries are a far cry from the predictive models and sabermetrics that pro team data professionals use, they’re at least a solid stepping stone into that world. I had a lot of fun diving into the data, and I hope you will too!
Some highlights from this project:
Keep reading to find out how I got there!
The data set is Basketball Reference’s 2024-2025 NBA Player Stats: Totals table. This trusted site provides excellent summary data for teams, players, and seasons. I had to copy it as table separated by commas, meaning I had to do some work in Microsoft Excel to put the values into separate rows and columns. To do this, I simply used the “Text to Table” function, listed commas as the delimiter, and the table was created.
Modern basketball is characterized as being “positionless” - since the 3-point shooting revolution, players of every position and size are expected to space the floor with their ability to shoot. As a result, it is rather normal (perhaps expected) for frontcourt players (forwards and centers) to have 3-point shooting ability. I created a heatmap to visualize how efficient each position was at shooting the 3-ball, and I also organized it by team to see which teams had more success in this regard.
With the position and team pills in the column and row shelves, I had to do some calculations in Tableau to get accurate average shooting percentages. Since volume is not accounted for when taking the “average of averages,” I created a simple formula in Tableau which divided the sum of 3-pointers made by the sum of 3-pointers attempted (by each position):
SUM([all_rows (nba_project)].[3P])/SUM([all_rows (nba_project)].[3PA])
I then used this formula for color and text pills so that lower shooting percentages would be lighter, while higher percentages would be darker. The result was this:
First, the blank space for Memphis’ small forwards is there because there were simply no players listed as small forwards (according to basketball reference). This is further evidence of positionless basketball - the absence of a small forward was not the result of negligence by the general manager, but rather a consequence of the fact that there are multiple players who can fill the “wing” role on the court, even if they’re primarily frontcourt of backcourt players.
Second, one of the main highlights for me is the high 3-point percentages of centers from the Nuggets and Knicks. They’re shooting over 40 per cent, which is a really good mark - stretch bigs like Karl-Anthony Towns and Nikola Jokić are largely to blame, of course. Speaking of Jokić,
These three statistics are the most important when making a glancing assessment of a player’s production in the league, and Nikola Jokić is good at racking up all of them. The 3-time MVP and triple-double machine is one of the greatest players of all time, and probably the most skilled center of all time. The bubble chart I created does an excellent job of showing how much of a unicorn he is.
The chart is a scatterplot, but with four dimensions. The x and y axes denote total points and assists, respectively. To show rebounds, I added the TRB (total rebounds) stat to the size marker, meaning larger dots correspond to high rebound numbers. Lastly, I added a color dimension for position - each color refers to one of the 5 positions. What resulted was a dynamic chart that has a lot to say:
The Joker’s dot is not only seated at the top right of the chart, but is also pretty big. Many players have similar or even better point and assist counts than Jokić, but none of them have quite the same output on the glass besides Giannis, who happens to only have a little over half of Jokić’s assist count. In short: Jokić can do it all, and he is one-of-a-kind.
Another stand-out worth talking about is SGA. He led the league in scoring, and not by a little bit. His dot is at the far right of the chart. It’s hard to argue against his case for MVP, which he happened to win, alongside the franchise’s first championship in Oklahoma.
Lastly, if someone knew nothing about basketball, this chart could help them make a key inference about the center position - the blue circles tend to be bigger than the others. This means they get more rebounds, which one can guess means that those players are the ones typically concerned with rebounds. And this person would be right - the centers are usually the tallest on the floor, grabbing boards and protecting the rim. As mentioned, though, centers who can only do those two things (unless they’re super, super good at them, like Rudy Gobert) have begun to struggle to find a place in this 3-point-crazed sport. This is an example of how data visualization can lead to key inferences about the world around us.
I created two charts that dealth with team scoring distribution - one showed the team’s season total point count by player, and the other by age group. I used a stacked bar chart where height denoted points, columns represented teams, and section sof the bars denoted players. I added a text label to see some of the big contributors off the bar. Now, NBA rosters have around 15 people, so things got a bit crowded, and the result was a chart that is not really ideal for that reason, but it was still interesting to see:
There are way too many colors and there’s only room for like seven names. But there is still insight to be gained. Our unicorn Jokić is in the spotlight again, making up a large section on the Nuggets’ bar. One team that stood out to me was my very own San Antonio Spurs - no single bar took up a huge area, like we see for SGA and the Thunder. The distribution was fairly even, which could mean that the team didn’t really have a designated scorer or go-to-guy (could be fair - despite having cornerstone and Rookie-of-the-Year Victor Wembanyama, the team is really young and building an identity), or they are really good at sharing the ball. In my limited watching of Spurs games this past season, I am more inclined to believe the former is the true, although I know our ball movement has improved.
The other stacked bar chart is much easier to read, and much more effective. It is organized by age group:
This chart, like the other one, is sorted by total team points in descending order. It’s really good at showing which teams’ scoring loads are carried by younger or older players. The Grizzlies, for example, have only about 1.6% of their scoring from players who aree at least 30. Compare that with the Bucks, over half of whose points came from that age bracket. The Clippers and Warriors have similar distributions. This chart is really useful as a way to visualize team age - typically, metrics like average team age are used, but this chart takes into account the scoring load of the age groups instead of just estimating age.
The last chart I made was a treemap emphasizing assist counts for players. I assigned each position a color and each player a box. The size of each box denotes the relative number of assists the player completed. Here’s the chart:
I highlighted Giannis’ square in the power forward section as yet another example of the blurring lines between the positions. Historically, the power forward position has not been known for playmaking ability, but players like Giannis have grown to carry that load in today’s game. Besides that, players like Jokić, LeBron, D-Book, and Trae Young (the league leader in Assists) stand out in their positions as playmakers.
I organized the charts into Tableau Story mode, so if you would like to check out the full visualization, check out this link.
This project has definitely inspired me to keep learning about sports analytics. Everyone knows that Jokić is super dominant, and that Trae Young is an incredible playmaker, but getting to see those things quantified and the degree to which they are true gave me a deeper respect for their game. I love seeing my teams win, and I know that using data and insights like this can really make a difference for a team, as we see in stories like Moneyball. I also got to see how versatile Tableau is - it’s an incredible BI tool, and I can’t wait to keep building my skills in it!
As always, I’d like to thank you so much for reading about my projects! Feel free to reach out and connect with me on LinkedIn. Any input and advice is appreciated!