{"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\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\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":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"vid = pd.read_csv('../input/NFL-Punt-Analytics-Competition/video_review.csv')\nvid.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"game = pd.read_csv('../input/NFL-Punt-Analytics-Competition/game_data.csv')\ngame.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"game['concussion'] = np.isin(game['GameKey'], vid['GameKey'])\ngame.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prole = pd.read_csv('../input/NFL-Punt-Analytics-Competition/play_player_role_data.csv')\nprole.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prole['concussion'] = prole['concussion'] = np.isin(prole['GameKey'], vid['GameKey'])\nprole.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pinfo = pd.read_csv('../input/NFL-Punt-Analytics-Competition/play_information.csv')\npinfo.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pinfo['concussion'] = np.isin(pinfo['GameKey'], vid['GameKey'])\npinfo.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dist = pinfo['PlayDescription'].str.split(pat='punts', n=1, expand=True)\npinfo['punt_dist'] = dist[1].str.extract('(\\d+)')\npinfo['punt_dist'] = pinfo['punt_dist'].fillna(0)\npinfo['punt_dist'] = pd.to_numeric(pinfo['punt_dist'])\npinfo.head(10)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ngs_reg_2017_1_6 = pd.read_csv('../input/NFL-Punt-Analytics-Competition/NGS-2016-reg-wk1-6.csv')\nngs_reg_2017_7_12 = pd.read_csv('../input/NFL-Punt-Analytics-Competition/NGS-2016-reg-wk7-12.csv')\nngs_reg_2017_13_17 = pd.read_csv('../input/NFL-Punt-Analytics-Competition/NGS-2016-reg-wk13-17.csv')\n\nngs_reg_2017 = pd.concat([ngs_reg_2017_1_6,ngs_reg_2017_7_12,ngs_reg_2017_13_17])\nngs_reg_2017.head()\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ngs_reg_2017['concussion'] = np.isin(ngs_reg_2017['GameKey'], vid['GameKey'])\nngs_reg_2017.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Univariant Analysis**","metadata":{}},{"cell_type":"code","source":"from matplotlib import figure\nfig = figure.Figure(figsize=(10, 7.5))\nsns.countplot(x='Quarter', data=pinfo[pinfo['concussion'] == True], color='blue')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"game['Game_Start_Hour'] = game['Start_Time'].str.split(':').map(lambda x: x[0])\ngame.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig = figure.Figure(figsize=(10, 7.5))\nsns.countplot(x='Game_Start_Hour', data=game[game['concussion'] == True], color='blue')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f, x = plt.subplots(1,2, figsize=(16, 7.6))\nsns.countplot(x='Primary_Impact_Type', data=vid, color='orange', ax=x[0])\nsns.countplot(x='Player_Activity_Derived', data=vid, color='blue', ax=x[1])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f = figure.Figure(figsize=(16, 7.5))\nsns.boxplot(x=ngs_reg_2017[ngs_reg_2017['concussion'] == True]['x'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.violinplot(x=ngs_reg_2017[ngs_reg_2017['concussion'] == True]['x'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"set(game['Turf'].values)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rep = {\n    'Nat': 'Grass',\n    'Grass': 'Grass',\n    'gras': 'Grass',\n    'Arti': 'Artificial',\n    'Turf': 'Turf',\n    'turf': 'Turf',\n    'UBU': 'Ubu Speed',\n    'Synthetic': 'Synthetic'\n}\n\nclean_turf = np.array([], str)\n\nfor value in game['Turf'].values:\n    for k in list(rep.keys()):\n        if isinstance(value, str) and k in value:\n            clean_turf = np.append(clean_turf, rep[k])\n            break\n        elif value is np.nan:\n            clean_turf = np.append(clean_turf, np.nan)\n            break\n            \nlen(clean_turf)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"game['clean_turf'] = clean_turf","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot(x='clean_turf', data=game[game['concussion'] == True], color='blue')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prole['concussion'] = prole['concussion'].replace([True, False], [1, 0])\npr = prole.groupby(['Role'], as_index=False).agg({'concussion': 'sum'})\npr.sort_values(by=['concussion'], inplace=True, ascending=False)\npr","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import squarify\ncmap = matplotlib.cm.Blues\nmy_values = pr[pr['concussion'] != 0]['concussion']\nmini=min(my_values)\nmaxi=max(my_values)\nnorm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)\ncolors = [cmap(norm(value)) for value in my_values]\n\nplt.figure(figsize=(10, 10))\nsquarify.plot(sizes=pr[pr['concussion'] != 0]['concussion'], label=pr['Role'], alpha=0.5, color=colors)\nplt.axis('off')\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot(x='Quarter', hue='concussion', data=pinfo)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ax = sns.countplot(x='Player_Activity_Derived', hue='Friendly_Fire', data=vid)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot(x='Game_Start_Hour', data=game, hue='concussion')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot(x='clean_turf', data=game, hue='concussion')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"surface_proportion = game.groupby(['clean_turf', 'concussion']).agg({'GameKey': 'count'})\nsurface_proportion","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"surface_proportion.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"set(ngs_reg_2017[ngs_reg_2017['concussion'] == True]['GameKey'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hm = ngs_reg_2017[ngs_reg_2017['GameKey'] == 473]\nhm = hm[['x', 'y', 'concussion']]\nhm['x'] = hm['x'].astype(int).astype('category')\nhm['y'] = hm['y'].astype(int).astype('category')\nhm.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hm['concussion'] = hm['concussion'].replace([True, False], [1, 0])\nhm.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}