All Time NBA Point Guards versus John Stockton

Visualizing the Great NBA Point Guards

This is a data visualization project many years in the making.  I had taken a D3.js class in an effort to add another arrow to the business intelligence quiver.  I had gotten to a certain point but could not get over a couple bugs and have let it sit for years on the backburner. 

The premise of this post, when I first conceptualized what I wanted to do, was to not forget about John Stockton as one of the all-time great point guards in the NBA.  Humans are prone to recency bias.  It’s been over 20 years since he has retired and emerging talents like Luka Doncic and Shai Gilgeous-Alexander will continue to come into the NBA causing us to forget about some illustrious careers of yesteryear.

I can’t fault anybody for taking Magic Johnson or Steph Curry as their all-time point guard due to each of those individuals having won multiple championships, multiple MVPs, and the way they each impacted the game.  I would say how amazing is it that John Stockton was able to statistically differentiate himself in so many categories.  

There are only so many times a basketball can be shot during a game and to compose a team strictly of scorers has repeatedly proven to lead to discontent.  A player like John Stockton helps alleviate the potential tension of needing to ensure points are disseminated across the team due to his pass-first mentality.  Yet adjusting the chart to show “True Shooting Percentage” and “Effective Field Goal %” will clearly convey that John Stockton is more than capable of providing you with a bucket if needed.  

Some additional notes on the above chart regarding who is and isn’t included.  The NBA didn’t keep track of steals before the 1973-74 season.  Historic greats like Oscar Robertson and Bob Cousy would not have a record of not only that particular statistic, but more complex metrics like Value Over Replacement Player (VORP) as well.  

There are a lot of very talented players in the NBA that have not had the longevity of career yet to include on this data visualization.  Magic Johnson played in 906 regular season games.  So I made the cutoff 900 regular season games played to qualify.  The data represented in the cart was accurate as of the 2024 All-Star break. 

Notable players not included with their corresponding number of games played in parentheses as follows: Damian Lillard (822), Deron Williams (845), Kevin Johnson (735), Mark Price (722), Kyrie Irving (705).  
 
 

Enhancing with ChatGPT

One of my favorite things about this project was utilizing artificial intelligence to resolve some issues I was having.  Originally the dots on the chart were a solid red color.  You had to click on the circle for the tooltip to help you know who the dot represented.  I could have assigned a color based on primary jersey color, but that does not provide as smooth of an experience as the images does.  

In the dataset I included an image URL for each player profile on Basketball-Reference.com.

				
					 {"Player":"John Stockton","Assists":15806,"Steals":3265,"Games":1504,"eFG":0.546,"Efficiency":21.83,"TS%":0.608,"Win Shares":207.7,"VORP":106.5,"image":"https://www.basketball-reference.com/req/202106291/images/headshots/stockjo01.jpg"}
				
			

I then engineered the following prompt:  

“As a computer engineer specializing in web development with HTML, CSS, and JavaScript scan the following code.   Make CSS adjustments to the svg circles so stroke equals black and stroke-width is 5 pixels.  Use the dataset “image” url to fit the photo of the player inside the circle.” 

I then plugged in my code and ChatGPT manipulated my code adding this piece of functionality making the end result much more aesthetically pleasing.  

There are a few more enhancements I’m working through.  For example utilizing the .transition() function to animate a smooth transition for the circles as the values adjust.  However, I’ve learned that artificial intelligence is not quite creating bug-free code just yet.  

Final Thoughts

I contemplated changing this to a different topic for a couple reasons.  

First, in a recent interview a former scorekeeper turned team executive, Alex Rucker, disclosed a practice of inflating stats during the 1990s, even citing specific examples by name including John Stockton.  I cannot refute the probability of this claim, but have a hard time completely discounting the correlation of total games played as being a larger indicator of how John Stockton became the all-time leader in both assists and steals.  Also, you cannot deceptively boost made field goals and efficiency as a result of not carelessly turning the ball over.  I also can’t help but draw the comparison of the baseball steroid era; yes, Barry Bonds was taking steroids, but so was the vast majority of other players during his time and yet he still differentiated himself as THE slugger of his generation. 

Second, his public conduct in regards to COVID restrictions has made him somewhat of a controversial figure.  I do appreciate hearing as many viewpoints as possible on issues to try to become as informed as possible. Yet, I have concerns with some of the arguements of his perspective, however that does not have to diminish from his accomplishments as an athlete. 

In conclusion, happy birthday to one of the top 5 influences on how I patterned my playing style.  I doubt I will see either of his records break in my lifetime. 

Cohort Analysis via NBA Drafts

Finding vs Retaining

It can cost a business anywhere from 5 to 25 times the amount to get a new customer as opposed to retaining an existing customer.  Customer consistency can be a strong indicator of having identified your target audience or a value proposition that is solidifying your position in the market.  Similarly companies are interested in retaining employees as it can cost thousands of dollars per the sunk cost of the onboarding process.  

Likewise, NBA teams (really any professional athletic team) spend thousands in scouting prospective talent, hiring family and friends as employees in an effort to gain goodwill, travel expenses when participating in team functions or games, etc.  It can be detrimental to a franchise to draft a highly proclaimed player and then turn around and part ways by the end of their rookie contract.  

 

Cohort Analysis for Measuring Consistency

“If everyone is moving forward together then success takes care of itself”

Team chemistry in the business or sport setting isn’t always critical to success but can be a significant help.  There’s something to be said about the consistency in the 2010s with the Golden State Warriors having Steph Curry, Klay Thompson, Draymond Green, Andre Iguodala, and Steve Kerr.  The same a decade before with the San Antonio Spurs having Tim Duncan, Manu Ginobili, Tony Parker, Bruce Bowen, and Greg Popovich.

Spending time together helps groups understand personalities, behaviors, and communication preferences.  When social norms are put in place there is a natural flow that follows by not needing to establish rules for meetings or other interactions. 

Cohort analysis is a technique used to tie a metric of retention to a specified group.  A software company releasing new features on a monthly basis can use cohort analysis to understand how customers churn.  A university wanting to know how well they are graduating students (versus dropping out) could use cohort analysis.  The NBA as an organization might be interested in knowing how long players are staying in the league and that is where the rest of this post will focus.  

All thanks to Greg Reda for being the first (that I found) to post a comprehensive Python workflow back when I was trying to learn Python for data analysis.  His original post that I patterned my own code around is here.  There is a post I have subsequently found by a likewise intelligent guy named Eryk Lewinson that is here.  I haven’t done an extensive side-by-side comparison of the two scripts to determine how similar they truly are.  I’ve noticed that both use the Seaborn Heatmap as the visualization package of choice, but I do like that Eryk’s includes a measure of how large the initial cohort size is.  I’ll be sure to include that in my own python notebook in the future. 

Breaking Down this Methodology

cohort analysis chart generated by the python seaborn package

This can seem a little daunting to process but we’re going to really break down how to read this graph.  The left vertical border (y-axis or moving top to bottom) shows the year (or time period of your choice) in which a new cohort is established.  The bottom horizontal border (x-axis or moving left to right) shows how that initial group (regardless of starting headcount) decreases over time.  The time periods represented by both the y-axis and the x-axis are typically the same.  So this could be yearly, quarterly, monthly, etc. At least I have never seen this chart where the time periods are different.  

In this instance the top row is the rookie class that involved LeBron James, Dwayne Wade, and Carmelo Anthony.  The first column represents their first year in the league.  The second column signifies the second year (2004) and the value inside the box shows how many of the players from that specific cohort (in the form of a percentage) were still in the league.  

The second row represents the 2004 draft class composed of players like Dwight Howard, Ben Gordon, and Shaun Livingston.  However, the second column represents 2005 instead of 2004 being this group’s second time frame.  

As you move towards the right following a specific cohort group, players will get injured or won’t be contractually renewed.  Starting in the top left corner and moving to the top right corner we see that out of all the players drafted in 2003, by the time 13 years had passed 37% were still in the league.  

cohort analysis of nba drafts with captions to help provide context

By year 4 of their NBA careers 86% of the 2009 draft was still in the league unlike the 2012 draft where almost half of the rookies drafted were no longer around.  What caused this significant difference?  Were there rules introduced in 2012 that made it harder for players to remain in the league over time? If you look at the values for all draft classes for the 4th time period of all cohorts it appears as though the average value is anywhere from 70-60 percent.  58% isn’t too far below that norm.  It just seems as though 86% by the 2009 draft class was significantly high and maybe we can identify what either prepared this incoming class to perform at a higher level or was there something favorable about the league itself from 2009 – 2012 that made it easier for this draft class to persist. 

Showing how to read a cohort analysis heatmap year over year for a group

You might be inclined to want to understand how time periods align.  In this example I’ve marked how you can read this chart for a given calendar year.  However, performance based on a given time period isn’t really the point of this chart.  We care about the groups themselves otherwise we would utilize more of a bar chart layout. 

This shows us the total number of players in the league by year with draft class designated by color.  It is apparent that the count of players decreases by year, but knowing which group is shrinking the most or if it is consistent across all groups can be difficult to assess without additional labels.

Bar Charts grouped by Draft class can serve as a substitute if we are dealing with a very limited number of groups or time periods.  This could be a useful visualization to utilize after an initial review of our starting cohort chart.  However, it would be easy to forget these below highlighted bars are NOT the same calendar year but the same Nth year after joining the league.  

Bar chart of active nba players year over year segmented by draft class year

What's Next?

Bar Charts grouped by Draft class can serve as a substitute if we are dealing with a very limited number of groups or time periods.  This could be a useful visualization to utilize after an initial review of our starting cohort chart.  Now that we understand how to read a cohort chart and we have identified some favorable groups, what do we do?  Various analytical techniques can be implemented to help point to actionable insights.  

The first and simpler tool would be segmentation.  77% of the 2009 draft class lasted beyond the typical 4-year rookie contract.  What if we further drilled down by conference?  Were players significantly more successful coming from the ACC vs the Pac-12?  Did more of these players shoot a higher 3-point field goal percentage?  Or were they really just taller and possess an amazing vertical jump as opposed to other draft classes.  

A second option could be logistic regression.  Using a robust dataset derived from this cohort (I would combine the 2003 cohort as well into that dataset) for training a machine learning model, we would then plug individual prospects into the model and get a score indicating the probability of that player lasting in the NBA.  

There are others but the focus of this was to help you better grasp the use-case of the cohort chart and how to read it.  Please feel free to drop me a comment if I have errored, overlooked, or could further explain something.  

Top 5 Leadership & Management Books

"Leadership is a process, not a position" John C. Maxwell

There are countless publications centered on the idea of becoming a superior manager in the workforce setting.  Business school accreditation places heavy emphasis on thought leadership and social impact, so typically at least one ethics/leadership class is part of the curriculum.  Plus administrative workshops are typically offered by companies that want to develop internal talent. 

I’ve gone through a lot of books (as well as an MBA) in an effort to improve myself as a leader.  This limited list of recommended readings are in my opinion the best to start with when moving towards developing tactical abilities and emotional intelligence for those in supervisory roles.  

If you are so inspired to add any of these to your Amazon cart, you can do so by clicking below on the image of the cover

So my top 5 management books in no particular order….

Radical Candor

Kim Scott provides a framework for guiding your conversations towards challenging directly yet caring personally for individuals and teams in the workplace setting.  The second part of this book is a compilation of techniques for those that want to run effective performance reviews, 1-on-1s, and other common managerial functions.  

This was the first book I’ve come across that really broke down the managerial vs individual contributor career paths.  The author refers to these two employee types as “rockstars” and “superstars”.  How to recognize the difference between these two motivating mindsets and setting up each for success.  

There is also a really constructive section on recognizing when it is time to fire somebody and how to handle the situation with empathy.  

Multipliers

This book performs a deep dive on the dichotomous approach of two types of leaders, diminishers and multipliers.  Diminishers deplete the motivation and drive from their employees.  Multipliers enhance productivity and workplace satisfaction via empowering their employees.  A key principle is Diminishers can be and usually are rock stars, but they become a bottleneck or even a hindrance the rest of the group.  

There is a chapter on “why” and a chapter on “how” to become a Multiplier.  The other 5 chapters contrast the approaches of a Multiplier vs a Diminisher on various managerial topics such as aligning resources, talent acquisition, challenging employees, and decision making

No Rules Rules: Netflix and the Culture of Reinvention

Reed Hastings, founder of Netflix, lets us behind the curtain and educates the reader on the seemingly unorthodox policies that drove the initial culture and success of the company.  

Imagine encouraging your employees to interview with other companies actively recruiting them.  Then turning round and telling you how much the offered salary was to ensure you are paying top end of the market.  Tell you employees you value them by not compelling them to start a bidding war over salary. 

Efficiencies are derived by maximizing the pool of talent in your organization.  Are you willing to fight for every single employee because of their high commitment to their role and the valuable contributions they have made?  Average employees at Netflix don’t last and are provided a severance package to help them along as Netflix strives to only surround themselves with the best.

Rework

I suppose a re-occurring theme with me is thinking-outside-the-box.  This book is like a movie loaded with amazing one-liners.  There is a just a lot of easily digestible thoughts that are glorious because of their simplicity or attention grabbing due to what is seemingly unconventional.  

Topics covered include: Entrepreneurship, Strategic Thinking, Operational Effectiveness

“Everything is debatable.  But when you stand for something, decisions are obvious.”

“The way to find the epicenter is to ask yourself this question: If I took this away, would what I’m selling still exist?“

“In business, too many people obsess over tools, software tricks, scaling issues, fancy office space, lavish furniture, and other frivolities instead of what really matters. And what really matters is how to actually get customers and make money.”

Fifth Book - To Be Determined....

Well this is slightly embarrassing.  As of the original published date I’m only at 4 titles so far.  I agree it is hard to have a top 5 management book list without a fifth book.  There are a few books that are in the mix.  I would consider it a little shameful to drop 3-4 more affiliate linked books and call it a “tie”.  So while I try to focus on getting this out quickly I’ll revisit this again when there is a clear 5th favorite book.  

In Conclusion

In my opinion these books will provide the largest ROI on time spent and will be referenced repeatedly in times of need, or should be referred back to until the experiences and wisdom shared becomes a natural part of your managerial philosophy.  

Visualizing my Goodreads with Tableau

Click on a bar for category or year (or both)

Why I built it

To show that a not only a business with Tableau Server could embed dashboards on a website behind a login page.  But if you have a simple enough use case anybody could have a reason to.  Also, putting out my two cents on the books I’ve read.  

How I built it

Version 1 Logo & Styling

my first logo

Building my own website has been on my New Year’s Resolution list for a decade.  The reasons behind why this was important to me are more clearly explained in the “About” page.  The conflict I felt that contributed to the delay is as follows:  

Choosing a color scheme

There is a degree of insecurity regarding my ability to create anything that would provide any entertainment or value; but also there has been the psychological barrier of being too picky with trivial things like styling of colors, fonts, and imaging.  I just had to embrace that it’s better to get something made and that I can iterate and change as I went along.  Plus, color preferences are completely subjective.  Individuals prefer certain colors over others for a variety of reasons.  There are a number of color combinations adopted by professional sports teams that have a special place in their respective fan’s hearts, yet would be considered highly questionable by those that aren’t enthusiasts of that organization.  

Finding Inspiration

For this first version of the website I wanted to lead with cooler hues, primarily consisting of blue, green, and violet, but were vibrant and bright.  Utilizing the psycholody of color theory I was more interested in conveying calm and stability rather than overwhelm with passion and power projected by warm colors.  I also wanted to throw back to things from my youth.  Being a child of the 80’s I leaned toward something that could be featured in a retro wave design.  I also had a pubescent run with Candie’s for Men cologne.  

Canva Color Wheel

If you have a particular photo or image you are wanting to incorporate or draw inspiration from, I would recommend something like coolers.co to upload an image you have and it will provide the HEX or RGB codes.  Canva’s color wheel was what I chose to went with and experimented until something just clicked into place.  

choosing a color scheme with canva

I took a design class in 2021 that stressed building upon your range of colors to pick from.  Not sure how much I’m actually going to pull from this but I’ve built upon the initial colors based on consistent adjustments of saturation and brightness.  

spectrum of colors

Creating a Logo

Although I’m initially going for speed of delivery to learn and tweak, it seemed like a modification to the letter K was too straightforward a choice.  A filtered headshot of some sort also seemed unchallenging.  I wanted to go with something close to my heart, family.  I pulled from the primary symbol of the Farnsworth family crest, a duck.  

Farnsworth Family Shield used to inspire my logo

A duck is also significant to me personally for another reason.  I became engaged to my wife at the Peabody Hotel in Memphis Tennessee which is infamous for having ducks that live at the building and spend their day in the main lobby fountain.  The symbolic meaning of ducks throughout the various cultures is varied.  Some of my favorite themes found across cultures are balance, adaptation, and family.  

One of my mentors once said to live like a duck, keep your head steady but always kicking to move forward in life.  

I wanted to take this animal and incorporate a digital feel to it given my data-centric career and having grown up largely with an 8-bit Nintendo gaming system.  

PixilArt.com

First step involved adding my new custom colors to the default palette.  I applied a gradient background consisting of my chartreuse web and aqua knowing this would be the filler to the black outline.  Filled in the beak with the electric violet.  

Creating a logo with pixilart

ProfilePictureMaker.com

After downloading the file I went to profilepicturemaker.com to put it in a rounded format with a narrow black border.  As you can see in the UI for ProfilePictureMaker.com you can pick a solid color or a gradient and adjust the degree of opacity.  Something to be mindful of is the ability to thicken the border and add text to it.  Which can be useful for including a brand name or campaign/slogan.

Ideas for your own logo/colors

When it comes to building out your own logo or color scheme I will provide a list of ideas to use by itself or combine a couple of these ideas into one.  

  • Family crests or symbols derived from surnames (E.g. Garcia meaning “Bear” or Gonzalez meaning “Noble Warrior”)
  • Religious or mythological symbols that are especially meaningful (E.g. Yggdrasil, Adinkra symbols, etc.)
  • Things pertinent to the place of your upbringing or pivotal moments of your life.  
The key is find something that has a strong emotional or spiritual connection and the perfect thing will find it’s way.  

Don't forget accessibility!

First and foremost accessibility is not just about the color combinations you select and ensuring they are distinctive from one another.  Much smarter and detailed thoughts about this topic as a whole can be found here.  

Now having said that it is important to be mindful to the fact there are various forms of colorblindness in the world and not just the most common red-green instance.  I took the following image from Wikipedia.  

So be sure that the theme you pick passes the accessibility test.  Go to color.adobe.com/create/color-contrast-analyzer to see how well your colors contrast for readability.  

verifying accessibility and readability with adobe

A few tools for logos

  • wix.com/logo/maker/
  • logodesign.net
  • designevo.com

Getting started with colors

  • coolers.co
  • colorhunt.co
  • color.adobe.com/create/color-wheel

Update 9/18/22 to Version 1.1

Some would say you can’t really have an update to something if it hasn’t been released to the public yet but as I’ve been writing and experimenting I’ve already found some things to be a little more problematic then I’m wanting to deal with.  

For example as much as it hurts my University of Utah allegiance I can’t keep the #FF0800 red as suggested by Canva.  It just clashes too much with everything else for my liking.  Plus I want a few more colors to be able to choose from.  So we keeping 3 of the original selections but thanks to Coolors.co I’ve been able to come up with the following.  How soon make some of these changes has yet to be determined but hopefully we make it at least a few months before blowing this color combination up.  

v1.1 update to color scheme

Conclusion

Thanks to my wife and mom for bearing with me through this entire post since nobody else will probably make it this long through my first post.  If there is a mystery third or fourth person still reading I hope some of the tools referenced provide some usefulness to you.  I’m excited to see how the colors change as I learn more about design and test things out here.  The duck will potentially receive some cosmetic treatment over time.  However, I wouldn’t plan on it going away any time soon.