tracinginsights's picture
download
raw
371 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Defaulting to user installation because normal site-packages is not writeable\n",
"Collecting fastf1\n",
" Downloading fastf1-3.3.0-py3-none-any.whl (128 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m128.8/128.8 KB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hCollecting numpy<2.0.0,>=1.21.5\n",
" Downloading numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.2/18.2 MB\u001b[0m \u001b[31m68.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: python-dateutil in /workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages (from fastf1) (2.9.0.post0)\n",
"Collecting matplotlib<4.0.0,>=3.5.1\n",
" Downloading matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m11.6/11.6 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting thefuzz\n",
" Downloading thefuzz-0.22.1-py3-none-any.whl (8.2 kB)\n",
"Collecting timple>=0.1.6\n",
" Downloading timple-0.1.8-py3-none-any.whl (17 kB)\n",
"Collecting pandas<3.0.0,>=1.4.1\n",
" Downloading pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.0/13.0 MB\u001b[0m \u001b[31m75.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting requests-cache>=1.0.0\n",
" Downloading requests_cache-1.2.0-py3-none-any.whl (61 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.4/61.4 KB\u001b[0m \u001b[31m26.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting scipy<2.0.0,>=1.7.3\n",
" Downloading scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (38.4 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m38.4/38.4 MB\u001b[0m \u001b[31m29.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hCollecting websockets>=10.3\n",
" Downloading websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (130 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m130.2/130.2 KB\u001b[0m \u001b[31m47.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting requests>=2.28.1\n",
" Downloading requests-2.31.0-py3-none-any.whl (62 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.6/62.6 KB\u001b[0m \u001b[31m26.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib<4.0.0,>=3.5.1->fastf1) (2.4.7)\n",
"Requirement already satisfied: packaging>=20.0 in /workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages (from matplotlib<4.0.0,>=3.5.1->fastf1) (23.2)\n",
"Collecting cycler>=0.10\n",
" Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n",
"Collecting contourpy>=1.0.1\n",
" Downloading contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (310 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m310.7/310.7 KB\u001b[0m \u001b[31m90.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting pillow>=8\n",
" Downloading pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl (4.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/4.5 MB\u001b[0m \u001b[31m92.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0mta \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hCollecting fonttools>=4.22.0\n",
" Downloading fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.6/4.6 MB\u001b[0m \u001b[31m100.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hCollecting kiwisolver>=1.3.1\n",
" Downloading kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m204.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting pytz>=2020.1\n",
" Downloading pytz-2024.1-py2.py3-none-any.whl (505 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m505.5/505.5 KB\u001b[0m \u001b[31m96.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tzdata>=2022.7\n",
" Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m345.4/345.4 KB\u001b[0m \u001b[31m107.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil->fastf1) (1.16.0)\n",
"Collecting certifi>=2017.4.17\n",
" Downloading certifi-2024.2.2-py3-none-any.whl (163 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m163.8/163.8 KB\u001b[0m \u001b[31m46.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting urllib3<3,>=1.21.1\n",
" Downloading urllib3-2.2.1-py3-none-any.whl (121 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.1/121.1 KB\u001b[0m \u001b[31m33.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting charset-normalizer<4,>=2\n",
" Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m142.1/142.1 KB\u001b[0m \u001b[31m52.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting idna<4,>=2.5\n",
" Downloading idna-3.6-py3-none-any.whl (61 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.6/61.6 KB\u001b[0m \u001b[31m19.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting cattrs>=22.2\n",
" Downloading cattrs-23.2.3-py3-none-any.whl (57 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m57.5/57.5 KB\u001b[0m \u001b[31m24.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting attrs>=21.2\n",
" Downloading attrs-23.2.0-py3-none-any.whl (60 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.8/60.8 KB\u001b[0m \u001b[31m29.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting url-normalize>=1.4\n",
" Downloading url_normalize-1.4.3-py2.py3-none-any.whl (6.8 kB)\n",
"Requirement already satisfied: platformdirs>=2.5 in /workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages (from requests-cache>=1.0.0->fastf1) (4.2.0)\n",
"Collecting rapidfuzz<4.0.0,>=3.0.0\n",
" Downloading rapidfuzz-3.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m86.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m\n",
"\u001b[?25hCollecting typing-extensions!=4.6.3,>=4.1.0\n",
" Downloading typing_extensions-4.10.0-py3-none-any.whl (33 kB)\n",
"Requirement already satisfied: exceptiongroup>=1.1.1 in /workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages (from cattrs>=22.2->requests-cache>=1.0.0->fastf1) (1.2.0)\n",
"Installing collected packages: pytz, websockets, urllib3, url-normalize, tzdata, typing-extensions, rapidfuzz, pillow, numpy, kiwisolver, idna, fonttools, cycler, charset-normalizer, certifi, attrs, thefuzz, scipy, requests, pandas, contourpy, cattrs, requests-cache, matplotlib, timple, fastf1\n",
"Successfully installed attrs-23.2.0 cattrs-23.2.3 certifi-2024.2.2 charset-normalizer-3.3.2 contourpy-1.2.0 cycler-0.12.1 fastf1-3.3.0 fonttools-4.49.0 idna-3.6 kiwisolver-1.4.5 matplotlib-3.8.3 numpy-1.26.4 pandas-2.2.1 pillow-10.2.0 pytz-2024.1 rapidfuzz-3.6.2 requests-2.31.0 requests-cache-1.2.0 scipy-1.12.0 thefuzz-0.22.1 timple-0.1.8 typing-extensions-4.10.0 tzdata-2024.1 url-normalize-1.4.3 urllib3-2.2.1 websockets-12.0\n"
]
}
],
"source": [
"!pip install fastf1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"core INFO \tLoading data for Russian Grand Prix - Practice 3 [v3.3.0]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"core WARNING \tFailed to determine `Session.session_start_time`\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 10\n",
"core WARNING \tNo lap data for driver 11\n",
"core WARNING \tNo lap data for driver 14\n",
"core WARNING \tNo lap data for driver 16\n",
"core WARNING \tNo lap data for driver 18\n",
"core WARNING \tNo lap data for driver 22\n",
"core WARNING \tNo lap data for driver 3\n",
"core WARNING \tNo lap data for driver 31\n",
"core WARNING \tNo lap data for driver 33\n",
"core WARNING \tNo lap data for driver 4\n",
"core WARNING \tNo lap data for driver 44\n",
"core WARNING \tNo lap data for driver 47\n",
"core WARNING \tNo lap data for driver 5\n",
"core WARNING \tNo lap data for driver 55\n",
"core WARNING \tNo lap data for driver 6\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tNo lap data for driver 7\n",
"core WARNING \tNo lap data for driver 77\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tNo lap data for driver 99\n",
"logger WARNING \tFailed to load timing data!\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n"
]
},
{
"ename": "DataNotLoadedError",
"evalue": "The data you are trying to access has not been loaded yet. See `Session.load`",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mDataNotLoadedError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/workspace/2021/bot.ipynb Cell 2\u001b[0m line \u001b[0;36m5\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=54'>55</a>\u001b[0m f1session \u001b[39m=\u001b[39m fastf1\u001b[39m.\u001b[39mget_session(YEAR, event, session)\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=55'>56</a>\u001b[0m f1session\u001b[39m.\u001b[39mload(laps\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m, telemetry\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, weather\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, messages\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m)\n\u001b[0;32m---> <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=56'>57</a>\u001b[0m circuit_info \u001b[39m=\u001b[39m f1session\u001b[39m.\u001b[39;49mget_circuit_info()\u001b[39m.\u001b[39mcorners\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=57'>58</a>\u001b[0m corner_info \u001b[39m=\u001b[39m{\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=58'>59</a>\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mCornerNumber\u001b[39m\u001b[39m\"\u001b[39m: circuit_info[\u001b[39m'\u001b[39m\u001b[39mNumber\u001b[39m\u001b[39m'\u001b[39m]\u001b[39m.\u001b[39mtolist(),\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=59'>60</a>\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mX\u001b[39m\u001b[39m\"\u001b[39m: circuit_info[\u001b[39m'\u001b[39m\u001b[39mX\u001b[39m\u001b[39m'\u001b[39m]\u001b[39m.\u001b[39mtolist(),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=62'>63</a>\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mDistance\u001b[39m\u001b[39m\"\u001b[39m: circuit_info[\u001b[39m'\u001b[39m\u001b[39mDistance\u001b[39m\u001b[39m'\u001b[39m]\u001b[39m.\u001b[39mtolist(),\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=63'>64</a>\u001b[0m }\n\u001b[1;32m <a href='vscode-notebook-cell://tracinginsightsa-2021-gsuo40331oi.ws-us108.gitpod.io/workspace/2021/bot.ipynb#X35sdnNjb2RlLXJlbW90ZQ%3D%3D?line=65'>66</a>\u001b[0m driver_folder \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mevent\u001b[39m}\u001b[39;00m\u001b[39m/\u001b[39m\u001b[39m{\u001b[39;00msession\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n",
"File \u001b[0;32m/workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages/fastf1/core.py:2445\u001b[0m, in \u001b[0;36mSession.get_circuit_info\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 2441\u001b[0m circuit_key \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msession_info[\u001b[39m'\u001b[39m\u001b[39mMeeting\u001b[39m\u001b[39m'\u001b[39m][\u001b[39m'\u001b[39m\u001b[39mCircuit\u001b[39m\u001b[39m'\u001b[39m][\u001b[39m'\u001b[39m\u001b[39mKey\u001b[39m\u001b[39m'\u001b[39m]\n\u001b[1;32m 2442\u001b[0m circuit_info \u001b[39m=\u001b[39m get_circuit_info(year\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mevent\u001b[39m.\u001b[39myear,\n\u001b[1;32m 2443\u001b[0m circuit_key\u001b[39m=\u001b[39mcircuit_key)\n\u001b[1;32m 2444\u001b[0m circuit_info\u001b[39m.\u001b[39madd_marker_distance(\n\u001b[0;32m-> 2445\u001b[0m reference_lap\u001b[39m=\u001b[39m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mlaps\u001b[39m.\u001b[39mpick_fastest()\n\u001b[1;32m 2446\u001b[0m )\n\u001b[1;32m 2447\u001b[0m \u001b[39mreturn\u001b[39;00m circuit_info\n",
"File \u001b[0;32m/workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages/fastf1/core.py:1274\u001b[0m, in \u001b[0;36mSession.laps\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1268\u001b[0m \u001b[39m@property\u001b[39m\n\u001b[1;32m 1269\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mlaps\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mLaps\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m 1270\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\":class:`Laps`: All laps from all drivers driven in this session.\u001b[39;00m\n\u001b[1;32m 1271\u001b[0m \n\u001b[1;32m 1272\u001b[0m \u001b[39m Data is available after calling `Session.load` with ``laps=True``\u001b[39;00m\n\u001b[1;32m 1273\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1274\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_get_property_warn_not_loaded(\u001b[39m'\u001b[39;49m\u001b[39m_laps\u001b[39;49m\u001b[39m'\u001b[39;49m)\n",
"File \u001b[0;32m/workspace/.pyenv_mirror/user/current/lib/python3.10/site-packages/fastf1/core.py:1233\u001b[0m, in \u001b[0;36mSession._get_property_warn_not_loaded\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 1231\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_get_property_warn_not_loaded\u001b[39m(\u001b[39mself\u001b[39m, name):\n\u001b[1;32m 1232\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mhasattr\u001b[39m(\u001b[39mself\u001b[39m, name):\n\u001b[0;32m-> 1233\u001b[0m \u001b[39mraise\u001b[39;00m DataNotLoadedError(\n\u001b[1;32m 1234\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mThe data you are trying to access has not been loaded yet. \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 1235\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mSee `Session.load`\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 1236\u001b[0m )\n\u001b[1;32m 1237\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, name, \u001b[39mNone\u001b[39;00m)\n",
"\u001b[0;31mDataNotLoadedError\u001b[0m: The data you are trying to access has not been loaded yet. See `Session.load`"
]
}
],
"source": [
"import fastf1\n",
"import os\n",
"import json\n",
"import utils\n",
"\n",
"YEAR = 2021\n",
"\n",
"events = [\n",
"# 'Austrian Grand Prix',\n",
"# 'Azerbaijan Grand Prix',\n",
"# 'Bahrain Grand Prix', \n",
"# 'Belgian Grand Prix',\n",
"# 'British Grand Prix',\n",
"# 'Dutch Grand Prix',\n",
"# 'Emilia Romagna Grand Prix', \n",
"# 'French Grand Prix', \n",
"# 'Hungarian Grand Prix', \n",
"# 'Italian Grand Prix',\n",
"# 'Monaco Grand Prix', \n",
"# 'Portuguese Grand Prix',\n",
"\n",
"\n",
"'Russian Grand Prix',\n",
"\n",
"\n",
" \n",
" # 'Spanish Grand Prix', \n",
" # 'Styrian Grand Prix',\n",
" \n",
" \n",
" # 'Turkish Grand Prix', \n",
" # 'United States Grand Prix',\n",
" # 'Mexico City Grand Prix', \n",
" # 'São Paulo Grand Prix', 'Qatar Grand Prix', \n",
" # 'Saudi Arabian Grand Prix', 'Abu Dhabi Grand Prix', \n",
"]\n",
"sessions = [\n",
" # \"Practice 1\",\n",
" # \"Practice 2\",\n",
" \"Practice 3\",\n",
" # \"Qualifying\",\n",
" # \"Race\",\n",
"]\n",
"\n",
"def sessions_available(year: int, event: str | int) -> any:\n",
" # get sessions available for a given year and event\n",
" event = str(event)\n",
" data = utils.LatestData(year)\n",
" sessions = data.get_sessions(event)\n",
" return sessions\n",
"\n",
"for event in events:\n",
" # sessions = [utils.get_sessions(YEAR, event)]\n",
" for session in sessions:\n",
" f1session = fastf1.get_session(YEAR, event, session)\n",
" f1session.load(laps=True, telemetry=False, weather=False, messages=False)\n",
" circuit_info = f1session.get_circuit_info().corners\n",
" corner_info ={\n",
" \"CornerNumber\": circuit_info['Number'].tolist(),\n",
" \"X\": circuit_info['X'].tolist(),\n",
" \"Y\": circuit_info['Y'].tolist(),\n",
" \"Angle\": circuit_info['Angle'].tolist(),\n",
" \"Distance\": circuit_info['Distance'].tolist(),\n",
" }\n",
"\n",
" driver_folder = f\"{event}/{session}\"\n",
" file_path = f\"{event}/{session}/corners.json\"\n",
" if not os.path.exists(driver_folder):\n",
" os.makedirs(driver_folder)\n",
" # Save the dictionary to a JSON file\n",
" with open(file_path, \"w\") as json_file:\n",
" json.dump(corner_info, json_file)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"!pip install fastapi requests pandas lxml fastf1 -q"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"YEAR = 2021"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import fastf1\n",
"fastf1.Cache.enable_cache(\"cache\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Bahrain Grand Prix', 'Emilia Romagna Grand Prix', 'Portuguese Grand Prix', 'Spanish Grand Prix', 'Monaco Grand Prix', 'Azerbaijan Grand Prix', 'French Grand Prix', 'Styrian Grand Prix', 'Austrian Grand Prix', 'British Grand Prix', 'Hungarian Grand Prix', 'Belgian Grand Prix', 'Dutch Grand Prix', 'Italian Grand Prix', 'Russian Grand Prix', 'Turkish Grand Prix', 'United States Grand Prix', 'Mexico City Grand Prix', 'São Paulo Grand Prix', 'Qatar Grand Prix', 'Saudi Arabian Grand Prix', 'Abu Dhabi Grand Prix']\n"
]
}
],
"source": [
"import utils\n",
"import fastf1\n",
"def events_available(year: int) -> any:\n",
" # get events available for a given year\n",
" data = utils.LatestData(year)\n",
" events = data.get_events()\n",
" return events\n",
"\n",
"events = events_available(YEAR)\n",
"print(events)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def sessions_available(year: int, event: str | int) -> any:\n",
" # get sessions available for a given year and event\n",
" event = str(event)\n",
" data = utils.LatestData(year)\n",
" sessions = data.get_sessions(event)\n",
" return sessions\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Folder created for Bahrain Grand Prix: /workspaces/2021/Bahrain Grand Prix\n",
"Folder created for Emilia Romagna Grand Prix: /workspaces/2021/Emilia Romagna Grand Prix\n",
"Folder created for Portuguese Grand Prix: /workspaces/2021/Portuguese Grand Prix\n",
"Folder created for Spanish Grand Prix: /workspaces/2021/Spanish Grand Prix\n",
"Folder created for Monaco Grand Prix: /workspaces/2021/Monaco Grand Prix\n",
"Folder created for Azerbaijan Grand Prix: /workspaces/2021/Azerbaijan Grand Prix\n",
"Folder created for French Grand Prix: /workspaces/2021/French Grand Prix\n",
"Folder created for Styrian Grand Prix: /workspaces/2021/Styrian Grand Prix\n",
"Folder created for Austrian Grand Prix: /workspaces/2021/Austrian Grand Prix\n",
"Folder created for British Grand Prix: /workspaces/2021/British Grand Prix\n",
"Folder created for Hungarian Grand Prix: /workspaces/2021/Hungarian Grand Prix\n",
"Folder created for Belgian Grand Prix: /workspaces/2021/Belgian Grand Prix\n",
"Folder created for Dutch Grand Prix: /workspaces/2021/Dutch Grand Prix\n",
"Folder created for Italian Grand Prix: /workspaces/2021/Italian Grand Prix\n",
"Folder created for Russian Grand Prix: /workspaces/2021/Russian Grand Prix\n",
"Folder created for Turkish Grand Prix: /workspaces/2021/Turkish Grand Prix\n",
"Folder created for United States Grand Prix: /workspaces/2021/United States Grand Prix\n",
"Folder created for Mexico City Grand Prix: /workspaces/2021/Mexico City Grand Prix\n",
"Folder created for São Paulo Grand Prix: /workspaces/2021/São Paulo Grand Prix\n",
"Folder created for Qatar Grand Prix: /workspaces/2021/Qatar Grand Prix\n",
"Folder created for Saudi Arabian Grand Prix: /workspaces/2021/Saudi Arabian Grand Prix\n",
"Folder created for Abu Dhabi Grand Prix: /workspaces/2021/Abu Dhabi Grand Prix\n"
]
}
],
"source": [
"import os\n",
"\n",
"# Your list of events\n",
"events_list = events\n",
"\n",
"# Create a folder for each event in the current working directory\n",
"for event in events_list:\n",
" event_directory = os.path.join(os.getcwd(), event)\n",
"\n",
" # Check if the folder already exists before creating it\n",
" if not os.path.exists(event_directory):\n",
" os.makedirs(event_directory)\n",
" print(f\"Folder created for {event}: {event_directory}\")\n",
" else:\n",
" print(f\"Folder already exists for {event}: {event_directory}\")\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def session_drivers(year: int, event: str | int, session: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" import fastf1\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=True, weather=False, messages=False)\n",
"\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors dict to laps on Team column\n",
" laps[\"color\"] = laps[\"Team\"].map(team_colors)\n",
"\n",
" unique_drivers = laps[\"Driver\"].unique()\n",
"\n",
" drivers = [\n",
" {\n",
"\n",
" \"driver\": driver,\n",
" \"team\": laps[laps.Driver == driver].Team.iloc[0],\n",
" }\n",
" for driver in unique_drivers\n",
" ]\n",
"\n",
" return {\"drivers\": drivers}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Folder already exists for Bahrain Grand Prix: /workspaces/2021/Bahrain Grand Prix\n",
"Folder created for Bahrain Grand Prix - Practice 1: /workspaces/2021/Bahrain Grand Prix/Practice 1\n",
"Folder created for Bahrain Grand Prix - Practice 2: /workspaces/2021/Bahrain Grand Prix/Practice 2\n",
"Folder created for Bahrain Grand Prix - Practice 3: /workspaces/2021/Bahrain Grand Prix/Practice 3\n",
"Folder created for Bahrain Grand Prix - Qualifying: /workspaces/2021/Bahrain Grand Prix/Qualifying\n",
"Folder created for Bahrain Grand Prix - Race: /workspaces/2021/Bahrain Grand Prix/Race\n",
"Folder already exists for Emilia Romagna Grand Prix: /workspaces/2021/Emilia Romagna Grand Prix\n",
"Folder created for Emilia Romagna Grand Prix - Practice 1: /workspaces/2021/Emilia Romagna Grand Prix/Practice 1\n",
"Folder created for Emilia Romagna Grand Prix - Practice 2: /workspaces/2021/Emilia Romagna Grand Prix/Practice 2\n",
"Folder created for Emilia Romagna Grand Prix - Practice 3: /workspaces/2021/Emilia Romagna Grand Prix/Practice 3\n",
"Folder created for Emilia Romagna Grand Prix - Qualifying: /workspaces/2021/Emilia Romagna Grand Prix/Qualifying\n",
"Folder created for Emilia Romagna Grand Prix - Race: /workspaces/2021/Emilia Romagna Grand Prix/Race\n",
"Folder already exists for Portuguese Grand Prix: /workspaces/2021/Portuguese Grand Prix\n",
"Folder created for Portuguese Grand Prix - Practice 1: /workspaces/2021/Portuguese Grand Prix/Practice 1\n",
"Folder created for Portuguese Grand Prix - Practice 2: /workspaces/2021/Portuguese Grand Prix/Practice 2\n",
"Folder created for Portuguese Grand Prix - Practice 3: /workspaces/2021/Portuguese Grand Prix/Practice 3\n",
"Folder created for Portuguese Grand Prix - Qualifying: /workspaces/2021/Portuguese Grand Prix/Qualifying\n",
"Folder created for Portuguese Grand Prix - Race: /workspaces/2021/Portuguese Grand Prix/Race\n",
"Folder already exists for Spanish Grand Prix: /workspaces/2021/Spanish Grand Prix\n",
"Folder created for Spanish Grand Prix - Practice 1: /workspaces/2021/Spanish Grand Prix/Practice 1\n",
"Folder created for Spanish Grand Prix - Practice 2: /workspaces/2021/Spanish Grand Prix/Practice 2\n",
"Folder created for Spanish Grand Prix - Practice 3: /workspaces/2021/Spanish Grand Prix/Practice 3\n",
"Folder created for Spanish Grand Prix - Qualifying: /workspaces/2021/Spanish Grand Prix/Qualifying\n",
"Folder created for Spanish Grand Prix - Race: /workspaces/2021/Spanish Grand Prix/Race\n",
"Folder already exists for Monaco Grand Prix: /workspaces/2021/Monaco Grand Prix\n",
"Folder created for Monaco Grand Prix - Practice 1: /workspaces/2021/Monaco Grand Prix/Practice 1\n",
"Folder created for Monaco Grand Prix - Practice 2: /workspaces/2021/Monaco Grand Prix/Practice 2\n",
"Folder created for Monaco Grand Prix - Practice 3: /workspaces/2021/Monaco Grand Prix/Practice 3\n",
"Folder created for Monaco Grand Prix - Qualifying: /workspaces/2021/Monaco Grand Prix/Qualifying\n",
"Folder created for Monaco Grand Prix - Race: /workspaces/2021/Monaco Grand Prix/Race\n",
"Folder already exists for Azerbaijan Grand Prix: /workspaces/2021/Azerbaijan Grand Prix\n",
"Folder created for Azerbaijan Grand Prix - Practice 1: /workspaces/2021/Azerbaijan Grand Prix/Practice 1\n",
"Folder created for Azerbaijan Grand Prix - Practice 2: /workspaces/2021/Azerbaijan Grand Prix/Practice 2\n",
"Folder created for Azerbaijan Grand Prix - Practice 3: /workspaces/2021/Azerbaijan Grand Prix/Practice 3\n",
"Folder created for Azerbaijan Grand Prix - Qualifying: /workspaces/2021/Azerbaijan Grand Prix/Qualifying\n",
"Folder created for Azerbaijan Grand Prix - Race: /workspaces/2021/Azerbaijan Grand Prix/Race\n",
"Folder already exists for French Grand Prix: /workspaces/2021/French Grand Prix\n",
"Folder created for French Grand Prix - Practice 1: /workspaces/2021/French Grand Prix/Practice 1\n",
"Folder created for French Grand Prix - Practice 2: /workspaces/2021/French Grand Prix/Practice 2\n",
"Folder created for French Grand Prix - Practice 3: /workspaces/2021/French Grand Prix/Practice 3\n",
"Folder created for French Grand Prix - Qualifying: /workspaces/2021/French Grand Prix/Qualifying\n",
"Folder created for French Grand Prix - Race: /workspaces/2021/French Grand Prix/Race\n",
"Folder already exists for Styrian Grand Prix: /workspaces/2021/Styrian Grand Prix\n",
"Folder created for Styrian Grand Prix - Practice 1: /workspaces/2021/Styrian Grand Prix/Practice 1\n",
"Folder created for Styrian Grand Prix - Practice 2: /workspaces/2021/Styrian Grand Prix/Practice 2\n",
"Folder created for Styrian Grand Prix - Practice 3: /workspaces/2021/Styrian Grand Prix/Practice 3\n",
"Folder created for Styrian Grand Prix - Qualifying: /workspaces/2021/Styrian Grand Prix/Qualifying\n",
"Folder created for Styrian Grand Prix - Race: /workspaces/2021/Styrian Grand Prix/Race\n",
"Folder already exists for Austrian Grand Prix: /workspaces/2021/Austrian Grand Prix\n",
"Folder created for Austrian Grand Prix - Practice 1: /workspaces/2021/Austrian Grand Prix/Practice 1\n",
"Folder created for Austrian Grand Prix - Practice 2: /workspaces/2021/Austrian Grand Prix/Practice 2\n",
"Folder created for Austrian Grand Prix - Practice 3: /workspaces/2021/Austrian Grand Prix/Practice 3\n",
"Folder created for Austrian Grand Prix - Qualifying: /workspaces/2021/Austrian Grand Prix/Qualifying\n",
"Folder created for Austrian Grand Prix - Race: /workspaces/2021/Austrian Grand Prix/Race\n",
"Folder already exists for British Grand Prix: /workspaces/2021/British Grand Prix\n",
"Folder created for British Grand Prix - Practice 1: /workspaces/2021/British Grand Prix/Practice 1\n",
"Folder created for British Grand Prix - Qualifying: /workspaces/2021/British Grand Prix/Qualifying\n",
"Folder created for British Grand Prix - Practice 2: /workspaces/2021/British Grand Prix/Practice 2\n",
"Folder created for British Grand Prix - Sprint Qualifying: /workspaces/2021/British Grand Prix/Sprint Qualifying\n",
"Folder created for British Grand Prix - Race: /workspaces/2021/British Grand Prix/Race\n",
"Folder already exists for Hungarian Grand Prix: /workspaces/2021/Hungarian Grand Prix\n",
"Folder created for Hungarian Grand Prix - Practice 1: /workspaces/2021/Hungarian Grand Prix/Practice 1\n",
"Folder created for Hungarian Grand Prix - Practice 2: /workspaces/2021/Hungarian Grand Prix/Practice 2\n",
"Folder created for Hungarian Grand Prix - Practice 3: /workspaces/2021/Hungarian Grand Prix/Practice 3\n",
"Folder created for Hungarian Grand Prix - Qualifying: /workspaces/2021/Hungarian Grand Prix/Qualifying\n",
"Folder created for Hungarian Grand Prix - Race: /workspaces/2021/Hungarian Grand Prix/Race\n",
"Folder already exists for Belgian Grand Prix: /workspaces/2021/Belgian Grand Prix\n",
"Folder created for Belgian Grand Prix - Practice 1: /workspaces/2021/Belgian Grand Prix/Practice 1\n",
"Folder created for Belgian Grand Prix - Practice 2: /workspaces/2021/Belgian Grand Prix/Practice 2\n",
"Folder created for Belgian Grand Prix - Practice 3: /workspaces/2021/Belgian Grand Prix/Practice 3\n",
"Folder created for Belgian Grand Prix - Qualifying: /workspaces/2021/Belgian Grand Prix/Qualifying\n",
"Folder created for Belgian Grand Prix - Race: /workspaces/2021/Belgian Grand Prix/Race\n",
"Folder already exists for Dutch Grand Prix: /workspaces/2021/Dutch Grand Prix\n",
"Folder created for Dutch Grand Prix - Practice 1: /workspaces/2021/Dutch Grand Prix/Practice 1\n",
"Folder created for Dutch Grand Prix - Practice 2: /workspaces/2021/Dutch Grand Prix/Practice 2\n",
"Folder created for Dutch Grand Prix - Practice 3: /workspaces/2021/Dutch Grand Prix/Practice 3\n",
"Folder created for Dutch Grand Prix - Qualifying: /workspaces/2021/Dutch Grand Prix/Qualifying\n",
"Folder created for Dutch Grand Prix - Race: /workspaces/2021/Dutch Grand Prix/Race\n",
"Folder already exists for Italian Grand Prix: /workspaces/2021/Italian Grand Prix\n",
"Folder created for Italian Grand Prix - Practice 1: /workspaces/2021/Italian Grand Prix/Practice 1\n",
"Folder created for Italian Grand Prix - Qualifying: /workspaces/2021/Italian Grand Prix/Qualifying\n",
"Folder created for Italian Grand Prix - Practice 2: /workspaces/2021/Italian Grand Prix/Practice 2\n",
"Folder created for Italian Grand Prix - Sprint Qualifying: /workspaces/2021/Italian Grand Prix/Sprint Qualifying\n",
"Folder created for Italian Grand Prix - Race: /workspaces/2021/Italian Grand Prix/Race\n",
"Folder already exists for Russian Grand Prix: /workspaces/2021/Russian Grand Prix\n",
"Folder created for Russian Grand Prix - Practice 1: /workspaces/2021/Russian Grand Prix/Practice 1\n",
"Folder created for Russian Grand Prix - Practice 2: /workspaces/2021/Russian Grand Prix/Practice 2\n",
"Folder created for Russian Grand Prix - Practice 3: /workspaces/2021/Russian Grand Prix/Practice 3\n",
"Folder created for Russian Grand Prix - Qualifying: /workspaces/2021/Russian Grand Prix/Qualifying\n",
"Folder created for Russian Grand Prix - Race: /workspaces/2021/Russian Grand Prix/Race\n",
"Folder already exists for Turkish Grand Prix: /workspaces/2021/Turkish Grand Prix\n",
"Folder created for Turkish Grand Prix - Practice 1: /workspaces/2021/Turkish Grand Prix/Practice 1\n",
"Folder created for Turkish Grand Prix - Practice 2: /workspaces/2021/Turkish Grand Prix/Practice 2\n",
"Folder created for Turkish Grand Prix - Practice 3: /workspaces/2021/Turkish Grand Prix/Practice 3\n",
"Folder created for Turkish Grand Prix - Qualifying: /workspaces/2021/Turkish Grand Prix/Qualifying\n",
"Folder created for Turkish Grand Prix - Race: /workspaces/2021/Turkish Grand Prix/Race\n",
"Folder already exists for United States Grand Prix: /workspaces/2021/United States Grand Prix\n",
"Folder created for United States Grand Prix - Practice 1: /workspaces/2021/United States Grand Prix/Practice 1\n",
"Folder created for United States Grand Prix - Practice 2: /workspaces/2021/United States Grand Prix/Practice 2\n",
"Folder created for United States Grand Prix - Practice 3: /workspaces/2021/United States Grand Prix/Practice 3\n",
"Folder created for United States Grand Prix - Qualifying: /workspaces/2021/United States Grand Prix/Qualifying\n",
"Folder created for United States Grand Prix - Race: /workspaces/2021/United States Grand Prix/Race\n",
"Folder already exists for Mexico City Grand Prix: /workspaces/2021/Mexico City Grand Prix\n",
"Folder created for Mexico City Grand Prix - Practice 1: /workspaces/2021/Mexico City Grand Prix/Practice 1\n",
"Folder created for Mexico City Grand Prix - Practice 2: /workspaces/2021/Mexico City Grand Prix/Practice 2\n",
"Folder created for Mexico City Grand Prix - Practice 3: /workspaces/2021/Mexico City Grand Prix/Practice 3\n",
"Folder created for Mexico City Grand Prix - Qualifying: /workspaces/2021/Mexico City Grand Prix/Qualifying\n",
"Folder created for Mexico City Grand Prix - Race: /workspaces/2021/Mexico City Grand Prix/Race\n",
"Folder already exists for São Paulo Grand Prix: /workspaces/2021/São Paulo Grand Prix\n",
"Folder created for São Paulo Grand Prix - Practice 1: /workspaces/2021/São Paulo Grand Prix/Practice 1\n",
"Folder created for São Paulo Grand Prix - Qualifying: /workspaces/2021/São Paulo Grand Prix/Qualifying\n",
"Folder created for São Paulo Grand Prix - Practice 2: /workspaces/2021/São Paulo Grand Prix/Practice 2\n",
"Folder created for São Paulo Grand Prix - Sprint Qualifying: /workspaces/2021/São Paulo Grand Prix/Sprint Qualifying\n",
"Folder created for São Paulo Grand Prix - Race: /workspaces/2021/São Paulo Grand Prix/Race\n",
"Folder already exists for Qatar Grand Prix: /workspaces/2021/Qatar Grand Prix\n",
"Folder created for Qatar Grand Prix - Practice 1: /workspaces/2021/Qatar Grand Prix/Practice 1\n",
"Folder created for Qatar Grand Prix - Practice 2: /workspaces/2021/Qatar Grand Prix/Practice 2\n",
"Folder created for Qatar Grand Prix - Practice 3: /workspaces/2021/Qatar Grand Prix/Practice 3\n",
"Folder created for Qatar Grand Prix - Qualifying: /workspaces/2021/Qatar Grand Prix/Qualifying\n",
"Folder created for Qatar Grand Prix - Race: /workspaces/2021/Qatar Grand Prix/Race\n",
"Folder already exists for Saudi Arabian Grand Prix: /workspaces/2021/Saudi Arabian Grand Prix\n",
"Folder created for Saudi Arabian Grand Prix - Practice 1: /workspaces/2021/Saudi Arabian Grand Prix/Practice 1\n",
"Folder created for Saudi Arabian Grand Prix - Practice 2: /workspaces/2021/Saudi Arabian Grand Prix/Practice 2\n",
"Folder created for Saudi Arabian Grand Prix - Practice 3: /workspaces/2021/Saudi Arabian Grand Prix/Practice 3\n",
"Folder created for Saudi Arabian Grand Prix - Qualifying: /workspaces/2021/Saudi Arabian Grand Prix/Qualifying\n",
"Folder created for Saudi Arabian Grand Prix - Race: /workspaces/2021/Saudi Arabian Grand Prix/Race\n",
"Folder created for Saudi Arabian Grand Prix - High Speed Track Test: /workspaces/2021/Saudi Arabian Grand Prix/High Speed Track Test\n",
"Folder already exists for Abu Dhabi Grand Prix: /workspaces/2021/Abu Dhabi Grand Prix\n",
"Folder created for Abu Dhabi Grand Prix - Practice 1: /workspaces/2021/Abu Dhabi Grand Prix/Practice 1\n",
"Folder created for Abu Dhabi Grand Prix - Practice 2: /workspaces/2021/Abu Dhabi Grand Prix/Practice 2\n",
"Folder created for Abu Dhabi Grand Prix - Practice 3: /workspaces/2021/Abu Dhabi Grand Prix/Practice 3\n",
"Folder created for Abu Dhabi Grand Prix - Qualifying: /workspaces/2021/Abu Dhabi Grand Prix/Qualifying\n",
"Folder created for Abu Dhabi Grand Prix - Race: /workspaces/2021/Abu Dhabi Grand Prix/Race\n"
]
}
],
"source": [
"import os\n",
"\n",
"# Your list of events\n",
"events_list = events\n",
"\n",
"# Loop through each event\n",
"for event in events_list:\n",
" event_directory = os.path.join(os.getcwd(), event)\n",
"\n",
" # Check if the event folder already exists before creating it\n",
" if not os.path.exists(event_directory):\n",
" os.makedirs(event_directory)\n",
" print(f\"Folder created for {event}: {event_directory}\")\n",
" else:\n",
" print(f\"Folder already exists for {event}: {event_directory}\")\n",
"\n",
" # Get sessions for the current event\n",
" sessions = sessions_available(YEAR, event)\n",
"\n",
" # Loop through each session and create a folder within the event folder\n",
" for session in sessions:\n",
" session_directory = os.path.join(event_directory, session)\n",
"\n",
" # Check if the session folder already exists before creating it\n",
" if not os.path.exists(session_directory):\n",
" os.makedirs(session_directory)\n",
" print(f\"Folder created for {event} - {session}: {session_directory}\")\n",
" else:\n",
" print(f\"Folder already exists for {event} - {session}: {session_directory}\")\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Practice 1',\n",
" 'Practice 2',\n",
" 'Practice 3',\n",
" 'Qualifying',\n",
" 'Race',\n",
" 'High Speed Track Test']"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sessions_available(YEAR, \"Saudi Arabian Grand Prix\")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tNo cached data found for session_info. Loading data...\n",
"_api INFO \tFetching session info data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for driver_info. Loading data...\n",
"_api INFO \tFetching driver list...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for session_status_data. Loading data...\n",
"_api INFO \tFetching session status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for track_status_data. Loading data...\n",
"_api INFO \tFetching track status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for _extended_timing_data. Loading data...\n",
"_api INFO \tFetching timing data...\n",
"_api INFO \tParsing timing data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for timing_app_data. Loading data...\n",
"_api INFO \tFetching timing app data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"req INFO \tNo cached data found for car_data. Loading data...\n",
"_api INFO \tFetching car data...\n",
"_api INFO \tParsing car data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for position_data. Loading data...\n",
"_api INFO \tFetching position data...\n",
"_api INFO \tParsing position data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tNo cached data found for session_info. Loading data...\n",
"_api INFO \tFetching session info data...\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dictionary saved to Abu Dhabi Grand Prix/Practice 1/drivers.json\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for driver_info. Loading data...\n",
"_api INFO \tFetching driver list...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for session_status_data. Loading data...\n",
"_api INFO \tFetching session status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for track_status_data. Loading data...\n",
"_api INFO \tFetching track status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for _extended_timing_data. Loading data...\n",
"_api INFO \tFetching timing data...\n",
"_api INFO \tParsing timing data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for timing_app_data. Loading data...\n",
"_api INFO \tFetching timing app data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tNo cached data found for car_data. Loading data...\n",
"_api INFO \tFetching car data...\n",
"_api INFO \tParsing car data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for position_data. Loading data...\n",
"_api INFO \tFetching position data...\n",
"_api INFO \tParsing position data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tNo cached data found for session_info. Loading data...\n",
"_api INFO \tFetching session info data...\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dictionary saved to Abu Dhabi Grand Prix/Practice 2/drivers.json\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for driver_info. Loading data...\n",
"_api INFO \tFetching driver list...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for session_status_data. Loading data...\n",
"_api INFO \tFetching session status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for track_status_data. Loading data...\n",
"_api INFO \tFetching track status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for _extended_timing_data. Loading data...\n",
"_api INFO \tFetching timing data...\n",
"_api INFO \tParsing timing data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for timing_app_data. Loading data...\n",
"_api INFO \tFetching timing app data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tNo cached data found for car_data. Loading data...\n",
"_api INFO \tFetching car data...\n",
"_api INFO \tParsing car data...\n",
"_api WARNING \tDriver 1: Car data is incomplete!\n",
"_api WARNING \tDriver 2: Car data is incomplete!\n",
"_api WARNING \tDriver 8: Car data is incomplete!\n",
"_api WARNING \tDriver 12: Car data is incomplete!\n",
"_api WARNING \tDriver 15: Car data is incomplete!\n",
"_api WARNING \tDriver 17: Car data is incomplete!\n",
"_api WARNING \tDriver 19: Car data is incomplete!\n",
"_api WARNING \tDriver 20: Car data is incomplete!\n",
"_api WARNING \tDriver 21: Car data is incomplete!\n",
"_api WARNING \tDriver 23: Car data is incomplete!\n",
"_api WARNING \tDriver 24: Car data is incomplete!\n",
"_api WARNING \tDriver 25: Car data is incomplete!\n",
"_api WARNING \tDriver 26: Car data is incomplete!\n",
"_api WARNING \tDriver 27: Car data is incomplete!\n",
"_api WARNING \tDriver 28: Car data is incomplete!\n",
"_api WARNING \tDriver 29: Car data is incomplete!\n",
"_api WARNING \tDriver 30: Car data is incomplete!\n",
"_api WARNING \tDriver 33: Car data is incomplete!\n",
"_api WARNING \tDriver 44: Car data is incomplete!\n",
"_api WARNING \tDriver 47: Car data is incomplete!\n",
"_api WARNING \tDriver 55: Car data is incomplete!\n",
"_api WARNING \tDriver 63: Car data is incomplete!\n",
"_api WARNING \tDriver 77: Car data is incomplete!\n",
"_api WARNING \tDriver 99: Car data is incomplete!\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for position_data. Loading data...\n",
"_api INFO \tFetching position data...\n",
"_api INFO \tParsing position data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tNo cached data found for session_info. Loading data...\n",
"_api INFO \tFetching session info data...\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dictionary saved to Abu Dhabi Grand Prix/Practice 3/drivers.json\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for driver_info. Loading data...\n",
"_api INFO \tFetching driver list...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for session_status_data. Loading data...\n",
"_api INFO \tFetching session status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for track_status_data. Loading data...\n",
"_api INFO \tFetching track status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for _extended_timing_data. Loading data...\n",
"_api INFO \tFetching timing data...\n",
"_api INFO \tParsing timing data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for timing_app_data. Loading data...\n",
"_api INFO \tFetching timing app data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tNo cached data found for car_data. Loading data...\n",
"_api INFO \tFetching car data...\n",
"_api INFO \tParsing car data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for position_data. Loading data...\n",
"_api INFO \tFetching position data...\n",
"_api INFO \tParsing position data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tNo cached data found for session_info. Loading data...\n",
"_api INFO \tFetching session info data...\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dictionary saved to Abu Dhabi Grand Prix/Qualifying/drivers.json\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for driver_info. Loading data...\n",
"_api INFO \tFetching driver list...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for session_status_data. Loading data...\n",
"_api INFO \tFetching session status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for lap_count. Loading data...\n",
"_api INFO \tFetching lap count data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for track_status_data. Loading data...\n",
"_api INFO \tFetching track status data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for _extended_timing_data. Loading data...\n",
"_api INFO \tFetching timing data...\n",
"_api INFO \tParsing timing data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for timing_app_data. Loading data...\n",
"_api INFO \tFetching timing app data...\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"req INFO \tNo cached data found for car_data. Loading data...\n",
"_api INFO \tFetching car data...\n",
"_api INFO \tParsing car data...\n",
"req INFO \tData has been written to cache!\n",
"req INFO \tNo cached data found for position_data. Loading data...\n",
"_api INFO \tFetching position data...\n",
"_api INFO \tParsing position data...\n",
"_api WARNING \tDriver 241: Position data is incomplete!\n",
"_api WARNING \tDriver 242: Position data is incomplete!\n",
"_api WARNING \tDriver 243: Position data is incomplete!\n",
"req INFO \tData has been written to cache!\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dictionary saved to Abu Dhabi Grand Prix/Race/drivers.json\n"
]
}
],
"source": [
"import os\n",
"\n",
"# Your list of events\n",
"events_list = events\n",
"\n",
"# Loop through each event\n",
"for event in events_list:\n",
" # Get sessions for the current event\n",
" sessions = sessions_available(YEAR, event)\n",
" if event == \"Russian Grand Prix\":\n",
" sessions = [\"Practice 1\", \"Practice 2\", \"Qualifying\", \"Race\"]\n",
" if event == \"Saudi Arabian Grand Prix\":\n",
" sessions = [\"Practice 1\", \"Practice 2\", \"Practice 3\",\"Qualifying\", \"Race\"] # removing 'high spped track test'\n",
"\n",
"\n",
"\n",
" # Loop through each session and create a folder within the event folder\n",
" for session in sessions:\n",
" drivers = session_drivers(YEAR, event, session)\n",
"\n",
" import json\n",
"\n",
" # Specify the file path where you want to save the JSON data\n",
" file_path = f\"{event}/{session}/drivers.json\"\n",
"\n",
" # Save the dictionary to a JSON file\n",
" with open(file_path, \"w\") as json_file:\n",
" json.dump(drivers, json_file)\n",
"\n",
" print(f\"Dictionary saved to {file_path}\")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"def session_drivers_list(year: int, event: str | int, session: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" import fastf1\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=True, weather=False, messages=False)\n",
"\n",
" laps = f1session.laps\n",
"\n",
"\n",
" unique_drivers = laps[\"Driver\"].unique()\n",
"\n",
"\n",
" return list(unique_drivers)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '4', '11', '16', '3', '55', '22', '18', '7', '99', '31', '63', '5', '47', '10', '6', '14', '9']\n"
]
},
{
"data": {
"text/plain": [
"['GAS',\n",
" 'PER',\n",
" 'ALO',\n",
" 'LEC',\n",
" 'STR',\n",
" 'TSU',\n",
" 'RIC',\n",
" 'OCO',\n",
" 'VER',\n",
" 'NOR',\n",
" 'HAM',\n",
" 'MSC',\n",
" 'VET',\n",
" 'SAI',\n",
" 'LAT',\n",
" 'RUS',\n",
" 'RAI',\n",
" 'BOT',\n",
" 'MAZ',\n",
" 'GIO']"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"session_drivers_list(YEAR,\"Bahrain Grand Prix\", \"Race\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"def laps_data(year: int, event: str | int, session: str, driver: str) -> any:\n",
" # get drivers available for a given year, event, and session\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
"\n",
" # add team_colors dict to laps on Team column\n",
"\n",
" # for each driver in drivers, get the Team column from laps and get the color from team_colors dict\n",
" drivers_data = []\n",
"\n",
" driver_laps = laps.pick_driver(driver)\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
" # remove rows where LapTime is null\n",
" driver_laps = driver_laps[driver_laps.LapTime.notnull()]\n",
"\n",
" drivers_data = {\n",
" \"time\": driver_laps[\"LapTime\"].tolist(),\n",
" \"lap\": driver_laps[\"LapNumber\"].tolist(),\n",
" \"compound\": driver_laps[\"Compound\"].tolist(),\n",
" }\n",
"\n",
"\n",
"\n",
" return drivers_data\n",
"\n",
"\n",
"# # Example usage:\n",
"# result = laps_data(2018, \"Bahrain\", \"R\", \"GAS\")\n",
"# result"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"# # reversing a pyton list\n",
"# events.reverse()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"events = [\n",
"\n",
"\n",
" 'Saudi Arabian Grand Prix',\n",
" 'Abu Dhabi Grand Prix']"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '16', '11', '10', '4', '22', '31', '99', '3', '7', '14', '63', '55', '6', '5', '18', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Saudi Arabian Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '31', '3', '10', '16', '55', '99', '4', '18', '6', '14', '22', '7', '5', '11', '9', '63', '47']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 1 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 63\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 63)\n",
"core INFO \tFinished loading data for 21 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '89', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 2 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Practice 3 [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['10', '11', '14', '16', '18', '22', '3', '31', '33', '4', '44', '47', '5', '55', '6', '63', '7', '77', '9', '99']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Qualifying [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '4', '11', '55', '77', '16', '22', '31', '3', '14', '10', '18', '99', '5', '6', '63', '7', '47', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"req INFO \tUsing cached data for car_data\n",
"req INFO \tUsing cached data for position_data\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"core INFO \tLoading data for Abu Dhabi Grand Prix - Race [v3.1.6]\n",
"req INFO \tUsing cached data for session_info\n",
"req INFO \tUsing cached data for driver_info\n",
"req INFO \tUsing cached data for session_status_data\n",
"req INFO \tUsing cached data for lap_count\n",
"req INFO \tUsing cached data for track_status_data\n",
"req INFO \tUsing cached data for _extended_timing_data\n",
"req INFO \tUsing cached data for timing_app_data\n",
"core INFO \tProcessing timing data...\n",
"core WARNING \tNo lap data for driver 9\n",
"core WARNING \tFailed to perform lap accuracy check - all laps marked as inaccurate (driver 9)\n",
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '55', '22', '10', '77', '4', '14', '31', '16', '5', '3', '18', '47', '11', '6', '99', '63', '7', '9']\n",
"/tmp/ipykernel_4258/3079518494.py:13: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n"
]
}
],
"source": [
"import os\n",
"import json\n",
"\n",
"# Your list of events\n",
"events_list = events\n",
"\n",
"# Loop through each event\n",
"for event in events_list:\n",
"\n",
" sessions = sessions_available(YEAR, event)\n",
" if event == \"Russian Grand Prix\":\n",
" sessions = [\"Practice 1\", \"Practice 2\", \"Qualifying\", \"Race\"]\n",
" if event == \"Saudi Arabian Grand Prix\":\n",
" sessions = [\"Practice 1\", \"Practice 2\", \"Practice 3\",\"Qualifying\", \"Race\"] # removing 'high spped track test'\n",
"\n",
" # Loop through each session and create a folder within the event folder\n",
" for session in sessions:\n",
" drivers = session_drivers_list(YEAR, event, session)\n",
"\n",
" for driver in drivers:\n",
" # Create a folder for the driver if it doesn't exist\n",
" driver_folder = f\"{event}/{session}/{driver}\"\n",
" if not os.path.exists(driver_folder):\n",
" os.makedirs(driver_folder)\n",
"\n",
" laptimes = laps_data(YEAR, event, session, driver)\n",
"\n",
" # Specify the file path where you want to save the JSON data\n",
" file_path = f\"{driver_folder}/laptimes.json\"\n",
"\n",
" # Save the dictionary to a JSON file\n",
" with open(file_path, \"w\") as json_file:\n",
" json.dump(laptimes, json_file)\n",
"\n",
" # print(f\"Dictionary saved to {file_path}\")\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import concurrent.futures\n",
"import datetime\n",
"import functools\n",
"import math\n",
"import os\n",
"from io import BytesIO\n",
"\n",
"import fastf1\n",
"import numpy as np\n",
"import pandas as pd\n",
"import requests\n",
"import streamlit as st\n",
"from fastapi import Depends, FastAPI\n",
"from fastapi.middleware.cors import CORSMiddleware\n",
"from fastapi.responses import FileResponse, HTMLResponse\n",
"from fastf1.ergast import Ergast\n",
"from pydantic import BaseModel, Field\n",
"from sqlalchemy.orm import Session\n",
"\n",
"from . import accelerations, database, models, utils\n",
"\n",
"# import accelerations\n",
"# import database\n",
"# import models\n",
"# import utils\n",
"FASTF1_CACHE_DIR = os.environ[\"FASTF1_CACHE_DIR\"]\n",
"\n",
"fastf1.Cache.enable_cache(FASTF1_CACHE_DIR)\n",
"\n",
"app = FastAPI()\n",
"\n",
"app.add_middleware(\n",
" CORSMiddleware,\n",
" allow_origins=[\"*\"],\n",
" allow_credentials=True,\n",
" allow_methods=[\"*\"],\n",
" allow_headers=[\"*\"],\n",
")\n",
"\n",
"\n",
"database.Base.metadata.create_all(bind=database.engine)\n",
"\n",
"\n",
"def get_db():\n",
" try:\n",
" db = database.SessionLocal()\n",
" yield db\n",
" finally:\n",
" db.close()\n",
"\n",
"\n",
"class RacePace(BaseModel):\n",
" year: int\n",
" event: str\n",
" session: str\n",
" Driver: str\n",
" LapTime: float\n",
" Diff: float\n",
" Team: str\n",
" fill: str\n",
"\n",
"\n",
"# @functools.cache\n",
"@app.get(\"/racepace/{year}/{event}/{session}\", response_model=None)\n",
"async def average_race_pace(\n",
" year: int, event: str | int, session: str, db: Session = Depends(get_db)\n",
") -> any:\n",
" race_pace_data = (\n",
" db.query(models.RacePace)\n",
" .filter_by(year=year, event=event, session=session)\n",
" .all()\n",
" )\n",
"\n",
" if race_pace_data:\n",
" print(\"Fetching from Database\")\n",
"\n",
" if not race_pace_data:\n",
" print(\"Writing to Database\")\n",
" f1session = fastf1.get_session(\n",
" year,\n",
" event,\n",
" session,\n",
" # backend=\"fastf1\",\n",
" # force_ergast=False,\n",
" )\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
"\n",
" laps = laps.loc[laps.LapNumber > 1]\n",
" laps = laps.pick_track_status(\n",
" \"1\",\n",
" )\n",
" laps[\"LapTime\"] = laps.Sector1Time + laps.Sector2Time + laps.Sector3Time\n",
"\n",
" # convert LapTime to seconds\n",
" laps[\"LapTime\"] = laps[\"LapTime\"].apply(lambda x: x.total_seconds())\n",
"\n",
" laps = laps.loc[laps.LapTime < laps.LapTime.min() * 1.07]\n",
"\n",
" df = (\n",
" laps[[\"LapTime\", \"Driver\"]].groupby(\"Driver\").mean().reset_index(drop=False)\n",
" )\n",
" df = df.sort_values(by=\"LapTime\").reset_index(drop=True)\n",
" df[\"LapTime\"] = df[\"LapTime\"].round(3)\n",
" df[\"Diff\"] = (df[\"LapTime\"] - df[\"LapTime\"].min()).round(3)\n",
" teams = laps[[\"Driver\", \"Team\"]].drop_duplicates().reset_index(drop=True)\n",
" # join teams and df\n",
" df = df.merge(teams, on=\"Driver\", how=\"left\")\n",
"\n",
" car_colors = utils.team_colors(year)\n",
"\n",
" df[\"fill\"] = df[\"Team\"].map(car_colors)\n",
"\n",
" df_json = df.to_dict(\"records\")\n",
"\n",
" # save the data to the database\n",
" for record in df.to_dict(\"records\"):\n",
" race_pace = models.RacePace(**record)\n",
" db.add(race_pace)\n",
"\n",
" db.commit()\n",
"\n",
" return {\"racePace\": df_json}\n",
"\n",
" return {\"racePace\": [dict(race_pace) for race_pace in race_pace_data]}\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/topspeed/{year}/{event}/{session}\", response_model=None)\n",
"async def top_speed(year: int, event: str | int, session: str) -> any:\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
"\n",
" fastest_speedtrap = (\n",
" laps[[\"SpeedI1\", \"SpeedI2\", \"SpeedST\", \"SpeedFL\"]]\n",
" .idxmax(axis=1)\n",
" .value_counts()\n",
" .index[0]\n",
" )\n",
"\n",
" speed_df = (\n",
" laps[[fastest_speedtrap, \"Driver\", \"Compound\", \"Team\"]]\n",
" .groupby(\"Driver\")\n",
" .max()\n",
" .sort_values(fastest_speedtrap, ascending=False)\n",
" .reset_index()\n",
" )\n",
" # add team colors to dataframe\n",
" speed_df[\"fill\"] = speed_df[\"Team\"].apply(lambda x: team_colors[x])\n",
"\n",
" # rename fastest speedtrap column to TopSpeed\n",
" speed_df.rename(columns={fastest_speedtrap: \"TopSpeed\"}, inplace=True)\n",
"\n",
" # remove nan values in any column\n",
" speed_df = speed_df.dropna()\n",
"\n",
" # Convert to int\n",
" speed_df[\"TopSpeed\"] = speed_df[\"TopSpeed\"].astype(int)\n",
"\n",
" speed_dict = speed_df.to_dict(orient=\"records\")\n",
"\n",
" return {\"topSpeed\": speed_dict}\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/overtakes/{year}/{event}\", response_model=None)\n",
"def get_overtakes(year: int, event: str) -> any:\n",
" def get_overtakes_df(year, event):\n",
" if year == 2023:\n",
" url = \"https://docs.google.com/spreadsheets/d/1M4aepPJaIfdqE9oU3L-2CQqKIyubLXG4Q4cqWnyqxp4/export?format=csv\"\n",
" if year == 2022:\n",
" url = \"https://docs.google.com/spreadsheets/d/1cuS3B6hk4iQmMaRQoMTcogIInJpavnV7rKuEsiJnEbU/export?format=csv\"\n",
" if year == 2021:\n",
" url = \"https://docs.google.com/spreadsheets/d/1ANQnPVkefRmvzrmGvEqXoqQ4dBfgcI_R9FPg-0BcM34/export?format=csv\"\n",
" if year == 2020:\n",
" url = \"https://docs.google.com/spreadsheets/d/1eG9WTkXKzFT4NMh-WqHOMs5G0UuPGnb6wP4CnFD8uzY/export?format=csv\"\n",
" if year == 2019:\n",
" url = \"https://docs.google.com/spreadsheets/d/10nHg7BIs5ySh_dE9uuIz2lq-gRWcg02tIMr0EPgPvJs/export?format=csv\"\n",
" if year == 2018:\n",
" url = \"https://docs.google.com/spreadsheets/d/1MyAwQdczccdca_FAIiZKkqZNauNh3ts99JZ278S2OKc/export?format=csv\"\n",
"\n",
" response = requests.get(url, timeout=10)\n",
" df = pd.read_csv(BytesIO(response.content))\n",
" df = df[[\"Driver\", event]]\n",
" # replace NaNs with 0s\n",
" df = df.fillna(0)\n",
" # convert numbers to ints\n",
" df[event] = df[event].astype(int)\n",
" # replace event with \"overtakes\"\n",
" df = df.rename(columns={event: \"overtakes\"})\n",
" return df\n",
"\n",
" def get_overtaken_df(year, event):\n",
" if year == 2023:\n",
" url = \"https://docs.google.com/spreadsheets/d/1wszzx694Ot-mvA5YrFCpy3or37xMgnC0XpE8uNnJLWk/export?format=csv\"\n",
" if year == 2022:\n",
" url = \"https://docs.google.com/spreadsheets/d/19_XFDD3BZDIQVkNE4bG6dwuKvMaO4g5HNaUARGaJwhE/export?format=csv\"\n",
" if year == 2021:\n",
" url = \"https://docs.google.com/spreadsheets/d/1dQBHnd3AXEPNH5I75cjbzAAzi9ipqGk3v9eZT9eYKS4/export?format=csv\"\n",
" if year == 2020:\n",
" url = \"https://docs.google.com/spreadsheets/d/1snyntPMxYH4_KHSRI96AwBoJQrPbX6OanJAcqbYyW-Y/export?format=csv\"\n",
" if year == 2019:\n",
" url = \"https://docs.google.com/spreadsheets/d/11FfFkXErJg7F22iVwJo9XfLFAWucMBVlzL1qUGWxM3s/export?format=csv\"\n",
" if year == 2018:\n",
" url = \"https://docs.google.com/spreadsheets/d/1XJXAEyRpRS_UwLHzEtN2PdIaFJYGWSN6ypYN8Ecwp9A/export?format=csv\"\n",
"\n",
" response = requests.get(url, timeout=10)\n",
" df = pd.read_csv(BytesIO(response.content))\n",
" df = df[[\"Driver\", event]]\n",
" # replace NaNs with 0s\n",
" df = df.fillna(0)\n",
" # convert numbers to ints\n",
" df[event] = df[event].astype(int)\n",
" df = df.rename(columns={event: \"overtaken\"})\n",
" return df\n",
"\n",
" overtakes = get_overtakes_df(year, event)\n",
" overtaken = get_overtaken_df(year, event)\n",
" df = overtakes.merge(overtaken, on=\"Driver\")\n",
"\n",
" # remove drivers with 0 overtakes and 0 overtaken\n",
" df = df[(df[\"overtakes\"] != 0) | (df[\"overtaken\"] != 0)]\n",
"\n",
" # sort in the decreasing order of overtakes\n",
" df = df.sort_values(\n",
" by=[\"overtakes\", \"overtaken\"], ascending=[False, True]\n",
" ).reset_index(drop=True)\n",
" # convert to dictionary\n",
" df_dict = df.to_dict(orient=\"records\")\n",
"\n",
" return {\"overtakes\": df_dict}\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/fastest/{year}/{event}/{session}\", response_model=None)\n",
"async def fastest_lap(year: int, event: str | int, session: str) -> any:\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
"\n",
" drivers = pd.unique(laps[\"Driver\"])\n",
"\n",
" list_fastest_laps = list()\n",
"\n",
" for drv in drivers:\n",
" drvs_fastest_lap = laps.pick_driver(drv).pick_fastest()\n",
" list_fastest_laps.append(drvs_fastest_lap)\n",
"\n",
" df = (\n",
" fastf1.core.Laps(list_fastest_laps)\n",
" .sort_values(by=\"LapTime\")\n",
" .reset_index(drop=True)\n",
" )\n",
"\n",
" pole_lap = df.pick_fastest()\n",
" df[\"Diff\"] = df[\"LapTime\"] - pole_lap[\"LapTime\"]\n",
"\n",
" car_colors = utils.team_colors(year)\n",
"\n",
" df[\"fill\"] = df[\"Team\"].map(car_colors)\n",
"\n",
" # convert timedelta to float and round to 3 decimal places\n",
" df[\"Diff\"] = df[\"Diff\"].dt.total_seconds().round(3)\n",
" df = df[[\"Driver\", \"LapTime\", \"Diff\", \"Team\", \"fill\"]]\n",
"\n",
" # remove nan values in any column\n",
" df = df.dropna()\n",
"\n",
" df_json = df.to_dict(\"records\")\n",
"\n",
" return {\"fastest\": df_json}\n",
"\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@app.get(\"/wdc\", response_model=None)\n",
"async def driver_standings() -> any:\n",
" YEAR = 2023 # datetime.datetime.now().year\n",
" df = pd.DataFrame(\n",
" pd.read_html(f\"https://www.formula1.com/en/results.html/{YEAR}/drivers.html\")[0]\n",
" )\n",
" df = df[[\"Driver\", \"PTS\", \"Car\"]]\n",
" # reverse the order\n",
" df = df.sort_values(by=\"PTS\", ascending=True)\n",
"\n",
" # in Driver column only keep the last 3 characters\n",
" df[\"Driver\"] = df[\"Driver\"].str[:-5]\n",
"\n",
" # add colors to the dataframe\n",
" car_colors = utils.team_colors(YEAR)\n",
" df[\"fill\"] = df[\"Car\"].map(car_colors)\n",
"\n",
" # remove rows where points is 0\n",
" df = df[df[\"PTS\"] != 0]\n",
" df.reset_index(inplace=True, drop=True)\n",
" df.rename(columns={\"PTS\": \"Points\"}, inplace=True)\n",
"\n",
" return {\"WDC\": df.to_dict(\"records\")}\n",
"\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@app.get(\"/\", response_model=None)\n",
"async def root():\n",
" return HTMLResponse(\n",
" content=\"\"\"<iframe src=\"https://tracinginsights-f1-analysis.hf.space\" frameborder=\"0\" style=\"width:100%; height:100%;\" scrolling=\"yes\" allowfullscreen:\"yes\"></iframe>\"\"\",\n",
" status_code=200,\n",
" )\n",
"\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@app.get(\"/years\", response_model=None)\n",
"async def years_available() -> any:\n",
" # make a list from 2018 to current year\n",
" current_year = datetime.datetime.now().year\n",
" years = list(range(2018, current_year + 1))\n",
" # reverse the list to get the latest year first\n",
" years.reverse()\n",
" years = [{\"label\": str(year), \"value\": year} for year in years]\n",
" return {\"years\": years}\n",
"\n",
"\n",
"# format for events {\"events\":[{\"label\":\"Saudi Arabian Grand Prix\",\"value\":2},{\"label\":\"Bahrain Grand Prix\",\"value\":1},{\"label\":\"Pre-Season Testing\",\"value\":\"t1\"}]}\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@app.get(\"/{year}\", response_model=None)\n",
"async def events_available(year: int) -> any:\n",
" # get events available for a given year\n",
" data = utils.LatestData(year)\n",
" events = data.get_events()\n",
" events = [{\"label\": event, \"value\": event} for i, event in enumerate(events)]\n",
" events.reverse()\n",
"\n",
" return {\"events\": events}\n",
"\n",
"\n",
"# format for sessions {\"sessions\":[{\"label\":\"FP1\",\"value\":\"FP1\"},{\"label\":\"FP2\",\"value\":\"FP2\"},{\"label\":\"FP3\",\"value\":\"FP3\"},{\"label\":\"Qualifying\",\"value\":\"Q\"},{\"label\":\"Race\",\"value\":\"R\"}]}\n",
"\n",
"\n",
"# @st.cache_data\n",
"@functools.cache\n",
"@app.get(\"/{year}/{event}\", response_model=None)\n",
"async def sessions_available(year: int, event: str | int) -> any:\n",
" # get sessions available for a given year and event\n",
" data = utils.LatestData(year)\n",
" sessions = data.get_sessions(event)\n",
" sessions = [{\"label\": session, \"value\": session} for session in sessions]\n",
"\n",
" return {\"sessions\": sessions}\n",
"\n",
"\n",
"# format for drivers {\"drivers\":[{\"color\":\"#fff500\",\"label\":\"RIC\",\"value\":\"RIC\"},{\"color\":\"#ff8700\",\"label\":\"NOR\",\"value\":\"NOR\"},{\"color\":\"#c00000\",\"label\":\"VET\",\"value\":\"VET\"},{\"color\":\"#0082fa\",\"label\":\"LAT\",\"value\":\"LAT\"},{\"color\":\"#787878\",\"label\":\"GRO\",\"value\":\"GRO\"},{\"color\":\"#ffffff\",\"label\":\"GAS\",\"value\":\"GAS\"},{\"color\":\"#f596c8\",\"label\":\"STR\",\"value\":\"STR\"},{\"color\":\"#787878\",\"label\":\"MAG\",\"value\":\"MAG\"},{\"color\":\"#0600ef\",\"label\":\"ALB\",\"value\":\"ALB\"},{\"color\":\"#ffffff\",\"label\":\"KVY\",\"value\":\"KVY\"},{\"color\":\"#fff500\",\"label\":\"OCO\",\"value\":\"OCO\"},{\"color\":\"#0600ef\",\"label\":\"VER\",\"value\":\"VER\"},{\"color\":\"#00d2be\",\"label\":\"HAM\",\"value\":\"HAM\"},{\"color\":\"#ff8700\",\"label\":\"SAI\",\"value\":\"SAI\"},{\"color\":\"#00d2be\",\"label\":\"BOT\",\"value\":\"BOT\"},{\"color\":\"#960000\",\"label\":\"GIO\",\"value\":\"GIO\"}]}\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/strategy/{year}/{event}\", response_model=None)\n",
"async def get_strategy(year: int, event: str | int) -> any:\n",
" f1session = fastf1.get_session(year, event, \"R\")\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
"\n",
" drivers_list = pd.unique(laps[\"Driver\"])\n",
"\n",
" drivers = pd.DataFrame(drivers_list, columns=[\"Driver\"])\n",
" drivers[\"FinishOrder\"] = drivers.index + 1\n",
"\n",
" # Get the LapNumber of the first lap of each stint\n",
" first_lap = (\n",
" laps[[\"Driver\", \"Stint\", \"Compound\", \"LapNumber\"]]\n",
" .groupby([\"Driver\", \"Stint\", \"Compound\"])\n",
" .first()\n",
" .reset_index()\n",
" )\n",
" # Add FinishOrder to first_lap\n",
" first_lap = pd.merge(first_lap, drivers, on=\"Driver\")\n",
" # change LapNumber to LapStart\n",
" first_lap = first_lap.rename(columns={\"LapNumber\": \"LapStart\"})\n",
" # reduce the lapstart by 1\n",
" first_lap[\"LapStart\"] = first_lap[\"LapStart\"] - 1\n",
"\n",
" # find the last lap of each stint\n",
" last_lap = (\n",
" laps[[\"Driver\", \"Stint\", \"Compound\", \"LapNumber\"]]\n",
" .groupby([\"Driver\", \"Stint\", \"Compound\"])\n",
" .last()\n",
" .reset_index()\n",
" )\n",
" # change LapNumber to LapEnd\n",
" last_lap = last_lap.rename(columns={\"LapNumber\": \"LapEnd\"})\n",
"\n",
" # combine first_lap and last_lap\n",
" stint_laps = pd.merge(first_lap, last_lap, on=[\"Driver\", \"Stint\", \"Compound\"])\n",
" # to cover for outliers\n",
" stint_laps[\"fill\"] = \"white\"\n",
"\n",
" stint_laps[\"fill\"] = stint_laps[\"Compound\"].map(\n",
" {\n",
" \"SOFT\": \"red\",\n",
" \"MEDIUM\": \"yellow\",\n",
" \"HARD\": \"white\",\n",
" \"INTERMEDIATE\": \"blue\",\n",
" \"WET\": \"green\",\n",
" }\n",
" )\n",
"\n",
" # sort by FinishOrder\n",
" stint_laps = stint_laps.sort_values(by=[\"FinishOrder\"], ascending=[True])\n",
"\n",
" stint_laps_dict = stint_laps.to_dict(\"records\")\n",
"\n",
" return {\"strategy\": stint_laps_dict}\n",
"\n",
"# lap position\n",
"@functools.cache\n",
"@app.get(\"/lapchart/{year}/{event}/{session}\", response_model=None)\n",
"async def lap_chart(\n",
" year: int,\n",
" event: str | int,\n",
" session: str,\n",
") -> any:\n",
" ergast = Ergast()\n",
"\n",
" race_names_df = ergast.get_race_schedule(season=year, result_type=\"pandas\")\n",
" event_number = race_names_df[race_names_df[\"raceName\"] == event][\"round\"].values[0]\n",
" drivers_df = ergast.get_driver_info(\n",
" season=year, round=event_number, result_type=\"pandas\"\n",
" )\n",
" laptimes_df = ergast.get_lap_times(\n",
" season=year, round=event_number, result_type=\"pandas\", limit=2000\n",
" ).content[0]\n",
" laptimes_df = pd.merge(laptimes_df, drivers_df, how=\"left\", on=\"driverId\")\n",
"\n",
" results_df = ergast.get_race_results(\n",
" season=year, round=event_number, result_type=\"pandas\"\n",
" ).content[0]\n",
" results_df = results_df[[\"driverCode\", \"constructorName\"]]\n",
"\n",
" # merge results_df on laptime_df\n",
" laptimes_df = pd.merge(laptimes_df, results_df, how=\"left\", on=\"driverCode\")\n",
"\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors to laptimes_df\n",
" laptimes_df[\"fill\"] = laptimes_df[\"constructorName\"].map(team_colors)\n",
"\n",
" # rename number as x and position as y\n",
" laptimes_df.rename(\n",
" columns={\"number\": \"x\", \"position\": \"y\", \"driverCode\": \"id\"}, inplace=True\n",
" )\n",
"\n",
" lap_chart_data = []\n",
"\n",
" for driver in laptimes_df[\"id\"].unique():\n",
" data = laptimes_df[laptimes_df[\"id\"] == driver]\n",
" fill = data[\"fill\"].values[0]\n",
" data = data[[\"x\", \"y\"]]\n",
" data_dict = data.to_dict(orient=\"records\")\n",
" driver_dict = {\"id\": driver, \"fill\": fill, \"data\": data_dict}\n",
" # add this to all_data\n",
" lap_chart_data.append(driver_dict)\n",
"\n",
" lap_chart_dict = {\"lapChartData\": lap_chart_data}\n",
"\n",
" return lap_chart_dict\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/{year}/{event}/{session}\", response_model=None)\n",
"async def session_drivers(year: int, event: str | int, session: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
"\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors dict to laps on Team column\n",
" laps[\"color\"] = laps[\"Team\"].map(team_colors)\n",
"\n",
" unique_drivers = laps[\"Driver\"].unique()\n",
"\n",
" drivers = [\n",
" {\n",
" \"color\": laps[laps.Driver == driver].color.iloc[0],\n",
" \"label\": driver,\n",
" \"value\": driver,\n",
" }\n",
" for driver in unique_drivers\n",
" ]\n",
"\n",
" return {\"drivers\": drivers}\n",
"\n",
"# select laps similar to select drivers select box\n",
"@functools.cache\n",
"@app.get(\"/laps/{year}/{event}/{session}\", response_model=None)\n",
"async def get_driver_laps_data(year: int, event: str | int, session: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors dict to laps on Team column\n",
" laps[\"color\"] = laps[\"Team\"].map(team_colors)\n",
"\n",
" # combine Driver and LapNumber as a new column\n",
" laps[\"label\"] = (\n",
" laps[\"Driver\"]\n",
" + \"-\"\n",
" + laps[\"LapNumber\"].astype(int).astype(str)\n",
" + \"-\"\n",
" + str(year)\n",
" + \"-\"\n",
" + event\n",
" + \"-\"\n",
" + session\n",
" )\n",
" laps[\"value\"] = (\n",
" laps[\"Driver\"]\n",
" + \"-\"\n",
" + laps[\"LapNumber\"].astype(int).astype(str)\n",
" + \"-\"\n",
" + str(year)\n",
" + \"-\"\n",
" + event\n",
" + \"-\"\n",
" + session\n",
" )\n",
"\n",
" laps = laps[[\"value\", \"label\", \"color\"]]\n",
"\n",
" driver_laps_dict = laps.to_dict(\"records\")\n",
"\n",
" return {\"laps\": driver_laps_dict}\n",
"\n",
"\n",
"# format for chartData {\"chartData\":[{\"lapnumber\":1},{\n",
"# \"VER\":91.564,\n",
"# \"VER_compound\":\"SOFT\",\n",
"# \"VER_compound_color\":\"#FF5733\",\n",
"# \"lapnumber\":2\n",
"# },{\"lapnumber\":3},{\"VER\":90.494,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":4},{\"lapnumber\":5},{\"VER\":90.062,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":6},{\"lapnumber\":7},{\"VER\":89.815,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":8},{\"VER\":105.248,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":9},{\"lapnumber\":10},{\"VER\":89.79,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":11},{\"VER\":145.101,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":12},{\"lapnumber\":13},{\"VER\":89.662,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":14},{\"lapnumber\":15},{\"VER\":89.617,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":16},{\"lapnumber\":17},{\"VER\":140.717,\"VER_compound\":\"SOFT\",\"VER_compound_color\":\"#FF5733\",\"lapnumber\":18}]}\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/{year}/{event}/{session}/{driver}\", response_model=None)\n",
"async def laps_data(year: int, event: str | int, session: str, driver: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors dict to laps on Team column\n",
"\n",
" drivers = laps.Driver.unique()\n",
" # for each driver in drivers, get the Team column from laps and get the color from team_colors dict\n",
" drivers = [\n",
" {\n",
" \"color\": team_colors[laps[laps.Driver == driver].Team.iloc[0]],\n",
" \"label\": driver,\n",
" \"value\": driver,\n",
" }\n",
" for driver in drivers\n",
" ]\n",
"\n",
" driver_laps = laps.pick_driver(driver)\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
" # remove rows where LapTime is null\n",
" driver_laps = driver_laps[driver_laps.LapTime.notnull()]\n",
" compound_colors = {\n",
" \"SOFT\": \"#FF0000\",\n",
" \"MEDIUM\": \"#FFFF00\",\n",
" \"HARD\": \"#FFFFFF\",\n",
" \"INTERMEDIATE\": \"#00FF00\",\n",
" \"WET\": \"#088cd0\",\n",
" }\n",
"\n",
" driver_laps_data = []\n",
"\n",
" for _, row in driver_laps.iterrows():\n",
" if row[\"LapTime\"] > 0:\n",
" lap = {\n",
" f\"{driver}\": row[\"LapTime\"],\n",
" f\"{driver}_compound\": row[\"Compound\"],\n",
" f\"{driver}_compound_color\": compound_colors[row[\"Compound\"]],\n",
" \"lapnumber\": row[\"LapNumber\"],\n",
" }\n",
" else:\n",
" lap = {\"lapnumber\": row[\"LapNumber\"]}\n",
"\n",
" driver_laps_data.append(lap)\n",
"\n",
" return {\"chartData\": driver_laps_data}\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/laptimes/{year}/{event}/{session}/{driver}\", response_model=None)\n",
"async def get_laps_data(year: int, event: str | int, session: str, driver: str) -> any:\n",
" # get drivers available for a given year, event and session\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=False, weather=False, messages=False)\n",
" laps = f1session.laps\n",
" team_colors = utils.team_colors(year)\n",
" # add team_colors dict to laps on Team column\n",
"\n",
" drivers = laps.Driver.unique()\n",
" # for each driver in drivers, get the Team column from laps and get the color from team_colors dict\n",
" drivers = [\n",
" {\n",
" \"color\": team_colors[laps[laps.Driver == driver].Team.iloc[0]],\n",
" \"label\": driver,\n",
" \"value\": driver,\n",
" }\n",
" for driver in drivers\n",
" ]\n",
"\n",
" driver_laps = laps.pick_driver(driver)\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
" driver_laps = driver_laps[[\"Driver\", \"LapTime\", \"LapNumber\", \"Compound\"]]\n",
"\n",
" # remove rows where LapTime is null\n",
" driver_laps = driver_laps[driver_laps.LapTime.notnull()]\n",
"\n",
" driver_laps_dict = driver_laps.to_dict(\"records\")\n",
"\n",
" return {\"chartData\": driver_laps_dict}\n",
"\n",
"\n",
"# @st.cache_data\n",
"\n",
"\n",
"@functools.cache\n",
"@app.get(\"/{year}/{event}/{session}/{driver}/{lap_number}\", response_model=None)\n",
"async def telemetry_data(\n",
" year: int, event: str | int, session: str, driver: str, lap_number: int\n",
") -> any:\n",
" f1session = fastf1.get_session(year, event, session)\n",
" f1session.load(telemetry=True, weather=False, messages=False)\n",
" laps = f1session.laps\n",
"\n",
" driver_laps = laps.pick_driver(driver)\n",
" driver_laps[\"LapTime\"] = driver_laps[\"LapTime\"].dt.total_seconds()\n",
"\n",
" # get the telemetry for lap_number\n",
" selected_lap = driver_laps[driver_laps.LapNumber == lap_number]\n",
"\n",
" telemetry = selected_lap.get_telemetry()\n",
"\n",
" lon_acc, lat_acc = accelerations.compute_accelerations(telemetry)\n",
" telemetry[\"lon_acc\"] = lon_acc\n",
" telemetry[\"lat_acc\"] = lat_acc\n",
"\n",
" telemetry[\"Time\"] = telemetry[\"Time\"].dt.total_seconds()\n",
"\n",
" laptime = selected_lap.LapTime.values[0]\n",
" data_key = f\"{driver} - Lap {int(lap_number)} - {year} {session} [laptime]\"\n",
"\n",
" telemetry[\"DRS\"] = telemetry[\"DRS\"].apply(lambda x: 1 if x in [10, 12, 14] else 0)\n",
"\n",
" brake_tel = []\n",
" drs_tel = []\n",
" gear_tel = []\n",
" rpm_tel = []\n",
" speed_tel = []\n",
" throttle_tel = []\n",
" time_tel = []\n",
" track_map = []\n",
" lon_acc_tel = []\n",
" lat_acc_tel = []\n",
"\n",
" for _, row in telemetry.iterrows():\n",
" brake = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"Brake\"],\n",
" }\n",
" brake_tel.append(brake)\n",
"\n",
" drs = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"DRS\"],\n",
" }\n",
" drs_tel.append(drs)\n",
"\n",
" gear = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"nGear\"],\n",
" }\n",
" gear_tel.append(gear)\n",
"\n",
" rpm = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"RPM\"],\n",
" }\n",
" rpm_tel.append(rpm)\n",
"\n",
" speed = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"Speed\"],\n",
" }\n",
" speed_tel.append(speed)\n",
"\n",
" throttle = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"Throttle\"],\n",
" }\n",
" throttle_tel.append(throttle)\n",
"\n",
" time = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"Time\"],\n",
" }\n",
" time_tel.append(time)\n",
"\n",
" lon_acc = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"lon_acc\"],\n",
" }\n",
" lon_acc_tel.append(lon_acc)\n",
"\n",
" lat_acc = {\n",
" \"x\": row[\"Distance\"],\n",
" \"y\": row[\"lat_acc\"],\n",
" }\n",
" lat_acc_tel.append(lat_acc)\n",
"\n",
" track = {\n",
" \"x\": row[\"X\"],\n",
" \"y\": row[\"Y\"],\n",
" }\n",
" track_map.append(track)\n",
"\n",
" telemetry_data = {\n",
" \"telemetryData\": {\n",
" \"brake\": brake_tel,\n",
" \"dataKey\": data_key,\n",
" \"drs\": drs_tel,\n",
" \"gear\": gear_tel,\n",
" \"rpm\": rpm_tel,\n",
" \"speed\": speed_tel,\n",
" \"throttle\": throttle_tel,\n",
" \"time\": time_tel,\n",
" \"lon_acc\": lon_acc_tel,\n",
" \"lat_acc\": lat_acc_tel,\n",
" \"trackMap\": track_map,\n",
" }\n",
" }\n",
"\n",
" return telemetry_data"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

Xet Storage Details

Size:
371 kB
·
Xet hash:
a27a23fd4ec160f6f6e156264edeeb75c48d5c9a9ce6fc724f5a005c4d3fa96b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.