From d8d7addf057f8756dbea00b61ed4ee904f4913e4 Mon Sep 17 00:00:00 2001 From: lorenzoliuzzo Date: Sat, 6 Sep 2025 18:36:09 +0200 Subject: [PATCH 1/2] New notebook for exploring the actions obtained from the live PlayByPlay endpoint. --- notebooks/actions.ipynb | 555 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 notebooks/actions.ipynb diff --git a/notebooks/actions.ipynb b/notebooks/actions.ipynb new file mode 100644 index 0000000..2a05c79 --- /dev/null +++ b/notebooks/actions.ipynb @@ -0,0 +1,555 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1b292918-2503-4d0e-9525-410b65d6e0c1", + "metadata": {}, + "source": [ + "# Actions Data Exploration\n", + "In this notebook we'll explore the different `actionType`s that compose the data obtained from the live `PlayByPlay` endpoint." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5feafd18-b833-48d5-9820-bb98e971b6ce", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "88999795-b2d5-4112-9193-3a743b03d835", + "metadata": {}, + "outputs": [], + "source": [ + "SEASON_ID = '22024'\n", + "GAME_ID = '0022400630'" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e8c26dc0-c5be-4797-b5c1-e0d061053e94", + "metadata": {}, + "outputs": [], + "source": [ + "data_path = Path(\"~/MBAI/data\").expanduser()\n", + "season_path = data_path / f\"rs{SEASON_ID}\"\n", + "game_path = season_path / f\"g{GAME_ID}\"\n", + "pbp_path = game_path / \"playbyplay\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4cf9efa6-a42d-47b2-9c02-5c89730a1281", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(pbp_path / \"actions.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "b12308eb-95b2-4070-b0ce-bb39e693a60a", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clocktimeActualperiodactionTypesubTypepersonIdxypossessionscoreHome...jumpBallRecoveredPersonIdjumpBallWonPersonIdjumpBallLostPersonIdshotDistanceshotResultblockPersonIdassistPersonIdofficialIdfoulDrawnPersonIdstealPersonId
00 days 00:12:002025-01-25 00:10:48.500000+00:001periodstartNaNNaNNaNNaN0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
10 days 00:11:572025-01-25 00:10:50.500000+00:001jumpballrecovered203995.0NaNNaN1.610613e+090...203995.01631109.01642270.0NaNNaNNaNNaNNaNNaNNaN
20 days 00:11:372025-01-25 00:11:10.200000+00:0012ptDUNK1631109.08.8851.971.610613e+090...NaNNaNNaN3.25False1642270.0NaNNaNNaNNaN
30 days 00:11:372025-01-25 00:11:10.200000+00:001blockNaN1642270.0NaNNaN1.610613e+090...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
40 days 00:11:342025-01-25 00:11:13.200000+00:001rebounddefensive1642270.0NaNNaN1.610613e+090...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
6060 days 00:00:10.7000002025-01-25 02:30:23.300000+00:0042ptDUNK1631109.094.0651.721.610613e+0995...NaNNaNNaN0.93TrueNaN1630182.0NaNNaNNaN
6070 days 00:00:03.3000002025-01-25 02:30:35.800000+00:0042ptDUNK1641739.07.4452.701.610613e+0995...NaNNaNNaN2.20TrueNaN1629014.0NaNNaNNaN
6080 days 00:00:002025-01-25 02:30:44.700000+00:0042ptLayup1631109.094.4447.061.610613e+0997...NaNNaNNaN1.47TrueNaN1641733.0NaNNaNNaN
6090 days 00:00:002025-01-25 02:30:53.700000+00:004periodendNaNNaNNaN1.610613e+0997...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
6100 days 00:00:002025-01-25 02:30:57.900000+00:004gameendNaNNaNNaNNaN97...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

611 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "0 0 days 00:12:00 2025-01-25 00:10:48.500000+00:00 1 \n", + "1 0 days 00:11:57 2025-01-25 00:10:50.500000+00:00 1 \n", + "2 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", + "3 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", + "4 0 days 00:11:34 2025-01-25 00:11:13.200000+00:00 1 \n", + ".. ... ... ... \n", + "606 0 days 00:00:10.700000 2025-01-25 02:30:23.300000+00:00 4 \n", + "607 0 days 00:00:03.300000 2025-01-25 02:30:35.800000+00:00 4 \n", + "608 0 days 00:00:00 2025-01-25 02:30:44.700000+00:00 4 \n", + "609 0 days 00:00:00 2025-01-25 02:30:53.700000+00:00 4 \n", + "610 0 days 00:00:00 2025-01-25 02:30:57.900000+00:00 4 \n", + "\n", + " actionType subType personId x y possession scoreHome \\\n", + "0 period start NaN NaN NaN NaN 0 \n", + "1 jumpball recovered 203995.0 NaN NaN 1.610613e+09 0 \n", + "2 2pt DUNK 1631109.0 8.88 51.97 1.610613e+09 0 \n", + "3 block NaN 1642270.0 NaN NaN 1.610613e+09 0 \n", + "4 rebound defensive 1642270.0 NaN NaN 1.610613e+09 0 \n", + ".. ... ... ... ... ... ... ... \n", + "606 2pt DUNK 1631109.0 94.06 51.72 1.610613e+09 95 \n", + "607 2pt DUNK 1641739.0 7.44 52.70 1.610613e+09 95 \n", + "608 2pt Layup 1631109.0 94.44 47.06 1.610613e+09 97 \n", + "609 period end NaN NaN NaN 1.610613e+09 97 \n", + "610 game end NaN NaN NaN NaN 97 \n", + "\n", + " ... jumpBallRecoveredPersonId jumpBallWonPersonId jumpBallLostPersonId \\\n", + "0 ... NaN NaN NaN \n", + "1 ... 203995.0 1631109.0 1642270.0 \n", + "2 ... NaN NaN NaN \n", + "3 ... NaN NaN NaN \n", + "4 ... NaN NaN NaN \n", + ".. ... ... ... ... \n", + "606 ... NaN NaN NaN \n", + "607 ... NaN NaN NaN \n", + "608 ... NaN NaN NaN \n", + "609 ... NaN NaN NaN \n", + "610 ... NaN NaN NaN \n", + "\n", + " shotDistance shotResult blockPersonId assistPersonId officialId \\\n", + "0 NaN NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN NaN \n", + "2 3.25 False 1642270.0 NaN NaN \n", + "3 NaN NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN NaN \n", + ".. ... ... ... ... ... \n", + "606 0.93 True NaN 1630182.0 NaN \n", + "607 2.20 True NaN 1629014.0 NaN \n", + "608 1.47 True NaN 1641733.0 NaN \n", + "609 NaN NaN NaN NaN NaN \n", + "610 NaN NaN NaN NaN NaN \n", + "\n", + " foulDrawnPersonId stealPersonId \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN \n", + ".. ... ... \n", + "606 NaN NaN \n", + "607 NaN NaN \n", + "608 NaN NaN \n", + "609 NaN NaN \n", + "610 NaN NaN \n", + "\n", + "[611 rows x 23 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "97c3221c-1da0-4675-bff6-b5e21cfdf587", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['period', 'jumpball', '2pt', 'block', 'rebound', '3pt', 'foul',\n", + " 'substitution', 'timeout', 'turnover', 'steal', 'freethrow',\n", + " 'violation', 'game'], dtype=object)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['actionType'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "53109396-f4b5-47a8-b14d-eecd18a89ea8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'2pt': ['DUNK', 'Jump Shot', 'Layup', 'Hook'],\n", + " '3pt': ['Jump Shot'],\n", + " 'block': [nan],\n", + " 'foul': ['personal', 'offensive', 'technical'],\n", + " 'freethrow': ['1 of 2', '2 of 2', '1 of 1'],\n", + " 'game': ['end'],\n", + " 'jumpball': ['recovered'],\n", + " 'period': ['start', 'end'],\n", + " 'rebound': ['defensive', 'offensive'],\n", + " 'steal': [nan],\n", + " 'substitution': ['out', 'in'],\n", + " 'timeout': ['full'],\n", + " 'turnover': ['out-of-bounds',\n", + " 'traveling',\n", + " 'lost ball',\n", + " 'bad pass',\n", + " 'offensive foul',\n", + " 'shot clock'],\n", + " 'violation': ['kicked ball',\n", + " 'defensive goaltending',\n", + " 'lane',\n", + " 'delay-of-game']}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "action_subtypes = {\n", + " action: action_df['subType'].unique().tolist()\n", + " for action, action_df in df.groupby('actionType')\n", + "}\n", + "\n", + "action_subtypes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5907257c-5689-4102-968c-cb6cdd5a3193", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 51d4cab336fc6d2f2b99a8ac2d366791e1302357 Mon Sep 17 00:00:00 2001 From: lorenzoliuzzo Date: Sat, 6 Sep 2025 20:07:14 +0200 Subject: [PATCH 2/2] Update notebooks/action.ipynb --- notebooks/actions.ipynb | 3448 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 3242 insertions(+), 206 deletions(-) diff --git a/notebooks/actions.ipynb b/notebooks/actions.ipynb index 2a05c79..527bc36 100644 --- a/notebooks/actions.ipynb +++ b/notebooks/actions.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "id": "5feafd18-b833-48d5-9820-bb98e971b6ce", "metadata": {}, "outputs": [], @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "id": "88999795-b2d5-4112-9193-3a743b03d835", "metadata": {}, "outputs": [], @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "id": "e8c26dc0-c5be-4797-b5c1-e0d061053e94", "metadata": {}, "outputs": [], @@ -46,20 +46,34 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "id": "4cf9efa6-a42d-47b2-9c02-5c89730a1281", "metadata": {}, "outputs": [], "source": [ - "df = pd.read_csv(pbp_path / \"actions.csv\")" + "df = pd.read_parquet(pbp_path / \"actions.parquet\")" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "b12308eb-95b2-4070-b0ce-bb39e693a60a", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/mrrobot/anaconda3/envs/MBAI/lib/python3.13/site-packages/pandas/io/formats/format.py:1458: RuntimeWarning: overflow encountered in cast\n", + " has_large_values = (abs_vals > 1e6).any()\n", + "/home/mrrobot/anaconda3/envs/MBAI/lib/python3.13/site-packages/pandas/io/formats/format.py:1458: RuntimeWarning: overflow encountered in cast\n", + " has_large_values = (abs_vals > 1e6).any()\n", + "/home/mrrobot/anaconda3/envs/MBAI/lib/python3.13/site-packages/pandas/io/formats/format.py:1458: RuntimeWarning: overflow encountered in cast\n", + " has_large_values = (abs_vals > 1e6).any()\n", + "/home/mrrobot/anaconda3/envs/MBAI/lib/python3.13/site-packages/pandas/io/formats/format.py:1458: RuntimeWarning: overflow encountered in cast\n", + " has_large_values = (abs_vals > 1e6).any()\n" + ] + }, { "data": { "text/html": [ @@ -112,22 +126,22 @@ " 1\n", " period\n", " start\n", + " <NA>\n", " NaN\n", " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", " 0\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 1\n", @@ -136,22 +150,22 @@ " 1\n", " jumpball\n", " recovered\n", - " 203995.0\n", + " 203995\n", " NaN\n", " NaN\n", - " 1.610613e+09\n", + " 1610612766\n", " 0\n", " ...\n", - " 203995.0\n", - " 1631109.0\n", - " 1642270.0\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 203995\n", + " 1631109\n", + " 1642270\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 2\n", @@ -160,22 +174,22 @@ " 1\n", " 2pt\n", " DUNK\n", - " 1631109.0\n", - " 8.88\n", - " 51.97\n", - " 1.610613e+09\n", + " 1631109\n", + " 8.882812\n", + " 51.96875\n", + " 1610612766\n", " 0\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 3.25\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " 3.250000\n", " False\n", - " 1642270.0\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 1642270\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 3\n", @@ -183,23 +197,23 @@ " 2025-01-25 00:11:10.200000+00:00\n", " 1\n", " block\n", + " \n", + " 1642270\n", " NaN\n", - " 1642270.0\n", " NaN\n", - " NaN\n", - " 1.610613e+09\n", + " 1610612766\n", " 0\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 4\n", @@ -208,22 +222,22 @@ " 1\n", " rebound\n", " defensive\n", - " 1642270.0\n", + " 1642270\n", " NaN\n", " NaN\n", - " 1.610613e+09\n", + " 1610612757\n", " 0\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " ...\n", @@ -256,22 +270,22 @@ " 4\n", " 2pt\n", " DUNK\n", - " 1631109.0\n", - " 94.06\n", - " 51.72\n", - " 1.610613e+09\n", + " 1631109\n", + " 94.062500\n", + " 51.71875\n", + " 1610612766\n", " 95\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 0.93\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " 0.930176\n", " True\n", - " NaN\n", - " 1630182.0\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " 1630182\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 607\n", @@ -280,22 +294,22 @@ " 4\n", " 2pt\n", " DUNK\n", - " 1641739.0\n", - " 7.44\n", - " 52.70\n", - " 1.610613e+09\n", + " 1641739\n", + " 7.441406\n", + " 52.68750\n", + " 1610612757\n", " 95\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 2.20\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " 2.199219\n", " True\n", - " NaN\n", - " 1629014.0\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " 1629014\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 608\n", @@ -304,22 +318,22 @@ " 4\n", " 2pt\n", " Layup\n", - " 1631109.0\n", - " 94.44\n", - " 47.06\n", - " 1.610613e+09\n", + " 1631109\n", + " 94.437500\n", + " 47.06250\n", + " 1610612766\n", " 97\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 1.47\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " 1.469727\n", " True\n", - " NaN\n", - " 1641733.0\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " 1641733\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 609\n", @@ -328,22 +342,22 @@ " 4\n", " period\n", " end\n", + " <NA>\n", " NaN\n", " NaN\n", - " NaN\n", - " 1.610613e+09\n", + " 1610612757\n", " 97\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", " 610\n", @@ -352,22 +366,22 @@ " 4\n", " game\n", " end\n", + " <NA>\n", " NaN\n", " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", " 97\n", " ...\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " NaN\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", + " <NA>\n", " \n", " \n", "\n", @@ -375,75 +389,75 @@ "" ], "text/plain": [ - " clock timeActual period \\\n", - "0 0 days 00:12:00 2025-01-25 00:10:48.500000+00:00 1 \n", - "1 0 days 00:11:57 2025-01-25 00:10:50.500000+00:00 1 \n", - "2 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", - "3 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", - "4 0 days 00:11:34 2025-01-25 00:11:13.200000+00:00 1 \n", - ".. ... ... ... \n", - "606 0 days 00:00:10.700000 2025-01-25 02:30:23.300000+00:00 4 \n", - "607 0 days 00:00:03.300000 2025-01-25 02:30:35.800000+00:00 4 \n", - "608 0 days 00:00:00 2025-01-25 02:30:44.700000+00:00 4 \n", - "609 0 days 00:00:00 2025-01-25 02:30:53.700000+00:00 4 \n", - "610 0 days 00:00:00 2025-01-25 02:30:57.900000+00:00 4 \n", - "\n", - " actionType subType personId x y possession scoreHome \\\n", - "0 period start NaN NaN NaN NaN 0 \n", - "1 jumpball recovered 203995.0 NaN NaN 1.610613e+09 0 \n", - "2 2pt DUNK 1631109.0 8.88 51.97 1.610613e+09 0 \n", - "3 block NaN 1642270.0 NaN NaN 1.610613e+09 0 \n", - "4 rebound defensive 1642270.0 NaN NaN 1.610613e+09 0 \n", - ".. ... ... ... ... ... ... ... \n", - "606 2pt DUNK 1631109.0 94.06 51.72 1.610613e+09 95 \n", - "607 2pt DUNK 1641739.0 7.44 52.70 1.610613e+09 95 \n", - "608 2pt Layup 1631109.0 94.44 47.06 1.610613e+09 97 \n", - "609 period end NaN NaN NaN 1.610613e+09 97 \n", - "610 game end NaN NaN NaN NaN 97 \n", - "\n", - " ... jumpBallRecoveredPersonId jumpBallWonPersonId jumpBallLostPersonId \\\n", - "0 ... NaN NaN NaN \n", - "1 ... 203995.0 1631109.0 1642270.0 \n", - "2 ... NaN NaN NaN \n", - "3 ... NaN NaN NaN \n", - "4 ... NaN NaN NaN \n", - ".. ... ... ... ... \n", - "606 ... NaN NaN NaN \n", - "607 ... NaN NaN NaN \n", - "608 ... NaN NaN NaN \n", - "609 ... NaN NaN NaN \n", - "610 ... NaN NaN NaN \n", - "\n", - " shotDistance shotResult blockPersonId assistPersonId officialId \\\n", - "0 NaN NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN NaN \n", - "2 3.25 False 1642270.0 NaN NaN \n", - "3 NaN NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN NaN \n", - ".. ... ... ... ... ... \n", - "606 0.93 True NaN 1630182.0 NaN \n", - "607 2.20 True NaN 1629014.0 NaN \n", - "608 1.47 True NaN 1641733.0 NaN \n", - "609 NaN NaN NaN NaN NaN \n", - "610 NaN NaN NaN NaN NaN \n", - "\n", - " foulDrawnPersonId stealPersonId \n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 NaN NaN \n", - ".. ... ... \n", - "606 NaN NaN \n", - "607 NaN NaN \n", - "608 NaN NaN \n", - "609 NaN NaN \n", - "610 NaN NaN \n", + " clock timeActual period \\\n", + "0 0 days 00:12:00 2025-01-25 00:10:48.500000+00:00 1 \n", + "1 0 days 00:11:57 2025-01-25 00:10:50.500000+00:00 1 \n", + "2 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", + "3 0 days 00:11:37 2025-01-25 00:11:10.200000+00:00 1 \n", + "4 0 days 00:11:34 2025-01-25 00:11:13.200000+00:00 1 \n", + ".. ... ... ... \n", + "606 0 days 00:00:10.700000 2025-01-25 02:30:23.300000+00:00 4 \n", + "607 0 days 00:00:03.300000 2025-01-25 02:30:35.800000+00:00 4 \n", + "608 0 days 00:00:00 2025-01-25 02:30:44.700000+00:00 4 \n", + "609 0 days 00:00:00 2025-01-25 02:30:53.700000+00:00 4 \n", + "610 0 days 00:00:00 2025-01-25 02:30:57.900000+00:00 4 \n", + "\n", + " actionType subType personId x y possession \\\n", + "0 period start NaN NaN \n", + "1 jumpball recovered 203995 NaN NaN 1610612766 \n", + "2 2pt DUNK 1631109 8.882812 51.96875 1610612766 \n", + "3 block 1642270 NaN NaN 1610612766 \n", + "4 rebound defensive 1642270 NaN NaN 1610612757 \n", + ".. ... ... ... ... ... ... \n", + "606 2pt DUNK 1631109 94.062500 51.71875 1610612766 \n", + "607 2pt DUNK 1641739 7.441406 52.68750 1610612757 \n", + "608 2pt Layup 1631109 94.437500 47.06250 1610612766 \n", + "609 period end NaN NaN 1610612757 \n", + "610 game end NaN NaN \n", + "\n", + " scoreHome ... jumpBallRecoveredPersonId jumpBallWonPersonId \\\n", + "0 0 ... \n", + "1 0 ... 203995 1631109 \n", + "2 0 ... \n", + "3 0 ... \n", + "4 0 ... \n", + ".. ... ... ... ... \n", + "606 95 ... \n", + "607 95 ... \n", + "608 97 ... \n", + "609 97 ... \n", + "610 97 ... \n", + "\n", + " jumpBallLostPersonId shotDistance shotResult blockPersonId \\\n", + "0 NaN \n", + "1 1642270 NaN \n", + "2 3.250000 False 1642270 \n", + "3 NaN \n", + "4 NaN \n", + ".. ... ... ... ... \n", + "606 0.930176 True \n", + "607 2.199219 True \n", + "608 1.469727 True \n", + "609 NaN \n", + "610 NaN \n", + "\n", + " assistPersonId officialId foulDrawnPersonId stealPersonId \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + ".. ... ... ... ... \n", + "606 1630182 \n", + "607 1629014 \n", + "608 1641733 \n", + "609 \n", + "610 \n", "\n", "[611 rows x 23 columns]" ] }, - "execution_count": 12, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -454,19 +468,22 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "id": "97c3221c-1da0-4675-bff6-b5e21cfdf587", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(['period', 'jumpball', '2pt', 'block', 'rebound', '3pt', 'foul',\n", - " 'substitution', 'timeout', 'turnover', 'steal', 'freethrow',\n", - " 'violation', 'game'], dtype=object)" + "\n", + "[ 'period', 'jumpball', '2pt', 'block',\n", + " 'rebound', '3pt', 'foul', 'substitution',\n", + " 'timeout', 'turnover', 'steal', 'freethrow',\n", + " 'violation', 'game']\n", + "Length: 14, dtype: string" ] }, - "execution_count": 13, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -477,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "id": "53109396-f4b5-47a8-b14d-eecd18a89ea8", "metadata": {}, "outputs": [ @@ -486,14 +503,14 @@ "text/plain": [ "{'2pt': ['DUNK', 'Jump Shot', 'Layup', 'Hook'],\n", " '3pt': ['Jump Shot'],\n", - " 'block': [nan],\n", + " 'block': [''],\n", " 'foul': ['personal', 'offensive', 'technical'],\n", " 'freethrow': ['1 of 2', '2 of 2', '1 of 1'],\n", " 'game': ['end'],\n", " 'jumpball': ['recovered'],\n", " 'period': ['start', 'end'],\n", " 'rebound': ['defensive', 'offensive'],\n", - " 'steal': [nan],\n", + " 'steal': [''],\n", " 'substitution': ['out', 'in'],\n", " 'timeout': ['full'],\n", " 'turnover': ['out-of-bounds',\n", @@ -508,7 +525,7 @@ " 'delay-of-game']}" ] }, - "execution_count": 14, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -524,10 +541,3029 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "5907257c-5689-4102-968c-cb6cdd5a3193", "metadata": {}, "outputs": [], + "source": [ + "df_by_action = df.groupby('actionType')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "dd631ef5-7678-4c97-8418-37e3b4f4f7d2", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypepossessionscoreHomescoreAway
00 days 00:12:002025-01-25 00:10:48.500000+00:001periodstart<NA>00
1220 days 00:00:002025-01-25 00:31:45.400000+00:001periodend16106127663022
1290 days 00:12:002025-01-25 00:35:10.900000+00:002periodstart16106127573022
2720 days 00:00:002025-01-25 01:03:32.200000+00:002periodend16106127575450
2790 days 00:12:002025-01-25 01:18:44.200000+00:003periodstart16106127575450
4360 days 00:00:002025-01-25 01:51:09+00:003periodend16106127577573
4470 days 00:12:002025-01-25 01:53:43.100000+00:004periodstart16106127667573
6090 days 00:00:002025-01-25 02:30:53.700000+00:004periodend161061275797102
\n", + "
" + ], + "text/plain": [ + " clock timeActual period actionType \\\n", + "0 0 days 00:12:00 2025-01-25 00:10:48.500000+00:00 1 period \n", + "122 0 days 00:00:00 2025-01-25 00:31:45.400000+00:00 1 period \n", + "129 0 days 00:12:00 2025-01-25 00:35:10.900000+00:00 2 period \n", + "272 0 days 00:00:00 2025-01-25 01:03:32.200000+00:00 2 period \n", + "279 0 days 00:12:00 2025-01-25 01:18:44.200000+00:00 3 period \n", + "436 0 days 00:00:00 2025-01-25 01:51:09+00:00 3 period \n", + "447 0 days 00:12:00 2025-01-25 01:53:43.100000+00:00 4 period \n", + "609 0 days 00:00:00 2025-01-25 02:30:53.700000+00:00 4 period \n", + "\n", + " subType possession scoreHome scoreAway \n", + "0 start 0 0 \n", + "122 end 1610612766 30 22 \n", + "129 start 1610612757 30 22 \n", + "272 end 1610612757 54 50 \n", + "279 start 1610612757 54 50 \n", + "436 end 1610612757 75 73 \n", + "447 start 1610612766 75 73 \n", + "609 end 1610612757 97 102 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "period_df = df_by_action.get_group('period').dropna(how='all', axis=1)\n", + "period_df" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "07281115-a591-477e-a2e9-0ff2420b414c", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypescoreHomescoreAway
6100 days2025-01-25 02:30:57.900000+00:004gameend97102
\n", + "
" + ], + "text/plain": [ + " clock timeActual period actionType subType \\\n", + "610 0 days 2025-01-25 02:30:57.900000+00:00 4 game end \n", + "\n", + " scoreHome scoreAway \n", + "610 97 102 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "game_df = df_by_action.get_group('game').dropna(how='all', axis=1)\n", + "game_df" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2fb84030-5b2e-4bd9-9f21-d016a3bcf738", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamIddescriptorjumpBallRecoveredPersonIdjumpBallWonPersonIdjumpBallLostPersonId
10 days 00:11:572025-01-25 00:10:50.500000+00:001jumpballrecovered2039951610612766001610612766startperiod20399516311091642270
\n", + "
" + ], + "text/plain": [ + " clock timeActual period actionType \\\n", + "1 0 days 00:11:57 2025-01-25 00:10:50.500000+00:00 1 jumpball \n", + "\n", + " subType personId possession scoreHome scoreAway teamId \\\n", + "1 recovered 203995 1610612766 0 0 1610612766 \n", + "\n", + " descriptor jumpBallRecoveredPersonId jumpBallWonPersonId \\\n", + "1 startperiod 203995 1631109 \n", + "\n", + " jumpBallLostPersonId \n", + "1 1642270 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jumpball_df = df_by_action.get_group('jumpball').dropna(how='all', axis=1)\n", + "jumpball_df" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b2ff37ef-a536-4ee9-b12a-6a89dd0c1589", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamId
390 days 00:07:112025-01-25 00:15:59.700000+00:001substitutionout1628998161061275710121610612766
400 days 00:07:112025-01-25 00:15:59.700000+00:001substitutionout1642270161061275710121610612757
410 days 00:07:112025-01-25 00:15:59.700000+00:001substitutionout1629014161061275710121610612757
420 days 00:07:112025-01-25 00:15:59.700000+00:001substitutionin1629006161061275710121610612766
430 days 00:07:112025-01-25 00:15:59.700000+00:001substitutionin1630703161061275710121610612757
.................................
5970 days 00:00:17.6000002025-01-25 02:28:15.800000+00:004substitutionin1631217161061275793991610612766
6000 days 00:00:17.6000002025-01-25 02:29:25.600000+00:004substitutionout16290061610612766931001610612766
6010 days 00:00:17.6000002025-01-25 02:29:25.600000+00:004substitutionout16312171610612766931001610612766
6020 days 00:00:17.6000002025-01-25 02:29:25.600000+00:004substitutionin16423541610612766931001610612766
6030 days 00:00:17.6000002025-01-25 02:29:25.600000+00:004substitutionin2039951610612766931001610612766
\n", + "

122 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "39 0 days 00:07:11 2025-01-25 00:15:59.700000+00:00 1 \n", + "40 0 days 00:07:11 2025-01-25 00:15:59.700000+00:00 1 \n", + "41 0 days 00:07:11 2025-01-25 00:15:59.700000+00:00 1 \n", + "42 0 days 00:07:11 2025-01-25 00:15:59.700000+00:00 1 \n", + "43 0 days 00:07:11 2025-01-25 00:15:59.700000+00:00 1 \n", + ".. ... ... ... \n", + "597 0 days 00:00:17.600000 2025-01-25 02:28:15.800000+00:00 4 \n", + "600 0 days 00:00:17.600000 2025-01-25 02:29:25.600000+00:00 4 \n", + "601 0 days 00:00:17.600000 2025-01-25 02:29:25.600000+00:00 4 \n", + "602 0 days 00:00:17.600000 2025-01-25 02:29:25.600000+00:00 4 \n", + "603 0 days 00:00:17.600000 2025-01-25 02:29:25.600000+00:00 4 \n", + "\n", + " actionType subType personId possession scoreHome scoreAway \\\n", + "39 substitution out 1628998 1610612757 10 12 \n", + "40 substitution out 1642270 1610612757 10 12 \n", + "41 substitution out 1629014 1610612757 10 12 \n", + "42 substitution in 1629006 1610612757 10 12 \n", + "43 substitution in 1630703 1610612757 10 12 \n", + ".. ... ... ... ... ... ... \n", + "597 substitution in 1631217 1610612757 93 99 \n", + "600 substitution out 1629006 1610612766 93 100 \n", + "601 substitution out 1631217 1610612766 93 100 \n", + "602 substitution in 1642354 1610612766 93 100 \n", + "603 substitution in 203995 1610612766 93 100 \n", + "\n", + " teamId \n", + "39 1610612766 \n", + "40 1610612757 \n", + "41 1610612757 \n", + "42 1610612766 \n", + "43 1610612757 \n", + ".. ... \n", + "597 1610612766 \n", + "600 1610612766 \n", + "601 1610612766 \n", + "602 1610612766 \n", + "603 1610612766 \n", + "\n", + "[122 rows x 10 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "substitution_df = df_by_action.get_group('substitution').dropna(how='all', axis=1)\n", + "substitution_df" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "687ad37d-a22e-44ee-8b1e-564cb12a7ecc", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypepossessionscoreHomescoreAwayteamId
510 days 00:06:592025-01-25 00:16:48+00:001timeoutfull161061276610121610612766
700 days 00:04:392025-01-25 00:22:19.900000+00:001timeoutfull161061275724121610612757
1510 days 00:09:352025-01-25 00:38:06.700000+00:002timeoutfull161061275737241610612757
2060 days 00:05:532025-01-25 00:48:02.600000+00:002timeoutfull161061276642361610612766
2960 days 00:10:202025-01-25 01:22:19.700000+00:003timeoutfull161061275754581610612766
4060 days 00:02:492025-01-25 01:42:57.200000+00:003timeoutfull161061276670661610612757
5090 days 00:06:402025-01-25 02:03:24.300000+00:004timeoutfull161061276681881610612766
5320 days 00:04:332025-01-25 02:09:43.700000+00:004timeoutfull161061275783901610612757
5390 days 00:03:312025-01-25 02:14:32.700000+00:004timeoutfull161061275786921610612757
5430 days 00:03:082025-01-25 02:16:44.700000+00:004timeoutfull161061276686921610612766
5800 days 00:00:30.5000002025-01-25 02:24:53.800000+00:004timeoutfull161061276690961610612757
5990 days 00:00:17.6000002025-01-25 02:28:33.300000+00:004timeoutfull1610612766931001610612766
\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "51 0 days 00:06:59 2025-01-25 00:16:48+00:00 1 \n", + "70 0 days 00:04:39 2025-01-25 00:22:19.900000+00:00 1 \n", + "151 0 days 00:09:35 2025-01-25 00:38:06.700000+00:00 2 \n", + "206 0 days 00:05:53 2025-01-25 00:48:02.600000+00:00 2 \n", + "296 0 days 00:10:20 2025-01-25 01:22:19.700000+00:00 3 \n", + "406 0 days 00:02:49 2025-01-25 01:42:57.200000+00:00 3 \n", + "509 0 days 00:06:40 2025-01-25 02:03:24.300000+00:00 4 \n", + "532 0 days 00:04:33 2025-01-25 02:09:43.700000+00:00 4 \n", + "539 0 days 00:03:31 2025-01-25 02:14:32.700000+00:00 4 \n", + "543 0 days 00:03:08 2025-01-25 02:16:44.700000+00:00 4 \n", + "580 0 days 00:00:30.500000 2025-01-25 02:24:53.800000+00:00 4 \n", + "599 0 days 00:00:17.600000 2025-01-25 02:28:33.300000+00:00 4 \n", + "\n", + " actionType subType possession scoreHome scoreAway teamId \n", + "51 timeout full 1610612766 10 12 1610612766 \n", + "70 timeout full 1610612757 24 12 1610612757 \n", + "151 timeout full 1610612757 37 24 1610612757 \n", + "206 timeout full 1610612766 42 36 1610612766 \n", + "296 timeout full 1610612757 54 58 1610612766 \n", + "406 timeout full 1610612766 70 66 1610612757 \n", + "509 timeout full 1610612766 81 88 1610612766 \n", + "532 timeout full 1610612757 83 90 1610612757 \n", + "539 timeout full 1610612757 86 92 1610612757 \n", + "543 timeout full 1610612766 86 92 1610612766 \n", + "580 timeout full 1610612766 90 96 1610612757 \n", + "599 timeout full 1610612766 93 100 1610612766 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "timeout_df = df_by_action.get_group('timeout').dropna(how='all', axis=1)\n", + "timeout_df" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0974b449-2f53-4ccb-9fdc-ccd22520d5eb", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamIddescriptorofficialIdfoulDrawnPersonId
380 days 00:07:112025-01-25 00:15:44.600000+00:001foulpersonal1641733161061275710121610612766<NA>1626301203924
500 days 00:06:592025-01-25 00:16:38+00:001foulpersonal1631133161061276610121610612757<NA>16284871631109
630 days 00:05:122025-01-25 00:21:17.200000+00:001foulpersonal1630166161061276619121610612757<NA>1628487203995
910 days 00:02:412025-01-25 00:27:31.900000+00:001foulpersonal1629006161061275724171610612766<NA>2040591630703
1070 days 00:01:162025-01-25 00:29:19.800000+00:001foulpersonal1629610161061275728221610612766<NA>16284871630703
1100 days 00:00:57.1000002025-01-25 00:29:53.700000+00:001foulpersonal1630625161061276628221610612757shooting2040591631209
1300 days 00:11:472025-01-25 00:35:12.400000+00:002foulpersonal1631209161061275730221610612766shooting16284871629014
1350 days 00:11:272025-01-25 00:35:42.900000+00:002fouloffensive1630166161061275730241610612757charge2040591631209
1580 days 00:09:182025-01-25 00:41:19.100000+00:002foulpersonal203995161061275737241610612766shooting2040591630166
1770 days 00:07:372025-01-25 00:44:20.400000+00:002foulpersonal1630182161061275737311610612766shooting2040591630166
1840 days 00:07:032025-01-25 00:45:43+00:002foulpersonal1629014161061276641331610612757shooting2040591641733
2020 days 00:06:072025-01-25 00:47:34.100000+00:002foulpersonal1631109161061275742331610612766loose ball16263011631133
2200 days 00:05:012025-01-25 00:52:04.700000+00:002foulpersonal1631109161061275742361610612766shooting16263011631133
2260 days 00:04:442025-01-25 00:53:12.100000+00:002foulpersonal1631109161061275742371610612766loose ball1626301203924
2330 days 00:04:382025-01-25 00:54:18.100000+00:002foulpersonal1630703161061276642391610612757<NA>2040591641733
2340 days 00:04:232025-01-25 00:54:49.600000+00:002foulpersonal1631101161061276642391610612757shooting2040591641733
2550 days 00:01:542025-01-25 00:58:41.600000+00:002foulpersonal1642354161061275748461610612766shooting16284871630166
2630 days 00:00:58.1000002025-01-25 01:01:12.500000+00:002foulpersonal1630703161061276650501610612757shooting16263011629006
2890 days 00:10:352025-01-25 01:20:42.700000+00:003foulpersonal203995161061275754541610612766shooting16263011630166
2950 days 00:10:202025-01-25 01:22:05.200000+00:003foulpersonal203995161061275754581610612766shooting16284871641739
3060 days 00:09:022025-01-25 01:26:46.700000+00:003foulpersonal1641739161061276654611610612757shooting16263011629006
3190 days 00:08:112025-01-25 01:28:34.600000+00:003foulpersonal1629006161061275757611610612766<NA>16284871629014
3200 days 00:08:062025-01-25 01:28:51.400000+00:003foulpersonal1641733161061275757611610612766<NA>2040591630166
3420 days 00:06:092025-01-25 01:32:10.400000+00:003foulpersonal203924161061276661631610612757shooting204059203995
3620 days 00:04:512025-01-25 01:35:04.600000+00:003foulpersonal1631101161061276665651610612757<NA>16284871641733
3730 days 00:04:342025-01-25 01:35:42.400000+00:003foulpersonal1630625161061276665651610612757shooting16263011630182
3800 days 00:03:572025-01-25 01:37:28.700000+00:003foulpersonal1631133161061276667651610612757shooting16263011642354
3830 days 00:03:392025-01-25 01:38:27.700000+00:003foulpersonal1629610161061275769651610612766shooting16284871631133
3880 days 00:03:372025-01-25 01:39:12.600000+00:003foulpersonal1641739161061276669651610612757<NA>16263011629006
3940 days 00:03:222025-01-25 01:40:39.400000+00:003foulpersonal1631217161061275770651610612766shooting16284871630166
3980 days 00:03:122025-01-25 01:41:28.800000+00:003fouloffensive1631209161061276670661610612766<NA>16263011630703
4000 days 00:03:012025-01-25 01:41:54.900000+00:003foulpersonal1642354161061275770661610612766<NA>16263011630703
4050 days 00:02:492025-01-25 01:42:41.700000+00:003foulpersonal1631101161061276670661610612757shooting2040591629006
4180 days 00:01:262025-01-25 01:47:49.700000+00:003foulpersonal1631209161061275775681610612766<NA>2040591630625
4280 days 00:00:27.3000002025-01-25 01:49:38.600000+00:003foulpersonal1629006161061275775721610612766shooting16263011631101
4700 days 00:09:072025-01-25 01:57:13.200000+00:004foulpersonal1642270161061276677771610612757shooting16284871631109
4770 days 00:08:592025-01-25 01:58:11+00:004foulpersonal1641733161061275778791610612766shooting16284871631101
4800 days 00:08:492025-01-25 01:58:50.600000+00:004foulpersonal1631101161061276680801610612757shooting1628487203995
4840 days 00:08:292025-01-25 01:59:41.400000+00:004foulpersonal1631109161061275781801610612766loose ball16263011641739
4910 days 00:08:072025-01-25 02:00:26.700000+00:004foulpersonal1642354161061275781801610612766shooting2040591629014
5020 days 00:07:132025-01-25 02:02:19.800000+00:004foultechnical1631109161061275781841610612766defensive-3-second204059<NA>
5190 days 00:05:282025-01-25 02:07:36.400000+00:004foulpersonal1630182161061275783881610612766shooting16263011629014
5350 days 00:04:042025-01-25 02:13:06.700000+00:004foulpersonal203995161061275783901610612766<NA>2040591630166
5420 days 00:03:082025-01-25 02:16:32.800000+00:004foulpersonal1641739161061276686921610612757<NA>16263011642354
5460 days 00:02:412025-01-25 02:18:40.400000+00:004foulpersonal1631109161061275786921610612766shooting16263011629014
5580 days 00:01:302025-01-25 02:20:46.300000+00:004foulpersonal1631101161061276686941610612757shooting2040591629006
5620 days 00:01:292025-01-25 02:21:28.200000+00:004foulpersonal1631101161061276687941610612757shooting16284871629006
5730 days 00:00:30.5000002025-01-25 02:23:37.700000+00:004foulpersonal1641739161061276689961610612757shooting2040591631109
5860 days 00:00:28.1000002025-01-25 02:26:37.800000+00:004foulpersonal1629006161061275791961610612766take1626301203924
5940 days 00:00:17.6000002025-01-25 02:27:42.900000+00:004foulpersonal1629006161061275793981610612766take16263011630166
\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "38 0 days 00:07:11 2025-01-25 00:15:44.600000+00:00 1 \n", + "50 0 days 00:06:59 2025-01-25 00:16:38+00:00 1 \n", + "63 0 days 00:05:12 2025-01-25 00:21:17.200000+00:00 1 \n", + "91 0 days 00:02:41 2025-01-25 00:27:31.900000+00:00 1 \n", + "107 0 days 00:01:16 2025-01-25 00:29:19.800000+00:00 1 \n", + "110 0 days 00:00:57.100000 2025-01-25 00:29:53.700000+00:00 1 \n", + "130 0 days 00:11:47 2025-01-25 00:35:12.400000+00:00 2 \n", + "135 0 days 00:11:27 2025-01-25 00:35:42.900000+00:00 2 \n", + "158 0 days 00:09:18 2025-01-25 00:41:19.100000+00:00 2 \n", + "177 0 days 00:07:37 2025-01-25 00:44:20.400000+00:00 2 \n", + "184 0 days 00:07:03 2025-01-25 00:45:43+00:00 2 \n", + "202 0 days 00:06:07 2025-01-25 00:47:34.100000+00:00 2 \n", + "220 0 days 00:05:01 2025-01-25 00:52:04.700000+00:00 2 \n", + "226 0 days 00:04:44 2025-01-25 00:53:12.100000+00:00 2 \n", + "233 0 days 00:04:38 2025-01-25 00:54:18.100000+00:00 2 \n", + "234 0 days 00:04:23 2025-01-25 00:54:49.600000+00:00 2 \n", + "255 0 days 00:01:54 2025-01-25 00:58:41.600000+00:00 2 \n", + "263 0 days 00:00:58.100000 2025-01-25 01:01:12.500000+00:00 2 \n", + "289 0 days 00:10:35 2025-01-25 01:20:42.700000+00:00 3 \n", + "295 0 days 00:10:20 2025-01-25 01:22:05.200000+00:00 3 \n", + "306 0 days 00:09:02 2025-01-25 01:26:46.700000+00:00 3 \n", + "319 0 days 00:08:11 2025-01-25 01:28:34.600000+00:00 3 \n", + "320 0 days 00:08:06 2025-01-25 01:28:51.400000+00:00 3 \n", + "342 0 days 00:06:09 2025-01-25 01:32:10.400000+00:00 3 \n", + "362 0 days 00:04:51 2025-01-25 01:35:04.600000+00:00 3 \n", + "373 0 days 00:04:34 2025-01-25 01:35:42.400000+00:00 3 \n", + "380 0 days 00:03:57 2025-01-25 01:37:28.700000+00:00 3 \n", + "383 0 days 00:03:39 2025-01-25 01:38:27.700000+00:00 3 \n", + "388 0 days 00:03:37 2025-01-25 01:39:12.600000+00:00 3 \n", + "394 0 days 00:03:22 2025-01-25 01:40:39.400000+00:00 3 \n", + "398 0 days 00:03:12 2025-01-25 01:41:28.800000+00:00 3 \n", + "400 0 days 00:03:01 2025-01-25 01:41:54.900000+00:00 3 \n", + "405 0 days 00:02:49 2025-01-25 01:42:41.700000+00:00 3 \n", + "418 0 days 00:01:26 2025-01-25 01:47:49.700000+00:00 3 \n", + "428 0 days 00:00:27.300000 2025-01-25 01:49:38.600000+00:00 3 \n", + "470 0 days 00:09:07 2025-01-25 01:57:13.200000+00:00 4 \n", + "477 0 days 00:08:59 2025-01-25 01:58:11+00:00 4 \n", + "480 0 days 00:08:49 2025-01-25 01:58:50.600000+00:00 4 \n", + "484 0 days 00:08:29 2025-01-25 01:59:41.400000+00:00 4 \n", + "491 0 days 00:08:07 2025-01-25 02:00:26.700000+00:00 4 \n", + "502 0 days 00:07:13 2025-01-25 02:02:19.800000+00:00 4 \n", + "519 0 days 00:05:28 2025-01-25 02:07:36.400000+00:00 4 \n", + "535 0 days 00:04:04 2025-01-25 02:13:06.700000+00:00 4 \n", + "542 0 days 00:03:08 2025-01-25 02:16:32.800000+00:00 4 \n", + "546 0 days 00:02:41 2025-01-25 02:18:40.400000+00:00 4 \n", + "558 0 days 00:01:30 2025-01-25 02:20:46.300000+00:00 4 \n", + "562 0 days 00:01:29 2025-01-25 02:21:28.200000+00:00 4 \n", + "573 0 days 00:00:30.500000 2025-01-25 02:23:37.700000+00:00 4 \n", + "586 0 days 00:00:28.100000 2025-01-25 02:26:37.800000+00:00 4 \n", + "594 0 days 00:00:17.600000 2025-01-25 02:27:42.900000+00:00 4 \n", + "\n", + " actionType subType personId possession scoreHome scoreAway \\\n", + "38 foul personal 1641733 1610612757 10 12 \n", + "50 foul personal 1631133 1610612766 10 12 \n", + "63 foul personal 1630166 1610612766 19 12 \n", + "91 foul personal 1629006 1610612757 24 17 \n", + "107 foul personal 1629610 1610612757 28 22 \n", + "110 foul personal 1630625 1610612766 28 22 \n", + "130 foul personal 1631209 1610612757 30 22 \n", + "135 foul offensive 1630166 1610612757 30 24 \n", + "158 foul personal 203995 1610612757 37 24 \n", + "177 foul personal 1630182 1610612757 37 31 \n", + "184 foul personal 1629014 1610612766 41 33 \n", + "202 foul personal 1631109 1610612757 42 33 \n", + "220 foul personal 1631109 1610612757 42 36 \n", + "226 foul personal 1631109 1610612757 42 37 \n", + "233 foul personal 1630703 1610612766 42 39 \n", + "234 foul personal 1631101 1610612766 42 39 \n", + "255 foul personal 1642354 1610612757 48 46 \n", + "263 foul personal 1630703 1610612766 50 50 \n", + "289 foul personal 203995 1610612757 54 54 \n", + "295 foul personal 203995 1610612757 54 58 \n", + "306 foul personal 1641739 1610612766 54 61 \n", + "319 foul personal 1629006 1610612757 57 61 \n", + "320 foul personal 1641733 1610612757 57 61 \n", + "342 foul personal 203924 1610612766 61 63 \n", + "362 foul personal 1631101 1610612766 65 65 \n", + "373 foul personal 1630625 1610612766 65 65 \n", + "380 foul personal 1631133 1610612766 67 65 \n", + "383 foul personal 1629610 1610612757 69 65 \n", + "388 foul personal 1641739 1610612766 69 65 \n", + "394 foul personal 1631217 1610612757 70 65 \n", + "398 foul offensive 1631209 1610612766 70 66 \n", + "400 foul personal 1642354 1610612757 70 66 \n", + "405 foul personal 1631101 1610612766 70 66 \n", + "418 foul personal 1631209 1610612757 75 68 \n", + "428 foul personal 1629006 1610612757 75 72 \n", + "470 foul personal 1642270 1610612766 77 77 \n", + "477 foul personal 1641733 1610612757 78 79 \n", + "480 foul personal 1631101 1610612766 80 80 \n", + "484 foul personal 1631109 1610612757 81 80 \n", + "491 foul personal 1642354 1610612757 81 80 \n", + "502 foul technical 1631109 1610612757 81 84 \n", + "519 foul personal 1630182 1610612757 83 88 \n", + "535 foul personal 203995 1610612757 83 90 \n", + "542 foul personal 1641739 1610612766 86 92 \n", + "546 foul personal 1631109 1610612757 86 92 \n", + "558 foul personal 1631101 1610612766 86 94 \n", + "562 foul personal 1631101 1610612766 87 94 \n", + "573 foul personal 1641739 1610612766 89 96 \n", + "586 foul personal 1629006 1610612757 91 96 \n", + "594 foul personal 1629006 1610612757 93 98 \n", + "\n", + " teamId descriptor officialId foulDrawnPersonId \n", + "38 1610612766 1626301 203924 \n", + "50 1610612757 1628487 1631109 \n", + "63 1610612757 1628487 203995 \n", + "91 1610612766 204059 1630703 \n", + "107 1610612766 1628487 1630703 \n", + "110 1610612757 shooting 204059 1631209 \n", + "130 1610612766 shooting 1628487 1629014 \n", + "135 1610612757 charge 204059 1631209 \n", + "158 1610612766 shooting 204059 1630166 \n", + "177 1610612766 shooting 204059 1630166 \n", + "184 1610612757 shooting 204059 1641733 \n", + "202 1610612766 loose ball 1626301 1631133 \n", + "220 1610612766 shooting 1626301 1631133 \n", + "226 1610612766 loose ball 1626301 203924 \n", + "233 1610612757 204059 1641733 \n", + "234 1610612757 shooting 204059 1641733 \n", + "255 1610612766 shooting 1628487 1630166 \n", + "263 1610612757 shooting 1626301 1629006 \n", + "289 1610612766 shooting 1626301 1630166 \n", + "295 1610612766 shooting 1628487 1641739 \n", + "306 1610612757 shooting 1626301 1629006 \n", + "319 1610612766 1628487 1629014 \n", + "320 1610612766 204059 1630166 \n", + "342 1610612757 shooting 204059 203995 \n", + "362 1610612757 1628487 1641733 \n", + "373 1610612757 shooting 1626301 1630182 \n", + "380 1610612757 shooting 1626301 1642354 \n", + "383 1610612766 shooting 1628487 1631133 \n", + "388 1610612757 1626301 1629006 \n", + "394 1610612766 shooting 1628487 1630166 \n", + "398 1610612766 1626301 1630703 \n", + "400 1610612766 1626301 1630703 \n", + "405 1610612757 shooting 204059 1629006 \n", + "418 1610612766 204059 1630625 \n", + "428 1610612766 shooting 1626301 1631101 \n", + "470 1610612757 shooting 1628487 1631109 \n", + "477 1610612766 shooting 1628487 1631101 \n", + "480 1610612757 shooting 1628487 203995 \n", + "484 1610612766 loose ball 1626301 1641739 \n", + "491 1610612766 shooting 204059 1629014 \n", + "502 1610612766 defensive-3-second 204059 \n", + "519 1610612766 shooting 1626301 1629014 \n", + "535 1610612766 204059 1630166 \n", + "542 1610612757 1626301 1642354 \n", + "546 1610612766 shooting 1626301 1629014 \n", + "558 1610612757 shooting 204059 1629006 \n", + "562 1610612757 shooting 1628487 1629006 \n", + "573 1610612757 shooting 204059 1631109 \n", + "586 1610612766 take 1626301 203924 \n", + "594 1610612766 take 1626301 1630166 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "foul_df = df_by_action.get_group('foul').dropna(how='all', axis=1)\n", + "foul_df" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e84242f4-3da9-497f-8b46-e5a090e203eb", + "metadata": {}, + "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", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamIdofficialId
1420 days 00:10:402025-01-25 00:36:37.600000+00:002violationkicked ball16301661610612766322416106127571626301
2710 days 00:00:19.3000002025-01-25 01:02:56.600000+00:002violationdefensive goaltending16417391610612766545016106127571626301
3480 days 00:06:092025-01-25 01:33:30.900000+00:003violationlane1631133161061276662631610612757<NA>
5790 days 00:00:30.5000002025-01-25 02:24:29.400000+00:004violationdelay-of-game<NA>161061276690961610612757204059
\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "142 0 days 00:10:40 2025-01-25 00:36:37.600000+00:00 2 \n", + "271 0 days 00:00:19.300000 2025-01-25 01:02:56.600000+00:00 2 \n", + "348 0 days 00:06:09 2025-01-25 01:33:30.900000+00:00 3 \n", + "579 0 days 00:00:30.500000 2025-01-25 02:24:29.400000+00:00 4 \n", + "\n", + " actionType subType personId possession scoreHome \\\n", + "142 violation kicked ball 1630166 1610612766 32 \n", + "271 violation defensive goaltending 1641739 1610612766 54 \n", + "348 violation lane 1631133 1610612766 62 \n", + "579 violation delay-of-game 1610612766 90 \n", + "\n", + " scoreAway teamId officialId \n", + "142 24 1610612757 1626301 \n", + "271 50 1610612757 1626301 \n", + "348 63 1610612757 \n", + "579 96 1610612757 204059 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "violation_df = df_by_action.get_group('violation').dropna(how='all', axis=1)\n", + "violation_df" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "e9cb3b81-4f47-4a56-a931-a84c08440bc4", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamIddescriptorofficialIdstealPersonId
810 days 00:03:372025-01-25 00:26:11+00:001turnoverout-of-bounds1629006161061276624171610612766bad pass<NA><NA>
840 days 00:03:202025-01-25 00:26:42.600000+00:001turnovertraveling1630625161061275724171610612757<NA>204059<NA>
890 days 00:02:472025-01-25 00:27:25.900000+00:001turnoverlost ball1631217161061276624171610612766<NA><NA>1631133
1130 days 00:00:33.9000002025-01-25 00:31:02.400000+00:001turnoverbad pass1631133161061275730221610612757<NA><NA>1631217
1360 days 00:11:272025-01-25 00:35:42.900000+00:002turnoveroffensive foul1630166161061275730241610612757<NA>204059<NA>
1430 days 00:10:272025-01-25 00:37:07.700000+00:002turnoverbad pass203995161061276632241610612766<NA><NA>1630166
1450 days 00:10:122025-01-25 00:37:22+00:002turnoverlost ball1629014161061275732241610612757<NA><NA>1629006
1620 days 00:08:542025-01-25 00:42:26.900000+00:002turnovertraveling203995161061276637251610612766<NA>204059<NA>
1660 days 00:08:172025-01-25 00:43:14.500000+00:002turnoverbad pass1629610161061276637281610612766<NA><NA>1629014
1810 days 00:07:062025-01-25 00:45:35.900000+00:002turnoverbad pass1630166161061275739331610612757<NA><NA>1631109
1920 days 00:06:492025-01-25 00:46:42.500000+00:002turnoverlost ball203924161061275742331610612757<NA><NA>1631217
2160 days 00:05:072025-01-25 00:51:52.200000+00:002turnoverbad pass1642354161061276642361610612766<NA><NA>1630703
2420 days 00:03:372025-01-25 00:56:28+00:002turnoverout-of-bounds1631101161061275744411610612757bad pass204059<NA>
2530 days 00:01:592025-01-25 00:58:33+00:002turnoverbad pass1629006161061276648461610612766<NA><NA>1630166
2690 days 00:00:34.1000002025-01-25 01:02:28.900000+00:002turnovershot clock<NA>161061275752501610612757<NA>204059<NA>
2850 days 00:11:092025-01-25 01:19:51.900000+00:003turnoverout-of-bounds203995161061276654521610612766lost ball1628487<NA>
2870 days 00:10:372025-01-25 01:20:38.500000+00:003turnoverbad pass1641733161061276654541610612766<NA><NA>1641739
2990 days 00:10:032025-01-25 01:25:28.300000+00:003turnoverbad pass1641733161061276654581610612766<NA><NA>1641739
3040 days 00:09:042025-01-25 01:26:43+00:003turnoverlost ball1630166161061275754611610612757<NA><NA>1629006
3110 days 00:08:282025-01-25 01:28:06+00:003turnoverbad pass1642270161061275757611610612757<NA><NA>1629006
3170 days 00:08:112025-01-25 01:28:24.300000+00:003turnoverbad pass1641733161061276657611610612766<NA><NA>1642270
3210 days 00:07:582025-01-25 01:29:21+00:003turnovertraveling1642270161061275757611610612757<NA>204059<NA>
3380 days 00:06:502025-01-25 01:31:27.700000+00:003turnoverlost ball203924161061275759611610612757<NA><NA>1630182
3590 days 00:05:112025-01-25 01:34:38.600000+00:003turnoverbad pass1631217161061276665631610612766<NA><NA>203924
3710 days 00:04:412025-01-25 01:35:39.800000+00:003turnoverlost ball1631101161061275765651610612757<NA><NA>1642354
3990 days 00:03:122025-01-25 01:41:28.800000+00:003turnoveroffensive foul1631209161061276670661610612766<NA>1626301<NA>
4110 days 00:02:392025-01-25 01:46:21.400000+00:003turnoverout-of-bounds1630703161061275772661610612757bad pass1626301<NA>
5100 days 00:06:202025-01-25 02:06:42+00:004turnoverbad pass203995161061276681881610612766<NA><NA>1630166
5120 days 00:06:162025-01-25 02:06:45.200000+00:004turnoverbad pass1630166161061275781881610612757<NA><NA>1642354
5240 days 00:05:122025-01-25 02:08:43.300000+00:004turnoverbad pass203995161061276683901610612766<NA><NA>1629014
5510 days 00:02:242025-01-25 02:19:43.600000+00:004turnoverbad pass203995161061276686941610612766<NA><NA>1630166
5530 days 00:02:182025-01-25 02:19:52.400000+00:004turnoverout-of-bounds1630166161061275786941610612757bad pass1626301<NA>
5720 days 00:00:372025-01-25 02:23:15.900000+00:004turnoverout-of-bounds1630703161061275789961610612757bad pass204059<NA>
\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "81 0 days 00:03:37 2025-01-25 00:26:11+00:00 1 \n", + "84 0 days 00:03:20 2025-01-25 00:26:42.600000+00:00 1 \n", + "89 0 days 00:02:47 2025-01-25 00:27:25.900000+00:00 1 \n", + "113 0 days 00:00:33.900000 2025-01-25 00:31:02.400000+00:00 1 \n", + "136 0 days 00:11:27 2025-01-25 00:35:42.900000+00:00 2 \n", + "143 0 days 00:10:27 2025-01-25 00:37:07.700000+00:00 2 \n", + "145 0 days 00:10:12 2025-01-25 00:37:22+00:00 2 \n", + "162 0 days 00:08:54 2025-01-25 00:42:26.900000+00:00 2 \n", + "166 0 days 00:08:17 2025-01-25 00:43:14.500000+00:00 2 \n", + "181 0 days 00:07:06 2025-01-25 00:45:35.900000+00:00 2 \n", + "192 0 days 00:06:49 2025-01-25 00:46:42.500000+00:00 2 \n", + "216 0 days 00:05:07 2025-01-25 00:51:52.200000+00:00 2 \n", + "242 0 days 00:03:37 2025-01-25 00:56:28+00:00 2 \n", + "253 0 days 00:01:59 2025-01-25 00:58:33+00:00 2 \n", + "269 0 days 00:00:34.100000 2025-01-25 01:02:28.900000+00:00 2 \n", + "285 0 days 00:11:09 2025-01-25 01:19:51.900000+00:00 3 \n", + "287 0 days 00:10:37 2025-01-25 01:20:38.500000+00:00 3 \n", + "299 0 days 00:10:03 2025-01-25 01:25:28.300000+00:00 3 \n", + "304 0 days 00:09:04 2025-01-25 01:26:43+00:00 3 \n", + "311 0 days 00:08:28 2025-01-25 01:28:06+00:00 3 \n", + "317 0 days 00:08:11 2025-01-25 01:28:24.300000+00:00 3 \n", + "321 0 days 00:07:58 2025-01-25 01:29:21+00:00 3 \n", + "338 0 days 00:06:50 2025-01-25 01:31:27.700000+00:00 3 \n", + "359 0 days 00:05:11 2025-01-25 01:34:38.600000+00:00 3 \n", + "371 0 days 00:04:41 2025-01-25 01:35:39.800000+00:00 3 \n", + "399 0 days 00:03:12 2025-01-25 01:41:28.800000+00:00 3 \n", + "411 0 days 00:02:39 2025-01-25 01:46:21.400000+00:00 3 \n", + "510 0 days 00:06:20 2025-01-25 02:06:42+00:00 4 \n", + "512 0 days 00:06:16 2025-01-25 02:06:45.200000+00:00 4 \n", + "524 0 days 00:05:12 2025-01-25 02:08:43.300000+00:00 4 \n", + "551 0 days 00:02:24 2025-01-25 02:19:43.600000+00:00 4 \n", + "553 0 days 00:02:18 2025-01-25 02:19:52.400000+00:00 4 \n", + "572 0 days 00:00:37 2025-01-25 02:23:15.900000+00:00 4 \n", + "\n", + " actionType subType personId possession scoreHome scoreAway \\\n", + "81 turnover out-of-bounds 1629006 1610612766 24 17 \n", + "84 turnover traveling 1630625 1610612757 24 17 \n", + "89 turnover lost ball 1631217 1610612766 24 17 \n", + "113 turnover bad pass 1631133 1610612757 30 22 \n", + "136 turnover offensive foul 1630166 1610612757 30 24 \n", + "143 turnover bad pass 203995 1610612766 32 24 \n", + "145 turnover lost ball 1629014 1610612757 32 24 \n", + "162 turnover traveling 203995 1610612766 37 25 \n", + "166 turnover bad pass 1629610 1610612766 37 28 \n", + "181 turnover bad pass 1630166 1610612757 39 33 \n", + "192 turnover lost ball 203924 1610612757 42 33 \n", + "216 turnover bad pass 1642354 1610612766 42 36 \n", + "242 turnover out-of-bounds 1631101 1610612757 44 41 \n", + "253 turnover bad pass 1629006 1610612766 48 46 \n", + "269 turnover shot clock 1610612757 52 50 \n", + "285 turnover out-of-bounds 203995 1610612766 54 52 \n", + "287 turnover bad pass 1641733 1610612766 54 54 \n", + "299 turnover bad pass 1641733 1610612766 54 58 \n", + "304 turnover lost ball 1630166 1610612757 54 61 \n", + "311 turnover bad pass 1642270 1610612757 57 61 \n", + "317 turnover bad pass 1641733 1610612766 57 61 \n", + "321 turnover traveling 1642270 1610612757 57 61 \n", + "338 turnover lost ball 203924 1610612757 59 61 \n", + "359 turnover bad pass 1631217 1610612766 65 63 \n", + "371 turnover lost ball 1631101 1610612757 65 65 \n", + "399 turnover offensive foul 1631209 1610612766 70 66 \n", + "411 turnover out-of-bounds 1630703 1610612757 72 66 \n", + "510 turnover bad pass 203995 1610612766 81 88 \n", + "512 turnover bad pass 1630166 1610612757 81 88 \n", + "524 turnover bad pass 203995 1610612766 83 90 \n", + "551 turnover bad pass 203995 1610612766 86 94 \n", + "553 turnover out-of-bounds 1630166 1610612757 86 94 \n", + "572 turnover out-of-bounds 1630703 1610612757 89 96 \n", + "\n", + " teamId descriptor officialId stealPersonId \n", + "81 1610612766 bad pass \n", + "84 1610612757 204059 \n", + "89 1610612766 1631133 \n", + "113 1610612757 1631217 \n", + "136 1610612757 204059 \n", + "143 1610612766 1630166 \n", + "145 1610612757 1629006 \n", + "162 1610612766 204059 \n", + "166 1610612766 1629014 \n", + "181 1610612757 1631109 \n", + "192 1610612757 1631217 \n", + "216 1610612766 1630703 \n", + "242 1610612757 bad pass 204059 \n", + "253 1610612766 1630166 \n", + "269 1610612757 204059 \n", + "285 1610612766 lost ball 1628487 \n", + "287 1610612766 1641739 \n", + "299 1610612766 1641739 \n", + "304 1610612757 1629006 \n", + "311 1610612757 1629006 \n", + "317 1610612766 1642270 \n", + "321 1610612757 204059 \n", + "338 1610612757 1630182 \n", + "359 1610612766 203924 \n", + "371 1610612757 1642354 \n", + "399 1610612766 1626301 \n", + "411 1610612757 bad pass 1626301 \n", + "510 1610612766 1630166 \n", + "512 1610612757 1642354 \n", + "524 1610612766 1629014 \n", + "551 1610612766 1630166 \n", + "553 1610612757 bad pass 1626301 \n", + "572 1610612757 bad pass 204059 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "turnover_df = df_by_action.get_group('turnover').dropna(how='all', axis=1)\n", + "turnover_df" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7267e459-519c-4145-be0f-f3a79848be07", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clocktimeActualperiodactionTypesubTypepersonIdpossessionscoreHomescoreAwayteamId
900 days 00:02:472025-01-25 00:27:25.900000+00:001steal1631133161061275724171610612757
1140 days 00:00:33.9000002025-01-25 00:31:02.400000+00:001steal1631217161061276630221610612766
1440 days 00:10:272025-01-25 00:37:07.700000+00:002steal1630166161061275732241610612757
1460 days 00:10:122025-01-25 00:37:22+00:002steal1629006161061276632241610612766
1670 days 00:08:172025-01-25 00:43:14.500000+00:002steal1629014161061275737281610612757
1820 days 00:07:062025-01-25 00:45:35.900000+00:002steal1631109161061276639331610612766
1930 days 00:06:492025-01-25 00:46:42.500000+00:002steal1631217161061276642331610612766
2170 days 00:05:072025-01-25 00:51:52.200000+00:002steal1630703161061275742361610612757
2540 days 00:01:592025-01-25 00:58:33+00:002steal1630166161061275748461610612757
2880 days 00:10:372025-01-25 01:20:38.500000+00:003steal1641739161061275754541610612757
3000 days 00:10:032025-01-25 01:25:28.300000+00:003steal1641739161061275754581610612757
3050 days 00:09:042025-01-25 01:26:43+00:003steal1629006161061276654611610612766
3120 days 00:08:282025-01-25 01:28:06+00:003steal1629006161061276657611610612766
3180 days 00:08:112025-01-25 01:28:24.300000+00:003steal1642270161061275757611610612757
3390 days 00:06:502025-01-25 01:31:27.700000+00:003steal1630182161061276659611610612766
3600 days 00:05:112025-01-25 01:34:38.600000+00:003steal203924161061275765631610612757
3720 days 00:04:412025-01-25 01:35:39.800000+00:003steal1642354161061276665651610612766
5110 days 00:06:202025-01-25 02:06:42+00:004steal1630166161061275781881610612757
5130 days 00:06:162025-01-25 02:06:45.200000+00:004steal1642354161061276681881610612766
5250 days 00:05:122025-01-25 02:08:43.300000+00:004steal1629014161061275783901610612757
5520 days 00:02:242025-01-25 02:19:43.600000+00:004steal1630166161061275786941610612757
\n", + "
" + ], + "text/plain": [ + " clock timeActual period \\\n", + "90 0 days 00:02:47 2025-01-25 00:27:25.900000+00:00 1 \n", + "114 0 days 00:00:33.900000 2025-01-25 00:31:02.400000+00:00 1 \n", + "144 0 days 00:10:27 2025-01-25 00:37:07.700000+00:00 2 \n", + "146 0 days 00:10:12 2025-01-25 00:37:22+00:00 2 \n", + "167 0 days 00:08:17 2025-01-25 00:43:14.500000+00:00 2 \n", + "182 0 days 00:07:06 2025-01-25 00:45:35.900000+00:00 2 \n", + "193 0 days 00:06:49 2025-01-25 00:46:42.500000+00:00 2 \n", + "217 0 days 00:05:07 2025-01-25 00:51:52.200000+00:00 2 \n", + "254 0 days 00:01:59 2025-01-25 00:58:33+00:00 2 \n", + "288 0 days 00:10:37 2025-01-25 01:20:38.500000+00:00 3 \n", + "300 0 days 00:10:03 2025-01-25 01:25:28.300000+00:00 3 \n", + "305 0 days 00:09:04 2025-01-25 01:26:43+00:00 3 \n", + "312 0 days 00:08:28 2025-01-25 01:28:06+00:00 3 \n", + "318 0 days 00:08:11 2025-01-25 01:28:24.300000+00:00 3 \n", + "339 0 days 00:06:50 2025-01-25 01:31:27.700000+00:00 3 \n", + "360 0 days 00:05:11 2025-01-25 01:34:38.600000+00:00 3 \n", + "372 0 days 00:04:41 2025-01-25 01:35:39.800000+00:00 3 \n", + "511 0 days 00:06:20 2025-01-25 02:06:42+00:00 4 \n", + "513 0 days 00:06:16 2025-01-25 02:06:45.200000+00:00 4 \n", + "525 0 days 00:05:12 2025-01-25 02:08:43.300000+00:00 4 \n", + "552 0 days 00:02:24 2025-01-25 02:19:43.600000+00:00 4 \n", + "\n", + " actionType subType personId possession scoreHome scoreAway teamId \n", + "90 steal 1631133 1610612757 24 17 1610612757 \n", + "114 steal 1631217 1610612766 30 22 1610612766 \n", + "144 steal 1630166 1610612757 32 24 1610612757 \n", + "146 steal 1629006 1610612766 32 24 1610612766 \n", + "167 steal 1629014 1610612757 37 28 1610612757 \n", + "182 steal 1631109 1610612766 39 33 1610612766 \n", + "193 steal 1631217 1610612766 42 33 1610612766 \n", + "217 steal 1630703 1610612757 42 36 1610612757 \n", + "254 steal 1630166 1610612757 48 46 1610612757 \n", + "288 steal 1641739 1610612757 54 54 1610612757 \n", + "300 steal 1641739 1610612757 54 58 1610612757 \n", + "305 steal 1629006 1610612766 54 61 1610612766 \n", + "312 steal 1629006 1610612766 57 61 1610612766 \n", + "318 steal 1642270 1610612757 57 61 1610612757 \n", + "339 steal 1630182 1610612766 59 61 1610612766 \n", + "360 steal 203924 1610612757 65 63 1610612757 \n", + "372 steal 1642354 1610612766 65 65 1610612766 \n", + "511 steal 1630166 1610612757 81 88 1610612757 \n", + "513 steal 1642354 1610612766 81 88 1610612766 \n", + "525 steal 1629014 1610612757 83 90 1610612757 \n", + "552 steal 1630166 1610612757 86 94 1610612757 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "steal_df = df_by_action.get_group('steal').dropna(how='all', axis=1)\n", + "steal_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d82cba52-fa90-4924-a95b-441866785da1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca5f60a9-9a88-4ffe-bc55-fcc5763551fd", + "metadata": {}, + "outputs": [], "source": [] } ],