{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's find the top individual series by individual shot attempts."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import PbPMethods2 as pm2\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
" \n",
" \n",
" | \n",
" Player | \n",
" Team | \n",
" Pos | \n",
" Game | \n",
" Season | \n",
" Date | \n",
" TOION(60s) | \n",
" CFON | \n",
" CAON | \n",
" TOIOFF(60s) | \n",
" ... | \n",
" NZS | \n",
" OZS | \n",
" iG | \n",
" iCF | \n",
" iA1 | \n",
" iA2 | \n",
" SACFON | \n",
" SACAON | \n",
" SACFOFF | \n",
" SACAOFF | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Patrick O'Sullivan | \n",
" L.A | \n",
" F | \n",
" 20001 | \n",
" 2007 | \n",
" 29-Sep-07 | \n",
" 0.110556 | \n",
" 3 | \n",
" 4 | \n",
" 0.457500 | \n",
" ... | \n",
" 2 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 3.324 | \n",
" 3.554 | \n",
" 8.560 | \n",
" 22.067 | \n",
"
\n",
" \n",
" 1 | \n",
" Tom Preissing | \n",
" L.A | \n",
" D | \n",
" 20001 | \n",
" 2007 | \n",
" 29-Sep-07 | \n",
" 0.154444 | \n",
" 5 | \n",
" 7 | \n",
" 0.413611 | \n",
" ... | \n",
" 4 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 5.430 | \n",
" 6.509 | \n",
" 6.454 | \n",
" 19.112 | \n",
"
\n",
" \n",
" 2 | \n",
" Lubomir Visnovsky | \n",
" L.A | \n",
" D | \n",
" 20001 | \n",
" 2007 | \n",
" 29-Sep-07 | \n",
" 0.185833 | \n",
" 2 | \n",
" 9 | \n",
" 0.382222 | \n",
" ... | \n",
" 5 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2.077 | \n",
" 8.354 | \n",
" 9.807 | \n",
" 17.267 | \n",
"
\n",
" \n",
" 3 | \n",
" Raitis Ivanans | \n",
" L.A | \n",
" F | \n",
" 20001 | \n",
" 2007 | \n",
" 29-Sep-07 | \n",
" 0.059722 | \n",
" 1 | \n",
" 2 | \n",
" 0.508333 | \n",
" ... | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1.120 | \n",
" 1.826 | \n",
" 10.764 | \n",
" 23.795 | \n",
"
\n",
" \n",
" 4 | \n",
" Dustin Brown | \n",
" L.A | \n",
" F | \n",
" 20001 | \n",
" 2007 | \n",
" 29-Sep-07 | \n",
" 0.163889 | \n",
" 4 | \n",
" 9 | \n",
" 0.404167 | \n",
" ... | \n",
" 3 | \n",
" 2 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 4.228 | \n",
" 8.040 | \n",
" 7.656 | \n",
" 17.581 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 35 columns
\n",
"
"
],
"text/plain": [
" Player Team Pos Game Season Date TOION(60s) CFON \\\n",
"0 Patrick O'Sullivan L.A F 20001 2007 29-Sep-07 0.110556 3 \n",
"1 Tom Preissing L.A D 20001 2007 29-Sep-07 0.154444 5 \n",
"2 Lubomir Visnovsky L.A D 20001 2007 29-Sep-07 0.185833 2 \n",
"3 Raitis Ivanans L.A F 20001 2007 29-Sep-07 0.059722 1 \n",
"4 Dustin Brown L.A F 20001 2007 29-Sep-07 0.163889 4 \n",
"\n",
" CAON TOIOFF(60s) ... NZS OZS iG iCF iA1 iA2 SACFON SACAON \\\n",
"0 4 0.457500 ... 2 2 0 1 0 0 3.324 3.554 \n",
"1 7 0.413611 ... 4 2 0 1 0 0 5.430 6.509 \n",
"2 9 0.382222 ... 5 3 0 0 0 0 2.077 8.354 \n",
"3 2 0.508333 ... 2 0 0 0 0 0 1.120 1.826 \n",
"4 9 0.404167 ... 3 2 0 1 0 0 4.228 8.040 \n",
"\n",
" SACFOFF SACAOFF \n",
"0 8.560 22.067 \n",
"1 6.454 19.112 \n",
"2 9.807 17.267 \n",
"3 10.764 23.795 \n",
"4 7.656 17.581 \n",
"\n",
"[5 rows x 35 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfs = []\n",
"for season in range(2007, 2017):\n",
" dfs.append(pd.read_csv(pm2.get_gamebygame_data_filename(season)))\n",
"dfs = pd.concat(dfs)\n",
"dfs.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Filter for the playoffs and add a variable with the round number"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Player | \n",
" Team | \n",
" Game | \n",
" Season | \n",
" TOION(60s) | \n",
" iCF | \n",
" Round | \n",
"
\n",
" \n",
" \n",
" \n",
" 44227 | \n",
" Alex Kovalev | \n",
" MTL | \n",
" 30111 | \n",
" 2007 | \n",
" 0.205278 | \n",
" 4 | \n",
" 1 | \n",
"
\n",
" \n",
" 44228 | \n",
" Steve Begin | \n",
" MTL | \n",
" 30111 | \n",
" 2007 | \n",
" 0.134444 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 44229 | \n",
" Maxim Lapierre | \n",
" MTL | \n",
" 30111 | \n",
" 2007 | \n",
" 0.183611 | \n",
" 6 | \n",
" 1 | \n",
"
\n",
" \n",
" 44230 | \n",
" Mike Komisarek | \n",
" MTL | \n",
" 30111 | \n",
" 2007 | \n",
" 0.214722 | \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
" 44231 | \n",
" Mark Streit | \n",
" MTL | \n",
" 30111 | \n",
" 2007 | \n",
" 0.201111 | \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Player Team Game Season TOION(60s) iCF Round\n",
"44227 Alex Kovalev MTL 30111 2007 0.205278 4 1\n",
"44228 Steve Begin MTL 30111 2007 0.134444 1 1\n",
"44229 Maxim Lapierre MTL 30111 2007 0.183611 6 1\n",
"44230 Mike Komisarek MTL 30111 2007 0.214722 3 1\n",
"44231 Mark Streit MTL 30111 2007 0.201111 3 1"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"playoffs = dfs.query('Game > 30000')\n",
"playoffs = playoffs[['Player', 'Team', 'Game', 'Season', 'TOION(60s)', 'iCF']]\n",
"playoffs['Round'] = (playoffs['Game'] - 30000) // 100\n",
"playoffs.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Group by round to get gp and counts"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Player | \n",
" Team | \n",
" Season | \n",
" Round | \n",
" GP | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Aaron Ekblad | \n",
" FLA | \n",
" 2015 | \n",
" 1 | \n",
" 6 | \n",
"
\n",
" \n",
" 1 | \n",
" Aaron Rome | \n",
" CBJ | \n",
" 2008 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" Aaron Rome | \n",
" DAL | \n",
" 2013 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" Aaron Rome | \n",
" VAN | \n",
" 2009 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" Aaron Rome | \n",
" VAN | \n",
" 2010 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Player Team Season Round GP\n",
"0 Aaron Ekblad FLA 2015 1 6\n",
"1 Aaron Rome CBJ 2008 1 1\n",
"2 Aaron Rome DAL 2013 1 1\n",
"3 Aaron Rome VAN 2009 1 1\n",
"4 Aaron Rome VAN 2010 1 2"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"player_gp = playoffs.groupby(['Player', 'Team', 'Season', 'Round']).count()\n",
"player_gp.reset_index(inplace = True)\n",
"player_gp.rename(columns = {'Game': 'GP'}, inplace = True)\n",
"player_gp = player_gp[['Player', 'Team', 'Season', 'Round', 'GP']]\n",
"player_gp.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Player | \n",
" Team | \n",
" Season | \n",
" Round | \n",
" TOION(60s) | \n",
" iCF | \n",
" GP | \n",
" iCF60 | \n",
"
\n",
" \n",
" \n",
" \n",
" 4533 | \n",
" Patrick Wiercioch | \n",
" OTT | \n",
" 2012 | \n",
" 1 | \n",
" 0.019167 | \n",
" 1 | \n",
" 1 | \n",
" 52.173913 | \n",
"
\n",
" \n",
" 5605 | \n",
" Tomas Kopecky | \n",
" CHI | \n",
" 2010 | \n",
" 1 | \n",
" 0.039444 | \n",
" 2 | \n",
" 1 | \n",
" 50.704225 | \n",
"
\n",
" \n",
" 1904 | \n",
" Emerson Etem | \n",
" ANA | \n",
" 2013 | \n",
" 1 | \n",
" 0.225000 | \n",
" 10 | \n",
" 2 | \n",
" 44.444444 | \n",
"
\n",
" \n",
" 170 | \n",
" Alexander Semin | \n",
" WSH | \n",
" 2009 | \n",
" 1 | \n",
" 1.550556 | \n",
" 62 | \n",
" 7 | \n",
" 39.985668 | \n",
"
\n",
" \n",
" 337 | \n",
" Andrew Shaw | \n",
" CHI | \n",
" 2013 | \n",
" 2 | \n",
" 0.050278 | \n",
" 2 | \n",
" 1 | \n",
" 39.779006 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Player Team Season Round TOION(60s) iCF GP iCF60\n",
"4533 Patrick Wiercioch OTT 2012 1 0.019167 1 1 52.173913\n",
"5605 Tomas Kopecky CHI 2010 1 0.039444 2 1 50.704225\n",
"1904 Emerson Etem ANA 2013 1 0.225000 10 2 44.444444\n",
"170 Alexander Semin WSH 2009 1 1.550556 62 7 39.985668\n",
"337 Andrew Shaw CHI 2013 2 0.050278 2 1 39.779006"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"player_rounds = playoffs.groupby(['Player', 'Team', 'Season', 'Round']).sum()\n",
"player_rounds.drop(['Game'], axis = 1, inplace = True)\n",
"player_rounds.reset_index(inplace = True)\n",
"\n",
"#Join to get the gp column\n",
"player_rounds = player_rounds.merge(player_gp, on = ['Player', 'Team', 'Season', 'Round'], how = 'inner')\n",
"\n",
"player_rounds['iCF60'] = player_rounds['iCF'] / player_rounds['TOION(60s)']\n",
"player_rounds.sort_values(by = 'iCF60', ascending = False, inplace = True)\n",
"player_rounds.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Filter for at least six games (optional)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Player | \n",
" Team | \n",
" Season | \n",
" Round | \n",
" TOION(60s) | \n",
" iCF | \n",
" GP | \n",
" iCF60 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Alexander Semin | \n",
" WSH | \n",
" 2009 | \n",
" 1 | \n",
" 1.550556 | \n",
" 62 | \n",
" 7 | \n",
" 39.985668 | \n",
"
\n",
" \n",
" 1 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2008 | \n",
" 1 | \n",
" 1.748056 | \n",
" 58 | \n",
" 7 | \n",
" 33.179724 | \n",
"
\n",
" \n",
" 2 | \n",
" Patric Hornqvist | \n",
" NSH | \n",
" 2010 | \n",
" 1 | \n",
" 1.167778 | \n",
" 37 | \n",
" 6 | \n",
" 31.684110 | \n",
"
\n",
" \n",
" 3 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2009 | \n",
" 1 | \n",
" 1.751944 | \n",
" 54 | \n",
" 7 | \n",
" 30.822895 | \n",
"
\n",
" \n",
" 4 | \n",
" Max Pacioretty | \n",
" MTL | \n",
" 2016 | \n",
" 1 | \n",
" 1.510833 | \n",
" 46 | \n",
" 6 | \n",
" 30.446773 | \n",
"
\n",
" \n",
" 5 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2014 | \n",
" 1 | \n",
" 1.937778 | \n",
" 57 | \n",
" 7 | \n",
" 29.415138 | \n",
"
\n",
" \n",
" 6 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2012 | \n",
" 1 | \n",
" 1.839167 | \n",
" 54 | \n",
" 7 | \n",
" 29.361124 | \n",
"
\n",
" \n",
" 7 | \n",
" Alexander Semin | \n",
" WSH | \n",
" 2007 | \n",
" 1 | \n",
" 1.583333 | \n",
" 46 | \n",
" 7 | \n",
" 29.052632 | \n",
"
\n",
" \n",
" 8 | \n",
" Eric Fehr | \n",
" WSH | \n",
" 2009 | \n",
" 1 | \n",
" 1.105556 | \n",
" 32 | \n",
" 7 | \n",
" 28.944724 | \n",
"
\n",
" \n",
" 9 | \n",
" Max Pacioretty | \n",
" MTL | \n",
" 2014 | \n",
" 2 | \n",
" 1.493333 | \n",
" 43 | \n",
" 6 | \n",
" 28.794643 | \n",
"
\n",
" \n",
" 10 | \n",
" Phil Kessel | \n",
" PIT | \n",
" 2015 | \n",
" 4 | \n",
" 1.576111 | \n",
" 45 | \n",
" 6 | \n",
" 28.551287 | \n",
"
\n",
" \n",
" 11 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2008 | \n",
" 2 | \n",
" 2.234444 | \n",
" 63 | \n",
" 7 | \n",
" 28.194928 | \n",
"
\n",
" \n",
" 12 | \n",
" Patrick Sharp | \n",
" CHI | \n",
" 2012 | \n",
" 4 | \n",
" 1.623333 | \n",
" 44 | \n",
" 6 | \n",
" 27.104723 | \n",
"
\n",
" \n",
" 13 | \n",
" Brandon Bollig | \n",
" CGY | \n",
" 2014 | \n",
" 1 | \n",
" 0.671944 | \n",
" 18 | \n",
" 6 | \n",
" 26.787929 | \n",
"
\n",
" \n",
" 14 | \n",
" Craig Smith | \n",
" NSH | \n",
" 2014 | \n",
" 1 | \n",
" 1.648611 | \n",
" 44 | \n",
" 6 | \n",
" 26.689132 | \n",
"
\n",
" \n",
" 15 | \n",
" Mikael Samuelsson | \n",
" DET | \n",
" 2007 | \n",
" 1 | \n",
" 1.242500 | \n",
" 33 | \n",
" 6 | \n",
" 26.559356 | \n",
"
\n",
" \n",
" 16 | \n",
" Shawn Thornton | \n",
" BOS | \n",
" 2007 | \n",
" 1 | \n",
" 0.909167 | \n",
" 24 | \n",
" 7 | \n",
" 26.397800 | \n",
"
\n",
" \n",
" 17 | \n",
" Henrik Zetterberg | \n",
" DET | \n",
" 2007 | \n",
" 4 | \n",
" 1.705556 | \n",
" 45 | \n",
" 6 | \n",
" 26.384365 | \n",
"
\n",
" \n",
" 18 | \n",
" Alex Ovechkin | \n",
" WSH | \n",
" 2014 | \n",
" 2 | \n",
" 1.898611 | \n",
" 50 | \n",
" 7 | \n",
" 26.335040 | \n",
"
\n",
" \n",
" 19 | \n",
" Alexander Semin | \n",
" WSH | \n",
" 2008 | \n",
" 1 | \n",
" 1.457778 | \n",
" 38 | \n",
" 7 | \n",
" 26.067073 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Player Team Season Round TOION(60s) iCF GP iCF60\n",
"0 Alexander Semin WSH 2009 1 1.550556 62 7 39.985668\n",
"1 Alex Ovechkin WSH 2008 1 1.748056 58 7 33.179724\n",
"2 Patric Hornqvist NSH 2010 1 1.167778 37 6 31.684110\n",
"3 Alex Ovechkin WSH 2009 1 1.751944 54 7 30.822895\n",
"4 Max Pacioretty MTL 2016 1 1.510833 46 6 30.446773\n",
"5 Alex Ovechkin WSH 2014 1 1.937778 57 7 29.415138\n",
"6 Alex Ovechkin WSH 2012 1 1.839167 54 7 29.361124\n",
"7 Alexander Semin WSH 2007 1 1.583333 46 7 29.052632\n",
"8 Eric Fehr WSH 2009 1 1.105556 32 7 28.944724\n",
"9 Max Pacioretty MTL 2014 2 1.493333 43 6 28.794643\n",
"10 Phil Kessel PIT 2015 4 1.576111 45 6 28.551287\n",
"11 Alex Ovechkin WSH 2008 2 2.234444 63 7 28.194928\n",
"12 Patrick Sharp CHI 2012 4 1.623333 44 6 27.104723\n",
"13 Brandon Bollig CGY 2014 1 0.671944 18 6 26.787929\n",
"14 Craig Smith NSH 2014 1 1.648611 44 6 26.689132\n",
"15 Mikael Samuelsson DET 2007 1 1.242500 33 6 26.559356\n",
"16 Shawn Thornton BOS 2007 1 0.909167 24 7 26.397800\n",
"17 Henrik Zetterberg DET 2007 4 1.705556 45 6 26.384365\n",
"18 Alex Ovechkin WSH 2014 2 1.898611 50 7 26.335040\n",
"19 Alexander Semin WSH 2008 1 1.457778 38 7 26.067073"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp = player_rounds.query('GP >= 6')\n",
"temp.reset_index(inplace = True, drop = True) #so index = ranks\n",
"temp.head(20)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}