{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PCA Demo – Data 100, Fall 2019\n",
"\n",
"by Suraj Rampure (suraj.rampure@berkeley.edu) and Mansi Shah (emansishah@berkeley.edu)\n",
"\n",
"
\n",
"\n",
"This notebook was designed to supplement Discussion 7 (Lab 8) in Fall 2019. It is not meant to be a substitute for lecture or other readings; rather, it's meant to provide an example of PCA in action, and explain steps along the way."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "XigoBq-XRbYg"
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "SLxuVQCCiAXP"
},
"source": [
"## Getting the Data\n",
"\n",
"In this demo, we will be performing PCA on player data from the 2018-19 NBA season. You can learn more about this dataset [here](https://www.basketball-reference.com/leagues/NBA_2019_per_game.html)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "zMcwE_14Rkty"
},
"outputs": [],
"source": [
"df = pd.read_csv('https://gist.githubusercontent.com/surajrampure/76bef6c3561b6d99fb87106cb91ef2b1/raw/c19e1300a1f8cc36ba93713261fcdcea00f4e8ed/nba_19_stats.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will keep only players who started over half the time, since it reduces noise for later visualizations."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 292
},
"colab_type": "code",
"id": "ngoLEX_KUpop",
"outputId": "9fee652c-ad57-4e97-df3c-f05bd9cca93c",
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n", " | Rk | \n", "Player | \n", "Pos | \n", "Age | \n", "Tm | \n", "G | \n", "GS | \n", "MP | \n", "FG | \n", "FGA | \n", "... | \n", "FT% | \n", "ORB | \n", "DRB | \n", "TRB | \n", "AST | \n", "STL | \n", "BLK | \n", "TOV | \n", "PF | \n", "PTS | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | \n", "4 | \n", "Steven Adams\\adamsst01 | \n", "C | \n", "25 | \n", "OKC | \n", "80 | \n", "80 | \n", "33.4 | \n", "6.0 | \n", "10.1 | \n", "... | \n", "0.500 | \n", "4.9 | \n", "4.6 | \n", "9.5 | \n", "1.6 | \n", "1.5 | \n", "1.0 | \n", "1.7 | \n", "2.6 | \n", "13.9 | \n", "
7 | \n", "8 | \n", "LaMarcus Aldridge\\aldrila01 | \n", "C | \n", "33 | \n", "SAS | \n", "81 | \n", "81 | \n", "33.2 | \n", "8.4 | \n", "16.3 | \n", "... | \n", "0.847 | \n", "3.1 | \n", "6.1 | \n", "9.2 | \n", "2.4 | \n", "0.5 | \n", "1.3 | \n", "1.8 | \n", "2.2 | \n", "21.3 | \n", "
10 | \n", "11 | \n", "Jarrett Allen\\allenja01 | \n", "C | \n", "20 | \n", "BRK | \n", "80 | \n", "80 | \n", "26.2 | \n", "4.2 | \n", "7.1 | \n", "... | \n", "0.709 | \n", "2.4 | \n", "6.0 | \n", "8.4 | \n", "1.4 | \n", "0.5 | \n", "1.5 | \n", "1.3 | \n", "2.3 | \n", "10.9 | \n", "
12 | \n", "13 | \n", "Al-Farouq Aminu\\aminual01 | \n", "PF | \n", "28 | \n", "POR | \n", "81 | \n", "81 | \n", "28.3 | \n", "3.2 | \n", "7.3 | \n", "... | \n", "0.867 | \n", "1.4 | \n", "6.1 | \n", "7.5 | \n", "1.3 | \n", "0.8 | \n", "0.4 | \n", "0.9 | \n", "1.8 | \n", "9.4 | \n", "
19 | \n", "18 | \n", "Giannis Antetokounmpo\\antetgi01 | \n", "PF | \n", "24 | \n", "MIL | \n", "72 | \n", "72 | \n", "32.8 | \n", "10.0 | \n", "17.3 | \n", "... | \n", "0.729 | \n", "2.2 | \n", "10.3 | \n", "12.5 | \n", "5.9 | \n", "1.3 | \n", "1.5 | \n", "3.7 | \n", "3.2 | \n", "27.7 | \n", "
5 rows × 30 columns
\n", "\n", " | MP | \n", "FG | \n", "FGA | \n", "FG% | \n", "3P | \n", "3PA | \n", "3P% | \n", "2P | \n", "2PA | \n", "2P% | \n", "... | \n", "FT% | \n", "ORB | \n", "DRB | \n", "TRB | \n", "AST | \n", "STL | \n", "BLK | \n", "TOV | \n", "PF | \n", "PTS | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | \n", "33.4 | \n", "6.0 | \n", "10.1 | \n", "0.595 | \n", "0.0 | \n", "0.0 | \n", "0.000 | \n", "6.0 | \n", "10.1 | \n", "0.596 | \n", "... | \n", "0.500 | \n", "4.9 | \n", "4.6 | \n", "9.5 | \n", "1.6 | \n", "1.5 | \n", "1.0 | \n", "1.7 | \n", "2.6 | \n", "13.9 | \n", "
7 | \n", "33.2 | \n", "8.4 | \n", "16.3 | \n", "0.519 | \n", "0.1 | \n", "0.5 | \n", "0.238 | \n", "8.3 | \n", "15.8 | \n", "0.528 | \n", "... | \n", "0.847 | \n", "3.1 | \n", "6.1 | \n", "9.2 | \n", "2.4 | \n", "0.5 | \n", "1.3 | \n", "1.8 | \n", "2.2 | \n", "21.3 | \n", "
10 | \n", "26.2 | \n", "4.2 | \n", "7.1 | \n", "0.590 | \n", "0.1 | \n", "0.6 | \n", "0.133 | \n", "4.1 | \n", "6.5 | \n", "0.629 | \n", "... | \n", "0.709 | \n", "2.4 | \n", "6.0 | \n", "8.4 | \n", "1.4 | \n", "0.5 | \n", "1.5 | \n", "1.3 | \n", "2.3 | \n", "10.9 | \n", "
12 | \n", "28.3 | \n", "3.2 | \n", "7.3 | \n", "0.433 | \n", "1.2 | \n", "3.5 | \n", "0.343 | \n", "2.0 | \n", "3.9 | \n", "0.514 | \n", "... | \n", "0.867 | \n", "1.4 | \n", "6.1 | \n", "7.5 | \n", "1.3 | \n", "0.8 | \n", "0.4 | \n", "0.9 | \n", "1.8 | \n", "9.4 | \n", "
19 | \n", "32.8 | \n", "10.0 | \n", "17.3 | \n", "0.578 | \n", "0.7 | \n", "2.8 | \n", "0.256 | \n", "9.3 | \n", "14.5 | \n", "0.641 | \n", "... | \n", "0.729 | \n", "2.2 | \n", "10.3 | \n", "12.5 | \n", "5.9 | \n", "1.3 | \n", "1.5 | \n", "3.7 | \n", "3.2 | \n", "27.7 | \n", "
5 rows × 23 columns
\n", "\n", " | PC1 weights | \n", "PC2 weights | \n", "
---|---|---|
labels | \n", "\n", " | \n", " |
PTS | \n", "-0.626930 | \n", "-0.072263 | \n", "
FGA | \n", "-0.442062 | \n", "-0.185876 | \n", "
MP | \n", "-0.333730 | \n", "-0.197994 | \n", "
2PA | \n", "-0.325766 | \n", "0.271668 | \n", "
FG | \n", "-0.215476 | \n", "0.034322 | \n", "
FTA | \n", "-0.186783 | \n", "0.101624 | \n", "
2P | \n", "-0.173027 | \n", "0.211714 | \n", "
FT | \n", "-0.153964 | \n", "0.036481 | \n", "
AST | \n", "-0.121689 | \n", "-0.110856 | \n", "
TRB | \n", "-0.116492 | \n", "0.584020 | \n", "
3PA | \n", "-0.115887 | \n", "-0.456801 | \n", "
DRB | \n", "-0.100669 | \n", "0.381528 | \n", "
TOV | \n", "-0.069660 | \n", "0.003459 | \n", "
3P | \n", "-0.042054 | \n", "-0.177175 | \n", "
ORB | \n", "-0.015642 | \n", "0.200571 | \n", "
STL | \n", "-0.014924 | \n", "-0.011167 | \n", "
BLK | \n", "-0.005483 | \n", "0.085547 | \n", "
PF | \n", "-0.003988 | \n", "0.048161 | \n", "
FT% | \n", "-0.001690 | \n", "-0.010555 | \n", "
FG% | \n", "-0.000820 | \n", "0.011200 | \n", "
3P% | \n", "-0.000605 | \n", "-0.015655 | \n", "
2P% | \n", "-0.000466 | \n", "0.008328 | \n", "
eFG% | \n", "-0.000199 | \n", "0.004425 | \n", "