{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PlayerTeamPosGameSeasonDateTOION(60s)CFONCAONTOIOFF(60s)...NZSOZSiGiCFiA1iA2SACFONSACAONSACFOFFSACAOFF
0Patrick O'SullivanL.AF20001200729-Sep-070.110556340.457500...2201003.3243.5548.56022.067
1Tom PreissingL.AD20001200729-Sep-070.154444570.413611...4201005.4306.5096.45419.112
2Lubomir VisnovskyL.AD20001200729-Sep-070.185833290.382222...5300002.0778.3549.80717.267
3Raitis IvanansL.AF20001200729-Sep-070.059722120.508333...2000001.1201.82610.76423.795
4Dustin BrownL.AF20001200729-Sep-070.163889490.404167...3201004.2288.0407.65617.581
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PlayerTeamGameSeasonTOION(60s)iCFRound
44227Alex KovalevMTL3011120070.20527841
44228Steve BeginMTL3011120070.13444411
44229Maxim LapierreMTL3011120070.18361161
44230Mike KomisarekMTL3011120070.21472231
44231Mark StreitMTL3011120070.20111131
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PlayerTeamSeasonRoundGP
0Aaron EkbladFLA201516
1Aaron RomeCBJ200811
2Aaron RomeDAL201311
3Aaron RomeVAN200911
4Aaron RomeVAN201012
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PlayerTeamSeasonRoundTOION(60s)iCFGPiCF60
4533Patrick WierciochOTT201210.0191671152.173913
5605Tomas KopeckyCHI201010.0394442150.704225
1904Emerson EtemANA201310.22500010244.444444
170Alexander SeminWSH200911.55055662739.985668
337Andrew ShawCHI201320.0502782139.779006
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PlayerTeamSeasonRoundTOION(60s)iCFGPiCF60
0Alexander SeminWSH200911.55055662739.985668
1Alex OvechkinWSH200811.74805658733.179724
2Patric HornqvistNSH201011.16777837631.684110
3Alex OvechkinWSH200911.75194454730.822895
4Max PaciorettyMTL201611.51083346630.446773
5Alex OvechkinWSH201411.93777857729.415138
6Alex OvechkinWSH201211.83916754729.361124
7Alexander SeminWSH200711.58333346729.052632
8Eric FehrWSH200911.10555632728.944724
9Max PaciorettyMTL201421.49333343628.794643
10Phil KesselPIT201541.57611145628.551287
11Alex OvechkinWSH200822.23444463728.194928
12Patrick SharpCHI201241.62333344627.104723
13Brandon BolligCGY201410.67194418626.787929
14Craig SmithNSH201411.64861144626.689132
15Mikael SamuelssonDET200711.24250033626.559356
16Shawn ThorntonBOS200710.90916724726.397800
17Henrik ZetterbergDET200741.70555645626.384365
18Alex OvechkinWSH201421.89861150726.335040
19Alexander SeminWSH200811.45777838726.067073
\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 }