{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"<center><h1>Green Bay Packers Special Plays</h1></center>","metadata":{}},{"cell_type":"markdown","source":"<center><h2>Table of Contents</h2></center>\n\n* [Importing Libraries](#0)\n* [Function to Load Video File](#1)\n* [Data Loading](#2)\n\n<h3>Kickoff Return Analysis</h3>\n\n* [Data Preparation: Kickoff Return](#3)\n* [Merging Data with Pro Football Focus Data for more insights](#4)\n* [Grouping Data by Below, Above 25 Yards & Lossing Yrads](#5)\n\n    <h3>Kickoff Return Below, Above - 25 Yards & Lossing Yrads Analysis</h3>\n    \n    * [Kickoff Return Below 25 Yards](#6)\n        * [Below 25 Yards 2018](#7)\n            * [Below 25 Yards 2018 More Insights](#8)\n                * [Video Model For Clear View](#9)\n        * [Below 25 Yards 2019](#10)\n            * [Below 25 Yards 2019 More Insights](#11)\n                * [Video Model For Clear View](#12)\n        * [Below 25 Yards 2020](#13)\n            * [Below 25 Yards 2020 More Insights](#14)\n                * [Video Model For Clear View](#15)\n    * [Kickoff Return Above 25 Yards](#16)\n        * [Above 25 Yards 2018](#17)\n            * [Above 25 Yards 2018 More Insights](#18)\n                * [Video Model For Clear View](#19)\n        * [Above 25 Yards 2019](#20)\n            * [Above 25 Yards 2019 More Insights](#21)\n                * [Video Model For Clear View](#22)\n        * [Above 25 Yards 2020](#23)\n            * [Above 25 Yards 2020 More Insights](#24)\n                * [Video Model For Clear View](#25)\n    * [Kickoff Return Lossing Yards](#26)\n        * [Lossing Yards 2018](#27)\n            * [Lossing Yards 2018. More Insights](#28)\n                * [Video Model For Clear View](#29)\n        * [Lossing Yards 2019](#30)\n            * [Lossing Yards 2019. More Insights](#31)\n        * [Lossing Yards 2020](#33)\n            * [Lossing Yards 2020. More Insights](#34)\n        \n <h3>Stats of 32 NFL Teams</h3>\n \n* [Special Team Play Stats for 32 NFL Teams](https://www.kaggle.com/kushtrivedi14728/python-nfl-bigdatabowl-2022-eda) \n        \n <h3>Vanquishing Playoffs Teams 2021 - 2022</h3>\n \n   * [Kansas City Chiefs Special Plays](https://www.kaggle.com/kushtrivedi14728/kansas-city-chiefs-special-plays)\n   * [Tampa Bay Buccaneers Special Plays](https://www.kaggle.com/kushtrivedi14728/tampa-bay-buccaneers-special-plays)\n   * [Los Angeles Rams Special Plays](https://www.kaggle.com/kushtrivedi14728/los-angeles-rams-special-plays)\n   * [Dallas Cowboys Special Plays](https://www.kaggle.com/kushtrivedi14728/dallas-cowboys-special-plays)\n   * [Tennessee Titans Special Plays](https://www.kaggle.com/kushtrivedi14728/tennessee-titans-special-plays)","metadata":{}},{"cell_type":"markdown","source":"<a id=\"0\"></a> <br>\n# Import Libraries","metadata":{}},{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom IPython.display import HTML\nfrom base64 import b64encode\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.133974Z","iopub.execute_input":"2022-01-02T05:35:09.134291Z","iopub.status.idle":"2022-01-02T05:35:09.182871Z","shell.execute_reply.started":"2022-01-02T05:35:09.134204Z","shell.execute_reply":"2022-01-02T05:35:09.181917Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='1'><li>Function to Load Video File</li></p>**","metadata":{}},{"cell_type":"code","source":"def playVideo(videoFile):\n    html = ''\n    video = open(videoFile,'rb').read()\n    src = 'data:video/mp4;base64,' + b64encode(video).decode()\n    html += '<video width=1100 controls autoplay loop><source src=\"%s\" type=\"video/mp4\"></video>' % src \n    return HTML(html)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.185021Z","iopub.execute_input":"2022-01-02T05:35:09.185319Z","iopub.status.idle":"2022-01-02T05:35:09.190822Z","shell.execute_reply.started":"2022-01-02T05:35:09.185279Z","shell.execute_reply":"2022-01-02T05:35:09.189954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"2\"></a> <br>\n# Data Loading","metadata":{}},{"cell_type":"code","source":"extraPointsGB2018 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_ExtraPoint_2018.csv')\nextraPointsGB2019 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_ExtraPoint_2019.csv')\nextraPointsGB2020 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_ExtraPoint_2020.csv')\n\nfieldGoalsGB2018 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_FiledGoals_2018.csv')\nfieldGoalsGB2019 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_FiledGoals_2019.csv')\nfieldGoalsGB2020 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_FiledGoals_2020.csv')\n\nkickoffsGB2018 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Kickoffs_2018.csv')\nkickoffsGB2019 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Kickoffs_2019.csv')\nkickoffsGB2020 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Kickoffs_2020.csv')\n\npuntsGB2018 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Punts_2018.csv')\npuntsGB2019 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Punts_2019.csv')\npuntsGB2020 = pd.read_csv('../input/green-bay-packers-special-play-2018-to-2020/GB_Punts_2020.csv')\n\npFFData = pd.read_csv('../input/nfl-big-data-bowl-2022/PFFScoutingData.csv')\npd.options.display.max_rows = 99999999","metadata":{"execution":{"iopub.status.busy":"2022-01-02T05:35:09.192776Z","iopub.execute_input":"2022-01-02T05:35:09.193369Z","iopub.status.idle":"2022-01-02T05:35:09.535104Z","shell.execute_reply.started":"2022-01-02T05:35:09.193317Z","shell.execute_reply":"2022-01-02T05:35:09.534498Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"3\"></a> <br>\n# Data Preparation for Kick of Return","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2018Above25Yards = kickoffsGB2018[(kickoffsGB2018.Result == 'Kickoff - Return') & (kickoffsGB2018.kickReturnYardage > 25) & (kickoffsGB2018.playResult > 0)]\nGBKickoffReturn2019Above25Yards = kickoffsGB2019[(kickoffsGB2019.Result == 'Kickoff - Return') & (kickoffsGB2019.kickReturnYardage > 25) & (kickoffsGB2019.playResult > 0)]\nGBKickoffReturn2020Above25Yards = kickoffsGB2020[(kickoffsGB2020.Result == 'Kickoff - Return') & (kickoffsGB2020.kickReturnYardage > 25) & (kickoffsGB2020.playResult > 0)]\n\nGBKickoffReturn2018Below25Yards = kickoffsGB2018[(kickoffsGB2018.Result == 'Kickoff - Return') & (kickoffsGB2018.kickReturnYardage <= 25)]\nGBKickoffReturn2019Below25Yards = kickoffsGB2019[(kickoffsGB2019.Result == 'Kickoff - Return') & (kickoffsGB2019.kickReturnYardage <= 25)]\nGBKickoffReturn2020Below25Yards = kickoffsGB2020[(kickoffsGB2020.Result == 'Kickoff - Return') & (kickoffsGB2020.kickReturnYardage <= 25)]\n\nGBKickoffReturn2018LossYards = kickoffsGB2018[(kickoffsGB2018.Result == 'Kickoff - Return') & (kickoffsGB2018.playResult < 0)]\nGBKickoffReturn2019LossYards = kickoffsGB2019[(kickoffsGB2019.Result == 'Kickoff - Return') & (kickoffsGB2019.playResult < 0)]\nGBKickoffReturn2020LossYards = kickoffsGB2020[(kickoffsGB2020.Result == 'Kickoff - Return') & (kickoffsGB2020.playResult < 0)]","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.537509Z","iopub.execute_input":"2022-01-02T05:35:09.537932Z","iopub.status.idle":"2022-01-02T05:35:09.571934Z","shell.execute_reply.started":"2022-01-02T05:35:09.537887Z","shell.execute_reply":"2022-01-02T05:35:09.571224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"4\"></a> <br>\n# Merging Kickoff Return Data with Pro Football Focus Data","metadata":{}},{"cell_type":"code","source":"# Merged Data with Kickoff Return Above 25 Yards.\nmergedGBKickoffReturn2018Above25Yards = pd.merge(GBKickoffReturn2018Above25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2019Above25Yards = pd.merge(GBKickoffReturn2019Above25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2020Above25Yards = pd.merge(GBKickoffReturn2020Above25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\n# Merged Data with Kickoff Return Below 25 Yards.\nmergedGBKickoffReturn2018Below25Yards = pd.merge(GBKickoffReturn2018Below25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2019Below25Yards = pd.merge(GBKickoffReturn2019Below25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2020Below25Yards = pd.merge(GBKickoffReturn2020Below25Yards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\n# Merged Data with Kickoff Return Lossing Yards.\nmergedGBKickoffReturn2018LossYards = pd.merge(GBKickoffReturn2018LossYards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2019LossYards = pd.merge(GBKickoffReturn2019LossYards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )\n\nmergedGBKickoffReturn2020LossYards = pd.merge(GBKickoffReturn2020LossYards, \n                                                 pFFData,  \n                                                 how='left', \n                                                 left_on=['gameId','playId'], \n                                                 right_on = ['gameId','playId']\n                                                )","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.573875Z","iopub.execute_input":"2022-01-02T05:35:09.574626Z","iopub.status.idle":"2022-01-02T05:35:09.743109Z","shell.execute_reply.started":"2022-01-02T05:35:09.574582Z","shell.execute_reply":"2022-01-02T05:35:09.742365Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"5\"></a> <br>\n# Grouping DataFrames","metadata":{}},{"cell_type":"code","source":"# Above 25 Yards 2018\nGBKickoffReturn2018Above25YardsSeries = GBKickoffReturn2018Above25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2018Above25YardsFrame = pd.DataFrame(GBKickoffReturn2018Above25YardsSeries)\n\nmergedGBKickoffReturn2018Above25YardsSeries = mergedGBKickoffReturn2018Above25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2018Above25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2018Above25YardsSeries)\n\n# Above 25 Yards 2019\nGBKickoffReturn2019Above25YardsSeries = GBKickoffReturn2019Above25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2019Above25YardsFrame = pd.DataFrame(GBKickoffReturn2019Above25YardsSeries)\n\nmergedGBKickoffReturn2019Above25YardsSeries = mergedGBKickoffReturn2019Above25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2019Above25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2019Above25YardsSeries)\n\n# Above 25 Yards 2020\nGBKickoffReturn2020Above25YardsSeries = GBKickoffReturn2020Above25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2020Above25YardsFrame = pd.DataFrame(GBKickoffReturn2020Above25YardsSeries)\n\nmergedGBKickoffReturn2020Above25YardsSeries = mergedGBKickoffReturn2020Above25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2020Above25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2020Above25YardsSeries)\n\n# Below 25 Yards 2018\nGBKickoffReturn2018Below25YardsSeries = GBKickoffReturn2018Below25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2018Below25YardsFrame = pd.DataFrame(GBKickoffReturn2018Below25YardsSeries)\n\nmergedGBKickoffReturn2018Below25YardsSeries = mergedGBKickoffReturn2018Below25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2018Below25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2018Below25YardsSeries)\n\n# Below 25 Yards 2019\nGBKickoffReturn2019Below25YardsSeries = GBKickoffReturn2019Below25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2019Below25YardsFrame = pd.DataFrame(GBKickoffReturn2019Below25YardsSeries)\n\nmergedGBKickoffReturn2019Below25YardsSeries = mergedGBKickoffReturn2019Below25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2019Below25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2019Below25YardsSeries)\n\n# Below 25 Yards 2020\nGBKickoffReturn2020Below25YardsSeries = GBKickoffReturn2020Below25Yards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2020Below25YardsFrame = pd.DataFrame(GBKickoffReturn2020Below25YardsSeries)\n\nmergedGBKickoffReturn2020Below25YardsSeries = mergedGBKickoffReturn2020Below25Yards.groupby(\n    ['season','kickoffReturnFormation','tackler','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2020Below25YardsFrame = pd.DataFrame(mergedGBKickoffReturn2020Below25YardsSeries)\n\n# Loosing Yards 2018\nGBKickoffReturn2018LossYardsSeries = GBKickoffReturn2018LossYards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2018LossYardsFrame = pd.DataFrame(GBKickoffReturn2018LossYardsSeries)\n\nmergedGBKickoffReturn2018LossYardsSeires = mergedGBKickoffReturn2018LossYards.groupby(\n    ['season','kickoffReturnFormation','specialTeamsSafeties','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2018LossYardsFrame = pd.DataFrame(mergedGBKickoffReturn2018LossYardsSeires)\n\n# Loosing Yards 2019\nGBKickoffReturn2019LossYardsSeries = GBKickoffReturn2019LossYards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2019LossYardsFrame = pd.DataFrame(GBKickoffReturn2019LossYardsSeries)\n\nmergedGBKickoffReturn2019LossYardsSeires = mergedGBKickoffReturn2019LossYards.groupby(\n    ['season','kickoffReturnFormation','specialTeamsSafeties','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2019LossYardsFrame = pd.DataFrame(mergedGBKickoffReturn2019LossYardsSeires)\n\n# Loosing Yards 2020\nGBKickoffReturn2020LossYardsSeries = GBKickoffReturn2020LossYards.groupby(['season','possessionTeam','gameId','playId','quarter','down','yardsToGo','yardlineSide','Result','gameClock',\n                                   'yardlineNumber','kickReturnYardage','playResult','preSnapHomeScore','preSnapVisitorScore','event','homeTeamAbbr','visitorTeamAbbr',\n                                   'week'],as_index=True).size()\nGBKickoffReturn2020LossYardsFrame = pd.DataFrame(GBKickoffReturn2020LossYardsSeries)\n\nmergedGBKickoffReturn2020LossYardsSeires = mergedGBKickoffReturn2020LossYards.groupby(\n    ['season','kickoffReturnFormation','specialTeamsSafeties','gameId','playId','returnDirectionIntended',\n     'returnDirectionActual','kickReturnYardage','homeTeamAbbr','visitorTeamAbbr','week'],as_index=True).size()\nmergedGBKickoffReturn2020LossYardsFrame = pd.DataFrame(mergedGBKickoffReturn2020LossYardsSeires)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.744292Z","iopub.execute_input":"2022-01-02T05:35:09.744525Z","iopub.status.idle":"2022-01-02T05:35:09.860196Z","shell.execute_reply.started":"2022-01-02T05:35:09.744496Z","shell.execute_reply":"2022-01-02T05:35:09.859335Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"6\"></a> <br>\n# Kickoff Return Below 25 Yards (Good Strategy)\n\n**<p id='7'><li>Below 25 Yards 2018</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2018Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.861200Z","iopub.execute_input":"2022-01-02T05:35:09.861394Z","iopub.status.idle":"2022-01-02T05:35:09.905900Z","shell.execute_reply.started":"2022-01-02T05:35:09.861369Z","shell.execute_reply":"2022-01-02T05:35:09.905271Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='8'><li>Below 25 Yards 2018. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2018Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.906879Z","iopub.execute_input":"2022-01-02T05:35:09.907507Z","iopub.status.idle":"2022-01-02T05:35:09.924617Z","shell.execute_reply.started":"2022-01-02T05:35:09.907471Z","shell.execute_reply":"2022-01-02T05:35:09.923729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='9'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Best-Kickoff-Return-Below-25-Yards-2018.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.925855Z","iopub.execute_input":"2022-01-02T05:35:09.926086Z","iopub.status.idle":"2022-01-02T05:35:09.983538Z","shell.execute_reply.started":"2022-01-02T05:35:09.926059Z","shell.execute_reply":"2022-01-02T05:35:09.982552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='10'><li>Below 25 Yards 2019</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2019Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:09.986725Z","iopub.execute_input":"2022-01-02T05:35:09.987010Z","iopub.status.idle":"2022-01-02T05:35:10.022014Z","shell.execute_reply.started":"2022-01-02T05:35:09.986978Z","shell.execute_reply":"2022-01-02T05:35:10.021489Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='11'><li>Below 25 Yards 2019. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2019Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.023405Z","iopub.execute_input":"2022-01-02T05:35:10.024981Z","iopub.status.idle":"2022-01-02T05:35:10.041448Z","shell.execute_reply.started":"2022-01-02T05:35:10.024941Z","shell.execute_reply":"2022-01-02T05:35:10.040632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='12'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Best-Kickoff-Return-Below-25-Yards-2019.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.043055Z","iopub.execute_input":"2022-01-02T05:35:10.043746Z","iopub.status.idle":"2022-01-02T05:35:10.061478Z","shell.execute_reply.started":"2022-01-02T05:35:10.043709Z","shell.execute_reply":"2022-01-02T05:35:10.060632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='13'><li>Below 25 Yards 2020</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2020Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.062703Z","iopub.execute_input":"2022-01-02T05:35:10.063325Z","iopub.status.idle":"2022-01-02T05:35:10.115100Z","shell.execute_reply.started":"2022-01-02T05:35:10.063290Z","shell.execute_reply":"2022-01-02T05:35:10.114310Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='14'><li>Below 25 Yards 2020. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2020Below25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.116701Z","iopub.execute_input":"2022-01-02T05:35:10.117152Z","iopub.status.idle":"2022-01-02T05:35:10.140353Z","shell.execute_reply.started":"2022-01-02T05:35:10.117111Z","shell.execute_reply":"2022-01-02T05:35:10.139749Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='15'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Best-Kickoff-Return-Below-25-Yards-2020.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.141242Z","iopub.execute_input":"2022-01-02T05:35:10.141986Z","iopub.status.idle":"2022-01-02T05:35:10.179338Z","shell.execute_reply.started":"2022-01-02T05:35:10.141951Z","shell.execute_reply":"2022-01-02T05:35:10.178744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"16\"></a> <br>\n# Kickoff Return Above 25 Yards (Bad)\n* **Because Kickoff Touchback is better atleast opposite team starts from 25 Yrad Line**\n\n\n**<p id='17'><li>Above 25 Yards 2018</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2018Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.180414Z","iopub.execute_input":"2022-01-02T05:35:10.180793Z","iopub.status.idle":"2022-01-02T05:35:10.213075Z","shell.execute_reply.started":"2022-01-02T05:35:10.180752Z","shell.execute_reply":"2022-01-02T05:35:10.212502Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='18'><li>Above 25 Yards 2018. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2018Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.214050Z","iopub.execute_input":"2022-01-02T05:35:10.214696Z","iopub.status.idle":"2022-01-02T05:35:10.231764Z","shell.execute_reply.started":"2022-01-02T05:35:10.214660Z","shell.execute_reply":"2022-01-02T05:35:10.230934Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='19'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Kickoff-Return-Above-25-Yards-2018.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.232695Z","iopub.execute_input":"2022-01-02T05:35:10.233266Z","iopub.status.idle":"2022-01-02T05:35:10.260913Z","shell.execute_reply.started":"2022-01-02T05:35:10.233230Z","shell.execute_reply":"2022-01-02T05:35:10.260110Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='20'><li>Above 25 Yards 2019</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2019Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.262883Z","iopub.execute_input":"2022-01-02T05:35:10.263121Z","iopub.status.idle":"2022-01-02T05:35:10.290569Z","shell.execute_reply.started":"2022-01-02T05:35:10.263092Z","shell.execute_reply":"2022-01-02T05:35:10.289518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='21'><li>Above 25 Yards 2019. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2019Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.292253Z","iopub.execute_input":"2022-01-02T05:35:10.293262Z","iopub.status.idle":"2022-01-02T05:35:10.307908Z","shell.execute_reply.started":"2022-01-02T05:35:10.293216Z","shell.execute_reply":"2022-01-02T05:35:10.307098Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='22'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Kickoff-Return-Above-25-Yards-2019.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.309165Z","iopub.execute_input":"2022-01-02T05:35:10.309363Z","iopub.status.idle":"2022-01-02T05:35:10.347355Z","shell.execute_reply.started":"2022-01-02T05:35:10.309339Z","shell.execute_reply":"2022-01-02T05:35:10.346652Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='23'><li>Above 25 Yards 2020</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2020Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.348584Z","iopub.execute_input":"2022-01-02T05:35:10.349237Z","iopub.status.idle":"2022-01-02T05:35:10.383909Z","shell.execute_reply.started":"2022-01-02T05:35:10.349202Z","shell.execute_reply":"2022-01-02T05:35:10.383260Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='24'><li>Above 25 Yards 2020. More Kickoff Return Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2020Above25YardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.384898Z","iopub.execute_input":"2022-01-02T05:35:10.385716Z","iopub.status.idle":"2022-01-02T05:35:10.405254Z","shell.execute_reply.started":"2022-01-02T05:35:10.385678Z","shell.execute_reply":"2022-01-02T05:35:10.404443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='25'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Kickoff-Return-Above-25-Yards-2020.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.406452Z","iopub.execute_input":"2022-01-02T05:35:10.407068Z","iopub.status.idle":"2022-01-02T05:35:10.447386Z","shell.execute_reply.started":"2022-01-02T05:35:10.407027Z","shell.execute_reply":"2022-01-02T05:35:10.446533Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<a id=\"26\"></a> <br>\n# Lossing Yards (Very Bad, Rarely Happens)\n\n**<p id='27'><li>Lossing Yards 2018</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2018LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.448758Z","iopub.execute_input":"2022-01-02T05:35:10.448991Z","iopub.status.idle":"2022-01-02T05:35:10.466317Z","shell.execute_reply.started":"2022-01-02T05:35:10.448963Z","shell.execute_reply":"2022-01-02T05:35:10.465511Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='28'><li>Lossing Yards 2018. More Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2018LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.467617Z","iopub.execute_input":"2022-01-02T05:35:10.467878Z","iopub.status.idle":"2022-01-02T05:35:10.482613Z","shell.execute_reply.started":"2022-01-02T05:35:10.467850Z","shell.execute_reply":"2022-01-02T05:35:10.481506Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='29'><li>Video Model For Clear View</li></p>**","metadata":{}},{"cell_type":"code","source":"playVideo('../input/gb-special-play-video/GB-Kickoff-Return-Touchdown-Yards-2018.mp4')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.484264Z","iopub.execute_input":"2022-01-02T05:35:10.484788Z","iopub.status.idle":"2022-01-02T05:35:10.528566Z","shell.execute_reply.started":"2022-01-02T05:35:10.484743Z","shell.execute_reply":"2022-01-02T05:35:10.527795Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='30'><li>Lossing Yards 2019</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2019LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.532024Z","iopub.execute_input":"2022-01-02T05:35:10.532260Z","iopub.status.idle":"2022-01-02T05:35:10.549247Z","shell.execute_reply.started":"2022-01-02T05:35:10.532232Z","shell.execute_reply":"2022-01-02T05:35:10.548370Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='31'><li>Lossing Yards 2019. More Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2019LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.550589Z","iopub.execute_input":"2022-01-02T05:35:10.551269Z","iopub.status.idle":"2022-01-02T05:35:10.564116Z","shell.execute_reply.started":"2022-01-02T05:35:10.551221Z","shell.execute_reply":"2022-01-02T05:35:10.563472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='33'><li>Lossing Yards 2020</li></p>**","metadata":{}},{"cell_type":"code","source":"GBKickoffReturn2020LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.565349Z","iopub.execute_input":"2022-01-02T05:35:10.565705Z","iopub.status.idle":"2022-01-02T05:35:10.583202Z","shell.execute_reply.started":"2022-01-02T05:35:10.565678Z","shell.execute_reply":"2022-01-02T05:35:10.582559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**<p id='34'><li>Lossing Yards 2020. More Insights</li></p>**","metadata":{}},{"cell_type":"code","source":"mergedGBKickoffReturn2020LossYardsFrame","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-01-02T05:35:10.584533Z","iopub.execute_input":"2022-01-02T05:35:10.584967Z","iopub.status.idle":"2022-01-02T05:35:10.601805Z","shell.execute_reply.started":"2022-01-02T05:35:10.584926Z","shell.execute_reply":"2022-01-02T05:35:10.600951Z"},"trusted":true},"execution_count":null,"outputs":[]}]}