{"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":"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\n#NFL Big Data Bowl 2022 - notebookf8e72ba02a\n# Volatility as a coaching tool\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport datetime as dt\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\nimport csv\nfrom pathlib import Path\n#lists\nbig_data_nfl_files=[]\n# constants\ndataDir=Path('../input/nfl-big-data-bowl-2022')\n\n#for dirname, _, filenames in os.walk(dataDir):\n#    for filename in filenames:\n#        big_data_nfl_files.append(os.path.join(dirname, filename'))\nfile_plays = open(os.path.join(dataDir, 'plays.csv'))\nfile_tracking_2018 =  open(os.path.join(dataDir, 'tracking2018.csv'))\nfile_tracking_2019 =  open(os.path.join(dataDir, 'tracking2019.csv'))\nfile_tracking_2020 =  open(os.path.join(dataDir, 'tracking2020.csv'))\n\ncsv_file_plays_header = csv.reader(file_plays)\ncsv_file_tracking_2018_header = csv.reader(file_tracking_2018)\ncsv_file_tracking_2019_header = csv.reader(file_tracking_2019)\ncsv_file_tracking_2020_header = csv.reader(file_tracking_2020)\n\n# if(filename=='plays.csv'):\ncsv_plays_header = []\ncsv_plays_header = next(csv_file_plays_header)\nprint('File: [ %s ]' % ('plays.csv'))\n\n\n#List from plays.csv all specialTeamsPlayType unique \n#List from plays.csv all specialTeamsResult unique\nspecial_teams_playType, special_teams_result = [], []\nfor row in csv_file_plays_header:\n    if row[7] not in special_teams_playType:\n        special_teams_playType.append(row[7])\n    if row[8] not in special_teams_result:\n        special_teams_result.append(row[8]) \n#\nprint('ST Player type %s' % str(special_teams_playType)[1:-1])\nprint('ST Player result %s' % str(special_teams_result)[1:-1])\n#        \n\ndf_file_plays_reader = pd.read_csv(os.path.join(dataDir, 'plays.csv'))\n\nlst_all_tracking_csv = []\n\n#lst_all_tracking_csv.append( pd.read_csv(os.path.join(dataDir, 'tracking2018.csv')))\n#lst_all_tracking_csv.append( pd.read_csv(os.path.join(dataDir, 'tracking2019.csv')))\n#lst_all_tracking_csv.append( pd.read_csv(os.path.join(dataDir, 'tracking2020.csv')))\n#df_all_tracking = pd.concat(lst_all_tracking_csv, axis=0, ignore_index=True)\n\ndf_2020_tracking_csv = pd.read_csv(os.path.join(dataDir, 'tracking2020.csv'))\n\n#df_special_teams_playType = df_file_players_reader[~df_file_players_reader['specialTeamsPlayType'].isin(['Kickoff'])]\n#df_special_teams_playType_Kickoff_with_Returner = df_file_players_reader[df_file_players_reader['specialTeamsPlayType']=='Kickoff'  &  df_file_players_reader['returnerId']!='nan']\n#df_special_teams_playType_Kickoff_with_Returner = df_file_players_reader.query('specialTeamsPlayType == \"Kickoff\" & returnerId != \"nan\"')\nnan = np.nan\nkickoff='Kickoff'\ndf_special_teams_playType_Kickoff = df_file_plays_reader[df_file_plays_reader['specialTeamsPlayType']==kickoff]\ndf_special_teams_playType_Kickoff_with_Returner=df_special_teams_playType_Kickoff[df_special_teams_playType_Kickoff['returnerId'].isnull() != True] \ndf_special_teams_playType_Kickoff_with_KickBlocker=df_file_plays_reader[df_file_plays_reader['kickBlockerId'].isnull() != True] \n\ndf_special_teams_playType_Kickoff_NoBlocker_Returner=df_special_teams_playType_Kickoff[df_special_teams_playType_Kickoff['returnerId'].isnull()==True] \ndf_special_teams_playType_Kickoff_NoBlocker_Returner=df_special_teams_playType_Kickoff_NoBlocker_Returner[df_special_teams_playType_Kickoff_NoBlocker_Returner['kickBlockerId'].isnull()==True] \n\ndf_file_players_filtered_Kicker  = df_file_plays_reader[df_file_plays_reader['kickerId'] != 'NA']\ndf_file_players_filtered_Returner = df_file_plays_reader[df_file_plays_reader['returnerId'] != 'NA']\ndf_file_players_filtered_KickBlocker = df_file_plays_reader[df_file_plays_reader['kickBlockerId'] != 'NA']\nls_kicker = []\nls_returner = []\nls_blocker = []\n#group it all for kind of return\n#redo it all for other kind of specialTeamPlayType\nds_labels = []\n#\nds_labels.append('gameId')\nds_labels.append('playId')\nds_labels.append('frameId')\nds_labels.append('time')\nds_labels.append('kickBlockerId')\nds_labels.append('kickerId') \nds_labels.append('returnerId')           \nds_labels.append('possessionTeam')\nds_labels.append('specialTeamsPlayType')\nds_labels.append('specialTeamsResult')                                  \nds_labels.append('x')\nds_labels.append('y')\nds_labels.append('s')  \nds_labels.append('a') \nds_labels.append('dis')\nds_labels.append('o') \nds_labels.append('dir')\nds_labels.append('event')\nds_labels.append('displayName')\nds_labels.append('jerseyNumber')\nds_labels.append('position')\nds_labels.append('playDirection')\nds_labels.append('team')\nds_labels.append('yardlineSide')\nds_labels.append('yardlineNumber')\nds_labels.append('gameClock')\nds_labels.append('penaltyCodes')            \nds_labels.append('penaltyJerseyNumber')  \nds_labels.append('penaltyYards')\nds_labels.append('preSnapHomeScore')         \nds_labels.append('preSnapVisitorScore')\nds_labels.append('passResult')\nds_labels.append('kickLength')\nds_labels.append('kickReturnYardage')\nds_labels.append('playResult')\nds_labels.append('absoluteYardlineNumber')\n#\nds_data = []\nraw_data = []\ntotal_counter=0\n#for index, row in df_special_teams_playType_Kickoff_with_KickBlocker.iterrows():\nfor index, row in df_file_plays_reader.iterrows():\n    nan = np.nan\n    kickblocker_id =row['kickBlockerId']\n    kicker_id = row['kickerId']\n    game_id=row['gameId']\n    play_id=row['playId']\n    #\n    df_2020_tracking_csv_game = df_2020_tracking_csv[df_2020_tracking_csv['gameId']==game_id]\n    df_2020_tracking_csv_gplay = df_2020_tracking_csv_game[df_2020_tracking_csv_game['playId']==play_id]\n    counter=0\n    raw_data = []\n    for inner_index, inner_row in df_2020_tracking_csv_gplay.iterrows():\n        inner_game_id=inner_row['gameId']\n        inner_play_id=inner_row['playId']\n        nfl_id=inner_row['nflId']\n        if (nfl_id==kicker_id or nfl_id==kickblocker_id):\n            if counter==0:\n                print('========= [ KICKOFF WITH KICKBLOCKER REPORT  ] =======' )\n                print('Game: [  %s ]' % (str(row['gameId'])))            #gameId \n                print('Possession Team: [  %s ]' % (str(row['possessionTeam'])))                #possessionTeam \n                print('ST Play Time: [  %s ]' % (str(row['specialTeamsPlayType'])))  #specialTeamsPlayType                \n                print('ST Result: [  %s ]' % (str(row['specialTeamsResult']))) \n                print('%d) kiker: [  %s ]' % (index, str(row['kickerId'])))           #kickerId \n                print('%d) returner: [  %s ]' % (index, str(row['returnerId']))) \n                print('%d) kickblocker: [  %s ]' % (index, str(row['kickBlockerId']))) \n                print('============================================') \n                \n            #\n            ds_labels.append('gameId')\n            ds_data.append(game_id)\n            ds_labels.append('playId')\n            ds_data.append(play_id)   \n            ds_labels.append('frameId')\n            ds_data.append(inner_row['frameId']) \n            ds_labels.append('time')\n            ds_data.append(inner_row['time']) \n            ds_labels.append('kickBlockerId')\n            ds_data.append(row['kickBlockerId'])\n            ds_labels.append('kickerId')\n            ds_data.append(row['kickerId'])   \n            ds_labels.append('returnerId')\n            ds_data.append(row['returnerId'])             \n            ds_labels.append('possessionTeam')\n            ds_data.append(row['possessionTeam'])\n            ds_labels.append('specialTeamsPlayType')\n            ds_data.append(row['specialTeamsPlayType']) \n            ds_labels.append('specialTeamsResult')\n            ds_data.append(row['specialTeamsResult'])                                   \n            ds_labels.append('x')\n            ds_data.append(inner_row['x']) \n            ds_labels.append('y')\n            ds_data.append(inner_row['y']) \n            ds_labels.append('s')\n            ds_data.append(inner_row['s'])    \n            ds_labels.append('a')\n            ds_data.append(inner_row['a'])  \n            ds_labels.append('dis')\n            ds_data.append(inner_row['dis'])  \n            ds_labels.append('o')\n            ds_data.append(inner_row['o'])  \n            ds_labels.append('dir')\n            ds_data.append(inner_row['dir'])  \n            ds_labels.append('event')\n            ds_data.append(inner_row['event']) \n            ds_labels.append('displayName')\n            ds_data.append(inner_row['displayName']) \n            ds_labels.append('jerseyNumber')\n            ds_data.append(inner_row['jerseyNumber']) \n            ds_labels.append('position')\n            ds_data.append(inner_row['position']) \n            ds_labels.append('playDirection')\n            ds_data.append(inner_row['playDirection']) \n            ds_labels.append('team')\n            ds_data.append(inner_row['team']) \n            ds_labels.append('yardlineSide')\n            ds_data.append(row['yardlineSide'])     \n            ds_labels.append('yardlineNumber')\n            ds_data.append(row['yardlineNumber']) \n            ds_labels.append('gameClock')\n            ds_data.append(row['gameClock']) \n            ds_labels.append('penaltyCodes')\n            ds_data.append(row['penaltyCodes'])             \n            ds_labels.append('penaltyJerseyNumbers')\n            ds_data.append(row['penaltyJerseyNumbers'])    \n            ds_labels.append('penaltyYards')\n            ds_data.append(row['penaltyYards']) \n            ds_labels.append('preSnapHomeScore')\n            ds_data.append(row['preSnapHomeScore'])             \n            ds_labels.append('preSnapVisitorScore')\n            ds_data.append(row['preSnapVisitorScore'])  \n            ds_labels.append('passResult')\n            ds_data.append(row['passResult']) \n            ds_labels.append('kickLength')\n            ds_data.append(row['kickLength']) \n            ds_labels.append('kickReturnYardage')\n            ds_data.append(row['kickReturnYardage']) \n            ds_labels.append('playResult')\n            ds_data.append(row['playResult']) \n            ds_labels.append('absoluteYardlineNumber')\n            ds_data.append(row['absoluteYardlineNumber'])\n            # append row to empty df\n            raw_data.append(ds_data)\n            \n            print('Exporting to: %d_%d_%d_plays_n_tracking.csv' % (game_id,play_id,total_counter))\n            df_play_n_track = pd.DataFrame(raw_data, columns = ds_labels)\n            df_play_n_track.to_csv(os.path.join('./',str(game_id)+'_'+str(play_id)+'_'+str(total_counter)+'_plays_n_tracking.csv'), index = False)\n            \n            ds_data=[]\n            print('Time: %s Position: ( %d, %d )  Speed: %s Aceleration: %s ' % (\n                 str(inner_row['time']),inner_row['x'],inner_row['y'],str(inner_row['s']),str(inner_row['a']))) \n            counter+=1\n        if counter > 1000:\n            break\n    #\n    total_counter+=1\n    if total_counter > 10:\n        break\n\n\n#    \n#print('Big Data Files: %s' % big_data_nfl_files)\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":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-01-07T00:11:47.670418Z","iopub.execute_input":"2022-01-07T00:11:47.671344Z","iopub.status.idle":"2022-01-07T00:12:15.655718Z","shell.execute_reply.started":"2022-01-07T00:11:47.671283Z","shell.execute_reply":"2022-01-07T00:12:15.654836Z"},"trusted":true},"execution_count":null,"outputs":[]}]}