{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Formula 1 - Predicting the winner of a race\n",
"\n",
"*NOTE: Due to featuretools' memory requirement, this notebook will not run on MyBinder.*\n",
"\n",
"In this notebook we will benchmark getML against featuretools to predict the winner of a Formula 1 race.\n",
"\n",
"Summary:\n",
"\n",
"- Prediction type: __Classification model__\n",
"- Domain: __Sports__\n",
"- Prediction target: __Win__ \n",
"- Population size: __31578__\n",
"\n",
"_Author: Dr. Patrick Urbanke_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Background\n",
"\n",
"We would like to develop a prediction model for Formula 1 races, that would allow us to predict the winner of a race before the race has started.\n",
"\n",
"We use dataset of all Formula 1 races from 1950 to 2017. The dataset includes information such as the time taken in each lap, the time taken for pit stops, the performance in the qualifying rounds etc.\n",
"\n",
"The dataset has been downloaded from the [CTU Prague relational learning repository](https://relational.fit.cvut.cz/dataset/ErgastF1) (Motl and Schulte, 2015).\n",
"\n",
"We will benchmark [getML](https://www.getml.com) 's feature learning algorithms against [featuretools](https://www.featuretools.com), an open-source implementation of the propositionalization algorithm, similar to getML's FastProp."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### A web frontend for getML\n",
"\n",
"The getML monitor is a frontend built to support your work with getML. The getML monitor displays information such as the imported data frames, trained pipelines and allows easy data and feature exploration. You can launch the getML monitor [here](http://localhost:1709)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Where is this running?\n",
"\n",
"Your getML live session is running inside a docker container on [mybinder.org](https://mybinder.org/), a service built by the Jupyter community and funded by Google Cloud, OVH, GESIS Notebooks and the Turing Institute. As it is a free service, this session will shut down after 10 minutes of inactivity."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's get started with the analysis and set up your session:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"Connected to project 'formula1'\n"
]
}
],
"source": [
"import copy\n",
"import os\n",
"from urllib import request\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"from IPython.display import Image\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('seaborn')\n",
"%matplotlib inline \n",
"\n",
"import featuretools\n",
"import getml\n",
"\n",
"getml.engine.set_project('formula1')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Loading data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1 Download from source\n",
"\n",
"We begin by downloading the data:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Connection(conn_id='default',\n",
" dbname='ErgastF1',\n",
" dialect='mysql',\n",
" host='relational.fit.cvut.cz',\n",
" port=3306)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"conn = getml.database.connect_mariadb(\n",
" host=\"relational.fit.cvut.cz\",\n",
" dbname=\"ErgastF1\",\n",
" port=3306,\n",
" user=\"guest\",\n",
" password=\"relational\"\n",
")\n",
"\n",
"conn"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def load_if_needed(name):\n",
" \"\"\"\n",
" Loads the data from the relational learning\n",
" repository, if the data frame has not already\n",
" been loaded.\n",
" \"\"\"\n",
" if not getml.data.exists(name):\n",
" data_frame = getml.data.DataFrame.from_db(\n",
" name=name,\n",
" table_name=name,\n",
" conn=conn\n",
" )\n",
" data_frame.save()\n",
" else:\n",
" data_frame = getml.data.load_data_frame(name)\n",
" return data_frame"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"driverStandings = load_if_needed(\"driverStandings\")\n",
"drivers = load_if_needed(\"drivers\")\n",
"lapTimes = load_if_needed(\"lapTimes\")\n",
"pitStops = load_if_needed(\"pitStops\")\n",
"races = load_if_needed(\"races\")\n",
"qualifying = load_if_needed(\"qualifying\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" driverStandingsId \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" points \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" wins \n",
" \n",
" \n",
" \n",
" positionText \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31573 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68456 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 835 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31574 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68457 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 154 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31575 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68458 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31576 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68459 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31577 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68460 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 814 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 31578 rows x 7 columns \n",
" memory usage: 1.85 MB \n",
" name: driverStandings \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/driverStandings/ \n",
"
\n"
],
"text/plain": [
" name driverStandingsId raceId driverId points position wins positionText \n",
" role unused_float unused_float unused_float unused_float unused_float unused_float unused_string\n",
" 0 1 18 1 10 1 1 1 \n",
" 1 2 18 2 8 2 0 2 \n",
" 2 3 18 3 6 3 0 3 \n",
" 3 4 18 4 5 4 0 4 \n",
" 4 5 18 5 4 5 0 5 \n",
" ... ... ... ... ... ... ... \n",
"31573 68456 982 835 8 16 0 16 \n",
"31574 68457 982 154 26 13 0 13 \n",
"31575 68458 982 836 5 18 0 18 \n",
"31576 68459 982 18 0 22 0 22 \n",
"31577 68460 982 814 0 23 0 23 \n",
"\n",
"\n",
"31578 rows x 7 columns\n",
"memory usage: 1.85 MB\n",
"name: driverStandings\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/driverStandings/"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"driverStandings"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" number \n",
" \n",
" \n",
" \n",
" driverRef \n",
" \n",
" \n",
" \n",
" code \n",
" \n",
" \n",
" \n",
" forename \n",
" \n",
" \n",
" \n",
" surname \n",
" \n",
" \n",
" \n",
" dob \n",
" \n",
" \n",
" \n",
" nationality \n",
" \n",
" \n",
" \n",
" url \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 44 \n",
" \n",
" \n",
" \n",
" \n",
" hamilton \n",
" \n",
" \n",
" \n",
" HAM \n",
" \n",
" \n",
" \n",
" Lewis \n",
" \n",
" \n",
" \n",
" Hamilton \n",
" \n",
" \n",
" \n",
" 1985-01-07 \n",
" \n",
" \n",
" \n",
" British \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Lew... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" heidfeld \n",
" \n",
" \n",
" \n",
" HEI \n",
" \n",
" \n",
" \n",
" Nick \n",
" \n",
" \n",
" \n",
" Heidfeld \n",
" \n",
" \n",
" \n",
" 1977-05-10 \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Nic... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" rosberg \n",
" \n",
" \n",
" \n",
" ROS \n",
" \n",
" \n",
" \n",
" Nico \n",
" \n",
" \n",
" \n",
" Rosberg \n",
" \n",
" \n",
" \n",
" 1985-06-27 \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Nic... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" alonso \n",
" \n",
" \n",
" \n",
" ALO \n",
" \n",
" \n",
" \n",
" Fernando \n",
" \n",
" \n",
" \n",
" Alonso \n",
" \n",
" \n",
" \n",
" 1981-07-29 \n",
" \n",
" \n",
" \n",
" Spanish \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Fer... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" kovalainen \n",
" \n",
" \n",
" \n",
" KOV \n",
" \n",
" \n",
" \n",
" Heikki \n",
" \n",
" \n",
" \n",
" Kovalainen \n",
" \n",
" \n",
" \n",
" 1981-10-19 \n",
" \n",
" \n",
" \n",
" Finnish \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Hei... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 835 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 837 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 88 \n",
" \n",
" \n",
" \n",
" \n",
" haryanto \n",
" \n",
" \n",
" \n",
" HAR \n",
" \n",
" \n",
" \n",
" Rio \n",
" \n",
" \n",
" \n",
" Haryanto \n",
" \n",
" \n",
" \n",
" 1993-01-22 \n",
" \n",
" \n",
" \n",
" Indonesian \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Rio... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 838 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" vandoorne \n",
" \n",
" \n",
" \n",
" VAN \n",
" \n",
" \n",
" \n",
" Stoffel \n",
" \n",
" \n",
" \n",
" Vandoorne \n",
" \n",
" \n",
" \n",
" 1992-03-26 \n",
" \n",
" \n",
" \n",
" Belgian \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Sto... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 837 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" ocon \n",
" \n",
" \n",
" \n",
" OCO \n",
" \n",
" \n",
" \n",
" Esteban \n",
" \n",
" \n",
" \n",
" Ocon \n",
" \n",
" \n",
" \n",
" 1996-09-17 \n",
" \n",
" \n",
" \n",
" French \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Est... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 838 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" stroll \n",
" \n",
" \n",
" \n",
" STR \n",
" \n",
" \n",
" \n",
" Lance \n",
" \n",
" \n",
" \n",
" Stroll \n",
" \n",
" \n",
" \n",
" 1998-10-29 \n",
" \n",
" \n",
" \n",
" Canadian \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Lan... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 36 \n",
" \n",
" \n",
" \n",
" \n",
" giovinazzi \n",
" \n",
" \n",
" \n",
" GIO \n",
" \n",
" \n",
" \n",
" Antonio \n",
" \n",
" \n",
" \n",
" Giovinazzi \n",
" \n",
" \n",
" \n",
" 1993-12-14 \n",
" \n",
" \n",
" \n",
" Italian \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Ant... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 840 rows x 9 columns \n",
" memory usage: 0.14 MB \n",
" name: drivers \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/drivers/ \n",
"
\n"
],
"text/plain": [
"name driverId number driverRef code forename surname dob \n",
"role unused_float unused_float unused_string unused_string unused_string unused_string unused_string\n",
" 0 1 44 hamilton HAM Lewis Hamilton 1985-01-07 \n",
" 1 2 nan heidfeld HEI Nick Heidfeld 1977-05-10 \n",
" 2 3 6 rosberg ROS Nico Rosberg 1985-06-27 \n",
" 3 4 14 alonso ALO Fernando Alonso 1981-07-29 \n",
" 4 5 nan kovalainen KOV Heikki Kovalainen 1981-10-19 \n",
" ... ... ... ... ... ... ... \n",
" 835 837 88 haryanto HAR Rio Haryanto 1993-01-22 \n",
" 836 838 2 vandoorne VAN Stoffel Vandoorne 1992-03-26 \n",
" 837 839 31 ocon OCO Esteban Ocon 1996-09-17 \n",
" 838 840 18 stroll STR Lance Stroll 1998-10-29 \n",
" 839 841 36 giovinazzi GIO Antonio Giovinazzi 1993-12-14 \n",
"\n",
"name nationality url \n",
"role unused_string unused_string \n",
" 0 British http://en.wikipedia.org/wiki/Lew...\n",
" 1 German http://en.wikipedia.org/wiki/Nic...\n",
" 2 German http://en.wikipedia.org/wiki/Nic...\n",
" 3 Spanish http://en.wikipedia.org/wiki/Fer...\n",
" 4 Finnish http://en.wikipedia.org/wiki/Hei...\n",
" ... ... \n",
" 835 Indonesian http://en.wikipedia.org/wiki/Rio...\n",
" 836 Belgian http://en.wikipedia.org/wiki/Sto...\n",
" 837 French http://en.wikipedia.org/wiki/Est...\n",
" 838 Canadian http://en.wikipedia.org/wiki/Lan...\n",
" 839 Italian http://en.wikipedia.org/wiki/Ant...\n",
"\n",
"\n",
"840 rows x 9 columns\n",
"memory usage: 0.14 MB\n",
"name: drivers\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/drivers/"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drivers"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 109088 \n",
" \n",
" \n",
" \n",
" \n",
" 1:49.088 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 12 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 93740 \n",
" \n",
" \n",
" \n",
" \n",
" 1:33.740 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91600 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.600 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91067 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 92129 \n",
" \n",
" \n",
" \n",
" \n",
" 1:32.129 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420364 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 54 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107528 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.528 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420365 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 55 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107512 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.512 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420366 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 56 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108143 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.143 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420367 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 57 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107848 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420368 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 58 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108699 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.699 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 420369 rows x 6 columns \n",
" memory usage: 23.96 MB \n",
" name: lapTimes \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/lapTimes/ \n",
"
\n"
],
"text/plain": [
" name raceId driverId lap position milliseconds time \n",
" role unused_float unused_float unused_float unused_float unused_float unused_string\n",
" 0 1 1 1 13 109088 1:49.088 \n",
" 1 1 1 2 12 93740 1:33.740 \n",
" 2 1 1 3 11 91600 1:31.600 \n",
" 3 1 1 4 10 91067 1:31.067 \n",
" 4 1 1 5 10 92129 1:32.129 \n",
" ... ... ... ... ... ... \n",
"420364 982 840 54 8 107528 1:47.528 \n",
"420365 982 840 55 8 107512 1:47.512 \n",
"420366 982 840 56 8 108143 1:48.143 \n",
"420367 982 840 57 8 107848 1:47.848 \n",
"420368 982 840 58 8 108699 1:48.699 \n",
"\n",
"\n",
"420369 rows x 6 columns\n",
"memory usage: 23.96 MB\n",
"name: lapTimes\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/lapTimes/"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lapTimes"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" stop \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" duration \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23227 \n",
" \n",
" \n",
" \n",
" \n",
" 17:28:24 \n",
" \n",
" \n",
" \n",
" 23.227 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 36 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23199 \n",
" \n",
" \n",
" \n",
" \n",
" 17:59:29 \n",
" \n",
" \n",
" \n",
" 23.199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22994 \n",
" \n",
" \n",
" \n",
" \n",
" 17:27:41 \n",
" \n",
" \n",
" \n",
" 22.994 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25098 \n",
" \n",
" \n",
" \n",
" \n",
" 17:51:32 \n",
" \n",
" \n",
" \n",
" 25.098 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23716 \n",
" \n",
" \n",
" \n",
" \n",
" 17:29:00 \n",
" \n",
" \n",
" \n",
" 23.716 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6065 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 38 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29134 \n",
" \n",
" \n",
" \n",
" \n",
" 21:29:07 \n",
" \n",
" \n",
" \n",
" 29.134 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6066 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 37403 \n",
" \n",
" \n",
" \n",
" \n",
" 20:06:43 \n",
" \n",
" \n",
" \n",
" 37.403 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29294 \n",
" \n",
" \n",
" \n",
" \n",
" 20:10:07 \n",
" \n",
" \n",
" \n",
" 29.294 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6068 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25584 \n",
" \n",
" \n",
" \n",
" \n",
" 20:13:16 \n",
" \n",
" \n",
" \n",
" 25.584 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6069 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29412 \n",
" \n",
" \n",
" \n",
" \n",
" 21:05:07 \n",
" \n",
" \n",
" \n",
" 29.412 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 6070 rows x 7 columns \n",
" memory usage: 0.44 MB \n",
" name: pitStops \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/pitStops/ \n",
"
\n"
],
"text/plain": [
"name raceId driverId stop lap milliseconds time duration \n",
"role unused_float unused_float unused_float unused_float unused_float unused_string unused_string\n",
" 0 841 1 1 16 23227 17:28:24 23.227 \n",
" 1 841 1 2 36 23199 17:59:29 23.199 \n",
" 2 841 2 1 15 22994 17:27:41 22.994 \n",
" 3 841 2 2 30 25098 17:51:32 25.098 \n",
" 4 841 3 1 16 23716 17:29:00 23.716 \n",
" ... ... ... ... ... ... ... \n",
"6065 982 839 6 38 29134 21:29:07 29.134 \n",
"6066 982 840 1 1 37403 20:06:43 37.403 \n",
"6067 982 840 2 2 29294 20:10:07 29.294 \n",
"6068 982 840 3 3 25584 20:13:16 25.584 \n",
"6069 982 840 4 26 29412 21:05:07 29.412 \n",
"\n",
"\n",
"6070 rows x 7 columns\n",
"memory usage: 0.44 MB\n",
"name: pitStops\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/pitStops/"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pitStops"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" round \n",
" \n",
" \n",
" \n",
" circuitId \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" url \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" Australian Grand Prix \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 06:00:00 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/200... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" Malaysian Grand Prix \n",
" \n",
" \n",
" \n",
" 2009-04-05 \n",
" \n",
" \n",
" \n",
" 09:00:00 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/200... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" Chinese Grand Prix \n",
" \n",
" \n",
" \n",
" 2009-04-19 \n",
" \n",
" \n",
" \n",
" 07:00:00 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/200... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" Bahrain Grand Prix \n",
" \n",
" \n",
" \n",
" 2009-04-26 \n",
" \n",
" \n",
" \n",
" 12:00:00 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/200... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" Spanish Grand Prix \n",
" \n",
" \n",
" \n",
" 2009-05-10 \n",
" \n",
" \n",
" \n",
" 12:00:00 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/200... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 971 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 984 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" Japanese Grand Prix \n",
" \n",
" \n",
" \n",
" 2017-10-08 \n",
" \n",
" \n",
" \n",
" 05:00:00 \n",
" \n",
" \n",
" \n",
" https://en.wikipedia.org/wiki/20... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 972 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 985 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 69 \n",
" \n",
" \n",
" \n",
" \n",
" United States Grand Prix \n",
" \n",
" \n",
" \n",
" 2017-10-22 \n",
" \n",
" \n",
" \n",
" 19:00:00 \n",
" \n",
" \n",
" \n",
" https://en.wikipedia.org/wiki/20... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 973 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 986 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 32 \n",
" \n",
" \n",
" \n",
" \n",
" Mexican Grand Prix \n",
" \n",
" \n",
" \n",
" 2017-10-29 \n",
" \n",
" \n",
" \n",
" 19:00:00 \n",
" \n",
" \n",
" \n",
" https://en.wikipedia.org/wiki/20... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 974 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 987 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" Brazilian Grand Prix \n",
" \n",
" \n",
" \n",
" 2017-11-12 \n",
" \n",
" \n",
" \n",
" 16:00:00 \n",
" \n",
" \n",
" \n",
" https://en.wikipedia.org/wiki/20... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 975 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 988 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" Abu Dhabi Grand Prix \n",
" \n",
" \n",
" \n",
" 2017-11-26 \n",
" \n",
" \n",
" \n",
" 17:00:00 \n",
" \n",
" \n",
" \n",
" https://en.wikipedia.org/wiki/20... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 976 rows x 8 columns \n",
" memory usage: 0.15 MB \n",
" name: races \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/races/ \n",
"
\n"
],
"text/plain": [
"name raceId year round circuitId name date time \n",
"role unused_float unused_float unused_float unused_float unused_string unused_string unused_string\n",
" 0 1 2009 1 1 Australian Grand Prix 2009-03-29 06:00:00 \n",
" 1 2 2009 2 2 Malaysian Grand Prix 2009-04-05 09:00:00 \n",
" 2 3 2009 3 17 Chinese Grand Prix 2009-04-19 07:00:00 \n",
" 3 4 2009 4 3 Bahrain Grand Prix 2009-04-26 12:00:00 \n",
" 4 5 2009 5 4 Spanish Grand Prix 2009-05-10 12:00:00 \n",
" ... ... ... ... ... ... ... \n",
" 971 984 2017 16 22 Japanese Grand Prix 2017-10-08 05:00:00 \n",
" 972 985 2017 17 69 United States Grand Prix 2017-10-22 19:00:00 \n",
" 973 986 2017 18 32 Mexican Grand Prix 2017-10-29 19:00:00 \n",
" 974 987 2017 19 18 Brazilian Grand Prix 2017-11-12 16:00:00 \n",
" 975 988 2017 20 24 Abu Dhabi Grand Prix 2017-11-26 17:00:00 \n",
"\n",
"name url \n",
"role unused_string \n",
" 0 http://en.wikipedia.org/wiki/200...\n",
" 1 http://en.wikipedia.org/wiki/200...\n",
" 2 http://en.wikipedia.org/wiki/200...\n",
" 3 http://en.wikipedia.org/wiki/200...\n",
" 4 http://en.wikipedia.org/wiki/200...\n",
" ... \n",
" 971 https://en.wikipedia.org/wiki/20...\n",
" 972 https://en.wikipedia.org/wiki/20...\n",
" 973 https://en.wikipedia.org/wiki/20...\n",
" 974 https://en.wikipedia.org/wiki/20...\n",
" 975 https://en.wikipedia.org/wiki/20...\n",
"\n",
"\n",
"976 rows x 8 columns\n",
"memory usage: 0.15 MB\n",
"name: races\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/races/"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"races"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" qualifyId \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" constructorId \n",
" \n",
" \n",
" \n",
" number \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" q1 \n",
" \n",
" \n",
" \n",
" q2 \n",
" \n",
" \n",
" \n",
" q3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1:26.572 \n",
" \n",
" \n",
" \n",
" 1:25.187 \n",
" \n",
" \n",
" \n",
" 1:26.714 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 1:26.103 \n",
" \n",
" \n",
" \n",
" 1:25.315 \n",
" \n",
" \n",
" \n",
" 1:26.869 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.664 \n",
" \n",
" \n",
" \n",
" 1:25.452 \n",
" \n",
" \n",
" \n",
" 1:27.079 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.994 \n",
" \n",
" \n",
" \n",
" 1:25.691 \n",
" \n",
" \n",
" \n",
" 1:27.178 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.960 \n",
" \n",
" \n",
" \n",
" 1:25.518 \n",
" \n",
" \n",
" \n",
" 1:27.236 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7392 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7415 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 825 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 210 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" 1:43.756 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7393 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7416 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" 1:44.014 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7394 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7417 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" 1:44.728 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7395 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7418 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 94 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" 1:45.059 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7396 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7419 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 828 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" 1:45.570 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 7397 rows x 9 columns \n",
" memory usage: 0.70 MB \n",
" name: qualifying \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/qualifying/ \n",
"
\n"
],
"text/plain": [
"name qualifyId raceId driverId constructorId number position q1 \n",
"role unused_float unused_float unused_float unused_float unused_float unused_float unused_string\n",
" 0 1 18 1 1 22 1 1:26.572 \n",
" 1 2 18 9 2 4 2 1:26.103 \n",
" 2 3 18 5 1 23 3 1:25.664 \n",
" 3 4 18 13 6 2 4 1:25.994 \n",
" 4 5 18 2 2 3 5 1:25.960 \n",
" ... ... ... ... ... ... ... \n",
"7392 7415 982 825 210 20 16 1:43.756 \n",
"7393 7416 982 13 3 19 17 1:44.014 \n",
"7394 7417 982 840 3 18 18 1:44.728 \n",
"7395 7418 982 836 15 94 19 1:45.059 \n",
"7396 7419 982 828 15 9 20 1:45.570 \n",
"\n",
"name q2 q3 \n",
"role unused_string unused_string\n",
" 0 1:25.187 1:26.714 \n",
" 1 1:25.315 1:26.869 \n",
" 2 1:25.452 1:27.079 \n",
" 3 1:25.691 1:27.178 \n",
" 4 1:25.518 1:27.236 \n",
" ... ... \n",
"7392 NULL NULL \n",
"7393 NULL NULL \n",
"7394 NULL NULL \n",
"7395 NULL NULL \n",
"7396 NULL NULL \n",
"\n",
"\n",
"7397 rows x 9 columns\n",
"memory usage: 0.70 MB\n",
"name: qualifying\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/qualifying/"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qualifying"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2 Prepare data for getML"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" raceId \n",
" year \n",
" round \n",
" circuitId \n",
" name \n",
" date \n",
" time \n",
" url \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1.0 \n",
" 2009.0 \n",
" 1.0 \n",
" 1.0 \n",
" Australian Grand Prix \n",
" 2009-03-29 \n",
" 06:00:00 \n",
" http://en.wikipedia.org/wiki/2009_Australian_G... \n",
" \n",
" \n",
" 1 \n",
" 2.0 \n",
" 2009.0 \n",
" 2.0 \n",
" 2.0 \n",
" Malaysian Grand Prix \n",
" 2009-04-05 \n",
" 09:00:00 \n",
" http://en.wikipedia.org/wiki/2009_Malaysian_Gr... \n",
" \n",
" \n",
" 2 \n",
" 3.0 \n",
" 2009.0 \n",
" 3.0 \n",
" 17.0 \n",
" Chinese Grand Prix \n",
" 2009-04-19 \n",
" 07:00:00 \n",
" http://en.wikipedia.org/wiki/2009_Chinese_Gran... \n",
" \n",
" \n",
" 3 \n",
" 4.0 \n",
" 2009.0 \n",
" 4.0 \n",
" 3.0 \n",
" Bahrain Grand Prix \n",
" 2009-04-26 \n",
" 12:00:00 \n",
" http://en.wikipedia.org/wiki/2009_Bahrain_Gran... \n",
" \n",
" \n",
" 4 \n",
" 5.0 \n",
" 2009.0 \n",
" 5.0 \n",
" 4.0 \n",
" Spanish Grand Prix \n",
" 2009-05-10 \n",
" 12:00:00 \n",
" http://en.wikipedia.org/wiki/2009_Spanish_Gran... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 971 \n",
" 984.0 \n",
" 2017.0 \n",
" 16.0 \n",
" 22.0 \n",
" Japanese Grand Prix \n",
" 2017-10-08 \n",
" 05:00:00 \n",
" https://en.wikipedia.org/wiki/2017_Japanese_Gr... \n",
" \n",
" \n",
" 972 \n",
" 985.0 \n",
" 2017.0 \n",
" 17.0 \n",
" 69.0 \n",
" United States Grand Prix \n",
" 2017-10-22 \n",
" 19:00:00 \n",
" https://en.wikipedia.org/wiki/2017_United_Stat... \n",
" \n",
" \n",
" 973 \n",
" 986.0 \n",
" 2017.0 \n",
" 18.0 \n",
" 32.0 \n",
" Mexican Grand Prix \n",
" 2017-10-29 \n",
" 19:00:00 \n",
" https://en.wikipedia.org/wiki/2017_Mexican_Gra... \n",
" \n",
" \n",
" 974 \n",
" 987.0 \n",
" 2017.0 \n",
" 19.0 \n",
" 18.0 \n",
" Brazilian Grand Prix \n",
" 2017-11-12 \n",
" 16:00:00 \n",
" https://en.wikipedia.org/wiki/2017_Brazilian_G... \n",
" \n",
" \n",
" 975 \n",
" 988.0 \n",
" 2017.0 \n",
" 20.0 \n",
" 24.0 \n",
" Abu Dhabi Grand Prix \n",
" 2017-11-26 \n",
" 17:00:00 \n",
" https://en.wikipedia.org/wiki/2017_Abu_Dhabi_G... \n",
" \n",
" \n",
"
\n",
"
976 rows × 8 columns
\n",
"
"
],
"text/plain": [
" raceId year round circuitId name date \\\n",
"0 1.0 2009.0 1.0 1.0 Australian Grand Prix 2009-03-29 \n",
"1 2.0 2009.0 2.0 2.0 Malaysian Grand Prix 2009-04-05 \n",
"2 3.0 2009.0 3.0 17.0 Chinese Grand Prix 2009-04-19 \n",
"3 4.0 2009.0 4.0 3.0 Bahrain Grand Prix 2009-04-26 \n",
"4 5.0 2009.0 5.0 4.0 Spanish Grand Prix 2009-05-10 \n",
".. ... ... ... ... ... ... \n",
"971 984.0 2017.0 16.0 22.0 Japanese Grand Prix 2017-10-08 \n",
"972 985.0 2017.0 17.0 69.0 United States Grand Prix 2017-10-22 \n",
"973 986.0 2017.0 18.0 32.0 Mexican Grand Prix 2017-10-29 \n",
"974 987.0 2017.0 19.0 18.0 Brazilian Grand Prix 2017-11-12 \n",
"975 988.0 2017.0 20.0 24.0 Abu Dhabi Grand Prix 2017-11-26 \n",
"\n",
" time url \n",
"0 06:00:00 http://en.wikipedia.org/wiki/2009_Australian_G... \n",
"1 09:00:00 http://en.wikipedia.org/wiki/2009_Malaysian_Gr... \n",
"2 07:00:00 http://en.wikipedia.org/wiki/2009_Chinese_Gran... \n",
"3 12:00:00 http://en.wikipedia.org/wiki/2009_Bahrain_Gran... \n",
"4 12:00:00 http://en.wikipedia.org/wiki/2009_Spanish_Gran... \n",
".. ... ... \n",
"971 05:00:00 https://en.wikipedia.org/wiki/2017_Japanese_Gr... \n",
"972 19:00:00 https://en.wikipedia.org/wiki/2017_United_Stat... \n",
"973 19:00:00 https://en.wikipedia.org/wiki/2017_Mexican_Gra... \n",
"974 16:00:00 https://en.wikipedia.org/wiki/2017_Brazilian_G... \n",
"975 17:00:00 https://en.wikipedia.org/wiki/2017_Abu_Dhabi_G... \n",
"\n",
"[976 rows x 8 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"racesPd = races.to_pandas()\n",
"racesPd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We actually need some set-up, because the target variable is not readily available. The `wins` column in `driverStandings` is actually the accumulated number of wins over a year, but what we want is a boolean variable indicated whether someone has one a particular race or not."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" driverStandingsId \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" points \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" wins \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" round \n",
" \n",
" \n",
" \n",
" win \n",
" \n",
" \n",
" \n",
" positionText \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31573 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68456 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 835 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31574 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68457 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 154 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31575 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68458 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31576 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68459 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31577 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68460 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 814 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 31578 rows x 11 columns \n",
" memory usage: 3.21 MB \n",
" name: driver_standings \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/driver_standings/ \n",
"
\n"
],
"text/plain": [
" name driverStandingsId raceId driverId points ... year round win\n",
" role unused_float unused_float unused_float unused_float ... unused_float unused_float unused_float\n",
" 0 1 18 1 10 ... 2008 1 1\n",
" 1 2 18 2 8 ... 2008 1 0\n",
" 2 3 18 3 6 ... 2008 1 0\n",
" 3 4 18 4 5 ... 2008 1 0\n",
" 4 5 18 5 4 ... 2008 1 0\n",
" ... ... ... ... ... ... ...\n",
"31573 68456 982 835 8 ... 2017 14 0\n",
"31574 68457 982 154 26 ... 2017 14 0\n",
"31575 68458 982 836 5 ... 2017 14 0\n",
"31576 68459 982 18 0 ... 2017 14 0\n",
"31577 68460 982 814 0 ... 2017 14 0\n",
"\n",
" name positionText date \n",
" role unused_string unused_string\n",
" 0 1 2008-03-16 \n",
" 1 2 2008-03-16 \n",
" 2 3 2008-03-16 \n",
" 3 4 2008-03-16 \n",
" 4 5 2008-03-16 \n",
" ... ... \n",
"31573 16 2017-09-17 \n",
"31574 13 2017-09-17 \n",
"31575 18 2017-09-17 \n",
"31576 22 2017-09-17 \n",
"31577 23 2017-09-17 \n",
"\n",
"\n",
"31578 rows x 11 columns\n",
"memory usage: 3.21 MB\n",
"name: driver_standings\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/driver_standings/"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"driverStandingsPd = driverStandings.to_pandas()\n",
"\n",
"driverStandingsPd = driverStandingsPd.merge(\n",
" racesPd[[\"raceId\", \"year\", \"date\", \"round\"]],\n",
" on=\"raceId\"\n",
")\n",
"\n",
"previousStanding = driverStandingsPd.merge(\n",
" driverStandingsPd[[\"driverId\", \"year\", \"wins\", \"round\"]],\n",
" on=[\"driverId\", \"year\"],\n",
")\n",
"\n",
"isPreviousRound = (previousStanding[\"round_x\"] - previousStanding[\"round_y\"] == 1.0)\n",
"\n",
"previousStanding = previousStanding[isPreviousRound]\n",
"\n",
"previousStanding[\"win\"] = previousStanding[\"wins_x\"] - previousStanding[\"wins_y\"]\n",
"\n",
"driverStandingsPd = driverStandingsPd.merge(\n",
" previousStanding[[\"raceId\", \"driverId\", \"win\"]],\n",
" on=[\"raceId\", \"driverId\"],\n",
" how=\"left\",\n",
")\n",
"\n",
"driverStandingsPd[\"win\"] = [win if win == win else wins for win, wins in zip(driverStandingsPd[\"win\"], driverStandingsPd[\"wins\"])]\n",
"\n",
"driver_standings = getml.data.DataFrame.from_pandas(driverStandingsPd, \"driver_standings\")\n",
"\n",
"driver_standings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We also need to include the date of the race to `lapTimes` and `pitStops`, because we cannot use this data for the race we would like to predict. We can only take lap times and pit stops from previous races."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 109088 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" 1:49.088 \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 12 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 93740 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" 1:33.740 \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91600 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.600 \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.067 \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 92129 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" 1:32.129 \n",
" \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420364 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 54 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107528 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.528 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420365 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 55 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107512 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.512 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420366 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 56 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108143 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.143 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420367 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 57 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.848 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420368 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 58 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108699 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.699 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 420369 rows x 8 columns \n",
" memory usage: 35.31 MB \n",
" name: lap_times \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/lap_times/ \n",
"
\n"
],
"text/plain": [
" name raceId driverId lap position milliseconds year time \n",
" role unused_float unused_float unused_float unused_float unused_float unused_float unused_string\n",
" 0 1 1 1 13 109088 2009 1:49.088 \n",
" 1 1 1 2 12 93740 2009 1:33.740 \n",
" 2 1 1 3 11 91600 2009 1:31.600 \n",
" 3 1 1 4 10 91067 2009 1:31.067 \n",
" 4 1 1 5 10 92129 2009 1:32.129 \n",
" ... ... ... ... ... ... ... \n",
"420364 982 840 54 8 107528 2017 1:47.528 \n",
"420365 982 840 55 8 107512 2017 1:47.512 \n",
"420366 982 840 56 8 108143 2017 1:48.143 \n",
"420367 982 840 57 8 107848 2017 1:47.848 \n",
"420368 982 840 58 8 108699 2017 1:48.699 \n",
"\n",
" name date \n",
" role unused_string\n",
" 0 2009-03-29 \n",
" 1 2009-03-29 \n",
" 2 2009-03-29 \n",
" 3 2009-03-29 \n",
" 4 2009-03-29 \n",
" ... \n",
"420364 2017-09-17 \n",
"420365 2017-09-17 \n",
"420366 2017-09-17 \n",
"420367 2017-09-17 \n",
"420368 2017-09-17 \n",
"\n",
"\n",
"420369 rows x 8 columns\n",
"memory usage: 35.31 MB\n",
"name: lap_times\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/lap_times/"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lapTimesPd = lapTimes.to_pandas()\n",
"\n",
"lapTimesPd = lapTimesPd.merge(\n",
" racesPd[[\"raceId\", \"date\", \"year\"]],\n",
" on=\"raceId\"\n",
")\n",
"\n",
"lap_times = getml.data.DataFrame.from_pandas(lapTimesPd, \"lap_times\")\n",
"\n",
"lap_times"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" stop \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" duration \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23227 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" 17:28:24 \n",
" \n",
" \n",
" \n",
" 23.227 \n",
" \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 36 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" 17:59:29 \n",
" \n",
" \n",
" \n",
" 23.199 \n",
" \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22994 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" 17:27:41 \n",
" \n",
" \n",
" \n",
" 22.994 \n",
" \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25098 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" 17:51:32 \n",
" \n",
" \n",
" \n",
" 25.098 \n",
" \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23716 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" 17:29:00 \n",
" \n",
" \n",
" \n",
" 23.716 \n",
" \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6065 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 38 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29134 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 21:29:07 \n",
" \n",
" \n",
" \n",
" 29.134 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6066 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 37403 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 20:06:43 \n",
" \n",
" \n",
" \n",
" 37.403 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29294 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 20:10:07 \n",
" \n",
" \n",
" \n",
" 29.294 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6068 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25584 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 20:13:16 \n",
" \n",
" \n",
" \n",
" 25.584 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6069 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29412 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" 21:05:07 \n",
" \n",
" \n",
" \n",
" 29.412 \n",
" \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 6070 rows x 9 columns \n",
" memory usage: 0.60 MB \n",
" name: pit_stops \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/pit_stops/ \n",
"
\n"
],
"text/plain": [
"name raceId driverId stop lap milliseconds year time duration \n",
"role unused_float unused_float unused_float unused_float unused_float unused_float unused_string unused_string\n",
" 0 841 1 1 16 23227 2011 17:28:24 23.227 \n",
" 1 841 1 2 36 23199 2011 17:59:29 23.199 \n",
" 2 841 2 1 15 22994 2011 17:27:41 22.994 \n",
" 3 841 2 2 30 25098 2011 17:51:32 25.098 \n",
" 4 841 3 1 16 23716 2011 17:29:00 23.716 \n",
" ... ... ... ... ... ... ... ... \n",
"6065 982 839 6 38 29134 2017 21:29:07 29.134 \n",
"6066 982 840 1 1 37403 2017 20:06:43 37.403 \n",
"6067 982 840 2 2 29294 2017 20:10:07 29.294 \n",
"6068 982 840 3 3 25584 2017 20:13:16 25.584 \n",
"6069 982 840 4 26 29412 2017 21:05:07 29.412 \n",
"\n",
"name date \n",
"role unused_string\n",
" 0 2011-03-27 \n",
" 1 2011-03-27 \n",
" 2 2011-03-27 \n",
" 3 2011-03-27 \n",
" 4 2011-03-27 \n",
" ... \n",
"6065 2017-09-17 \n",
"6066 2017-09-17 \n",
"6067 2017-09-17 \n",
"6068 2017-09-17 \n",
"6069 2017-09-17 \n",
"\n",
"\n",
"6070 rows x 9 columns\n",
"memory usage: 0.60 MB\n",
"name: pit_stops\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/pit_stops/"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pitStopsPd = pitStops.to_pandas()\n",
"\n",
"pitStopsPd = pitStopsPd.merge(\n",
" racesPd[[\"raceId\", \"date\", \"year\"]],\n",
" on=\"raceId\"\n",
")\n",
"\n",
"pit_stops = getml.data.DataFrame.from_pandas(pitStopsPd, \"pit_stops\")\n",
"\n",
"pit_stops"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"getML requires that we define *roles* for each of the columns."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" win \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" driverStandingsId \n",
" \n",
" \n",
" \n",
" points \n",
" \n",
" \n",
" \n",
" wins \n",
" \n",
" \n",
" \n",
" round \n",
" \n",
" \n",
" \n",
" positionText \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" 2008-03-16 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31573 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 835 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68456 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31574 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 154 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68457 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31575 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68458 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31576 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68459 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31577 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 814 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68460 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 31578 rows x 11 columns \n",
" memory usage: 2.49 MB \n",
" name: driver_standings \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/driver_standings/ \n",
"
\n"
],
"text/plain": [
" name date raceId driverId year ... driverStandingsId points wins\n",
" role time_stamp join_key join_key join_key ... unused_float unused_float unused_float\n",
" unit time stamp, comparison only ... \n",
" 0 2008-03-16 18 1 2008 ... 1 10 1\n",
" 1 2008-03-16 18 2 2008 ... 2 8 0\n",
" 2 2008-03-16 18 3 2008 ... 3 6 0\n",
" 3 2008-03-16 18 4 2008 ... 4 5 0\n",
" 4 2008-03-16 18 5 2008 ... 5 4 0\n",
" ... ... ... ... ... ... ...\n",
"31573 2017-09-17 982 835 2017 ... 68456 8 0\n",
"31574 2017-09-17 982 154 2017 ... 68457 26 0\n",
"31575 2017-09-17 982 836 2017 ... 68458 5 0\n",
"31576 2017-09-17 982 18 2017 ... 68459 0 0\n",
"31577 2017-09-17 982 814 2017 ... 68460 0 0\n",
"\n",
" name round positionText \n",
" role unused_float unused_string\n",
" unit \n",
" 0 1 1 \n",
" 1 1 2 \n",
" 2 1 3 \n",
" 3 1 4 \n",
" 4 1 5 \n",
" ... ... \n",
"31573 14 16 \n",
"31574 14 13 \n",
"31575 14 18 \n",
"31576 14 22 \n",
"31577 14 23 \n",
"\n",
"\n",
"31578 rows x 11 columns\n",
"memory usage: 2.49 MB\n",
"name: driver_standings\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/driver_standings/"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"driver_standings.set_role(\"win\", getml.data.roles.target)\n",
"driver_standings.set_role([\"raceId\", \"driverId\", \"year\"], getml.data.roles.join_key)\n",
"driver_standings.set_role(\"position\", getml.data.roles.numerical)\n",
"driver_standings.set_role(\"date\", getml.data.roles.time_stamp)\n",
"\n",
"driver_standings"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" nationality \n",
" \n",
" \n",
" \n",
" driverRef \n",
" \n",
" \n",
" \n",
" number \n",
" \n",
" \n",
" \n",
" code \n",
" \n",
" \n",
" \n",
" forename \n",
" \n",
" \n",
" \n",
" surname \n",
" \n",
" \n",
" \n",
" dob \n",
" \n",
" \n",
" \n",
" url \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" British \n",
" \n",
" \n",
" \n",
" hamilton \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 44 \n",
" \n",
" \n",
" \n",
" \n",
" HAM \n",
" \n",
" \n",
" \n",
" Lewis \n",
" \n",
" \n",
" \n",
" Hamilton \n",
" \n",
" \n",
" \n",
" 1985-01-07 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Lew... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" heidfeld \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" HEI \n",
" \n",
" \n",
" \n",
" Nick \n",
" \n",
" \n",
" \n",
" Heidfeld \n",
" \n",
" \n",
" \n",
" 1977-05-10 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Nic... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" rosberg \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" ROS \n",
" \n",
" \n",
" \n",
" Nico \n",
" \n",
" \n",
" \n",
" Rosberg \n",
" \n",
" \n",
" \n",
" 1985-06-27 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Nic... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" Spanish \n",
" \n",
" \n",
" \n",
" alonso \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" ALO \n",
" \n",
" \n",
" \n",
" Fernando \n",
" \n",
" \n",
" \n",
" Alonso \n",
" \n",
" \n",
" \n",
" 1981-07-29 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Fer... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" Finnish \n",
" \n",
" \n",
" \n",
" kovalainen \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" KOV \n",
" \n",
" \n",
" \n",
" Heikki \n",
" \n",
" \n",
" \n",
" Kovalainen \n",
" \n",
" \n",
" \n",
" 1981-10-19 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Hei... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 835 \n",
" \n",
" \n",
" 837 \n",
" \n",
" \n",
" \n",
" Indonesian \n",
" \n",
" \n",
" \n",
" haryanto \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 88 \n",
" \n",
" \n",
" \n",
" \n",
" HAR \n",
" \n",
" \n",
" \n",
" Rio \n",
" \n",
" \n",
" \n",
" Haryanto \n",
" \n",
" \n",
" \n",
" 1993-01-22 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Rio... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" 838 \n",
" \n",
" \n",
" \n",
" Belgian \n",
" \n",
" \n",
" \n",
" vandoorne \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" VAN \n",
" \n",
" \n",
" \n",
" Stoffel \n",
" \n",
" \n",
" \n",
" Vandoorne \n",
" \n",
" \n",
" \n",
" 1992-03-26 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Sto... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 837 \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" French \n",
" \n",
" \n",
" \n",
" ocon \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" OCO \n",
" \n",
" \n",
" \n",
" Esteban \n",
" \n",
" \n",
" \n",
" Ocon \n",
" \n",
" \n",
" \n",
" 1996-09-17 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Est... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 838 \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" Canadian \n",
" \n",
" \n",
" \n",
" stroll \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" STR \n",
" \n",
" \n",
" \n",
" Lance \n",
" \n",
" \n",
" \n",
" Stroll \n",
" \n",
" \n",
" \n",
" 1998-10-29 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Lan... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" Italian \n",
" \n",
" \n",
" \n",
" giovinazzi \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 36 \n",
" \n",
" \n",
" \n",
" \n",
" GIO \n",
" \n",
" \n",
" \n",
" Antonio \n",
" \n",
" \n",
" \n",
" Giovinazzi \n",
" \n",
" \n",
" \n",
" 1993-12-14 \n",
" \n",
" \n",
" \n",
" http://en.wikipedia.org/wiki/Ant... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 840 rows x 9 columns \n",
" memory usage: 0.11 MB \n",
" name: drivers \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/drivers/ \n",
"
\n"
],
"text/plain": [
"name driverId nationality driverRef number code forename surname dob \n",
"role join_key categorical categorical unused_float unused_string unused_string unused_string unused_string\n",
" 0 1 British hamilton 44 HAM Lewis Hamilton 1985-01-07 \n",
" 1 2 German heidfeld nan HEI Nick Heidfeld 1977-05-10 \n",
" 2 3 German rosberg 6 ROS Nico Rosberg 1985-06-27 \n",
" 3 4 Spanish alonso 14 ALO Fernando Alonso 1981-07-29 \n",
" 4 5 Finnish kovalainen nan KOV Heikki Kovalainen 1981-10-19 \n",
" ... ... ... ... ... ... ... ... \n",
" 835 837 Indonesian haryanto 88 HAR Rio Haryanto 1993-01-22 \n",
" 836 838 Belgian vandoorne 2 VAN Stoffel Vandoorne 1992-03-26 \n",
" 837 839 French ocon 31 OCO Esteban Ocon 1996-09-17 \n",
" 838 840 Canadian stroll 18 STR Lance Stroll 1998-10-29 \n",
" 839 841 Italian giovinazzi 36 GIO Antonio Giovinazzi 1993-12-14 \n",
"\n",
"name url \n",
"role unused_string \n",
" 0 http://en.wikipedia.org/wiki/Lew...\n",
" 1 http://en.wikipedia.org/wiki/Nic...\n",
" 2 http://en.wikipedia.org/wiki/Nic...\n",
" 3 http://en.wikipedia.org/wiki/Fer...\n",
" 4 http://en.wikipedia.org/wiki/Hei...\n",
" ... \n",
" 835 http://en.wikipedia.org/wiki/Rio...\n",
" 836 http://en.wikipedia.org/wiki/Sto...\n",
" 837 http://en.wikipedia.org/wiki/Est...\n",
" 838 http://en.wikipedia.org/wiki/Lan...\n",
" 839 http://en.wikipedia.org/wiki/Ant...\n",
"\n",
"\n",
"840 rows x 9 columns\n",
"memory usage: 0.11 MB\n",
"name: drivers\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/drivers/"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"drivers.set_role(\"driverId\", getml.data.roles.join_key)\n",
"drivers.set_role([\"nationality\", \"driverRef\"], getml.data.roles.categorical)\n",
"\n",
"drivers"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 109088 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" 1:49.088 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 93740 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 12 \n",
" \n",
" \n",
" \n",
" \n",
" 1:33.740 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91600 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.600 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 91067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" 1:31.067 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" 2009-03-29 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2009 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 92129 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" 1:32.129 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420364 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 54 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107528 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.528 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420365 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 55 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107512 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.512 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420366 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 56 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108143 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.143 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420367 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 57 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 107848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 1:47.848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 420368 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 58 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 108699 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 1:48.699 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 420369 rows x 8 columns \n",
" memory usage: 25.64 MB \n",
" name: lap_times \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/lap_times/ \n",
"
\n"
],
"text/plain": [
" name date raceId driverId year lap milliseconds position time \n",
" role time_stamp join_key join_key join_key numerical numerical numerical unused_string\n",
" unit time stamp, comparison only \n",
" 0 2009-03-29 1 1 2009 1 109088 13 1:49.088 \n",
" 1 2009-03-29 1 1 2009 2 93740 12 1:33.740 \n",
" 2 2009-03-29 1 1 2009 3 91600 11 1:31.600 \n",
" 3 2009-03-29 1 1 2009 4 91067 10 1:31.067 \n",
" 4 2009-03-29 1 1 2009 5 92129 10 1:32.129 \n",
" ... ... ... ... ... ... ... ... \n",
"420364 2017-09-17 982 840 2017 54 107528 8 1:47.528 \n",
"420365 2017-09-17 982 840 2017 55 107512 8 1:47.512 \n",
"420366 2017-09-17 982 840 2017 56 108143 8 1:48.143 \n",
"420367 2017-09-17 982 840 2017 57 107848 8 1:47.848 \n",
"420368 2017-09-17 982 840 2017 58 108699 8 1:48.699 \n",
"\n",
"\n",
"420369 rows x 8 columns\n",
"memory usage: 25.64 MB\n",
"name: lap_times\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/lap_times/"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lap_times.set_role([\"raceId\", \"driverId\", \"year\"], getml.data.roles.join_key)\n",
"lap_times.set_role([\"lap\", \"milliseconds\", \"position\"], getml.data.roles.numerical)\n",
"lap_times.set_role(\"date\", getml.data.roles.time_stamp)\n",
"\n",
"lap_times"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" date \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" year \n",
" \n",
" \n",
" \n",
" lap \n",
" \n",
" \n",
" \n",
" milliseconds \n",
" \n",
" \n",
" \n",
" stop \n",
" \n",
" \n",
" \n",
" time \n",
" \n",
" \n",
" \n",
" duration \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23227 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 17:28:24 \n",
" \n",
" \n",
" \n",
" 23.227 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 36 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 17:59:29 \n",
" \n",
" \n",
" \n",
" 23.199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22994 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 17:27:41 \n",
" \n",
" \n",
" \n",
" 22.994 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25098 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 17:51:32 \n",
" \n",
" \n",
" \n",
" 25.098 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" 2011-03-27 \n",
" \n",
" \n",
" \n",
" 841 \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23716 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 17:29:00 \n",
" \n",
" \n",
" \n",
" 23.716 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6065 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 839 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 38 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29134 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" 21:29:07 \n",
" \n",
" \n",
" \n",
" 29.134 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6066 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 37403 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 20:06:43 \n",
" \n",
" \n",
" \n",
" 37.403 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6067 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29294 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 20:10:07 \n",
" \n",
" \n",
" \n",
" 29.294 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6068 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25584 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 20:13:16 \n",
" \n",
" \n",
" \n",
" 25.584 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6069 \n",
" \n",
" \n",
" 2017-09-17 \n",
" \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29412 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" 21:05:07 \n",
" \n",
" \n",
" \n",
" 29.412 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 6070 rows x 9 columns \n",
" memory usage: 0.46 MB \n",
" name: pit_stops \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/pit_stops/ \n",
"
\n"
],
"text/plain": [
"name date raceId driverId year lap milliseconds stop time \n",
"role time_stamp join_key join_key join_key numerical numerical numerical unused_string\n",
"unit time stamp, comparison only \n",
" 0 2011-03-27 841 1 2011 16 23227 1 17:28:24 \n",
" 1 2011-03-27 841 1 2011 36 23199 2 17:59:29 \n",
" 2 2011-03-27 841 2 2011 15 22994 1 17:27:41 \n",
" 3 2011-03-27 841 2 2011 30 25098 2 17:51:32 \n",
" 4 2011-03-27 841 3 2011 16 23716 1 17:29:00 \n",
" ... ... ... ... ... ... ... ... \n",
"6065 2017-09-17 982 839 2017 38 29134 6 21:29:07 \n",
"6066 2017-09-17 982 840 2017 1 37403 1 20:06:43 \n",
"6067 2017-09-17 982 840 2017 2 29294 2 20:10:07 \n",
"6068 2017-09-17 982 840 2017 3 25584 3 20:13:16 \n",
"6069 2017-09-17 982 840 2017 26 29412 4 21:05:07 \n",
"\n",
"name duration \n",
"role unused_string\n",
"unit \n",
" 0 23.227 \n",
" 1 23.199 \n",
" 2 22.994 \n",
" 3 25.098 \n",
" 4 23.716 \n",
" ... \n",
"6065 29.134 \n",
"6066 37.403 \n",
"6067 29.294 \n",
"6068 25.584 \n",
"6069 29.412 \n",
"\n",
"\n",
"6070 rows x 9 columns\n",
"memory usage: 0.46 MB\n",
"name: pit_stops\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/pit_stops/"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pit_stops.set_role([\"raceId\", \"driverId\", \"year\"], getml.data.roles.join_key)\n",
"pit_stops.set_role([\"lap\", \"milliseconds\", \"stop\"], getml.data.roles.numerical)\n",
"pit_stops.set_role(\"date\", getml.data.roles.time_stamp)\n",
"\n",
"pit_stops"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" raceId \n",
" \n",
" \n",
" \n",
" driverId \n",
" \n",
" \n",
" \n",
" qualifyId \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" number \n",
" \n",
" \n",
" \n",
" constructorId \n",
" \n",
" \n",
" \n",
" q1 \n",
" \n",
" \n",
" \n",
" q2 \n",
" \n",
" \n",
" \n",
" q3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1:26.572 \n",
" \n",
" \n",
" \n",
" 1:25.187 \n",
" \n",
" \n",
" \n",
" 1:26.714 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 1:26.103 \n",
" \n",
" \n",
" \n",
" 1:25.315 \n",
" \n",
" \n",
" \n",
" 1:26.869 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.664 \n",
" \n",
" \n",
" \n",
" 1:25.452 \n",
" \n",
" \n",
" \n",
" 1:27.079 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.994 \n",
" \n",
" \n",
" \n",
" 1:25.691 \n",
" \n",
" \n",
" \n",
" 1:27.178 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" 1:25.960 \n",
" \n",
" \n",
" \n",
" 1:25.518 \n",
" \n",
" \n",
" \n",
" 1:27.236 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7392 \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 825 \n",
" \n",
" \n",
" \n",
" 7415 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 210 \n",
" \n",
" \n",
" \n",
" \n",
" 1:43.756 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7393 \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" 7416 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 1:44.014 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7394 \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" 7417 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" 1:44.728 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7395 \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 836 \n",
" \n",
" \n",
" \n",
" 7418 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 94 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" 1:45.059 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7396 \n",
" \n",
" \n",
" 982 \n",
" \n",
" \n",
" \n",
" 828 \n",
" \n",
" \n",
" \n",
" 7419 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" 1:45.570 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" 7397 rows x 9 columns \n",
" memory usage: 0.61 MB \n",
" name: qualifying \n",
" type: getml.DataFrame \n",
" url: http://localhost:1709/#/getdataframe/formula1/qualifying/ \n",
"
\n"
],
"text/plain": [
"name raceId driverId qualifyId position number constructorId q1 q2 q3 \n",
"role join_key join_key join_key numerical numerical unused_float unused_string unused_string unused_string\n",
" 0 18 1 1 1 22 1 1:26.572 1:25.187 1:26.714 \n",
" 1 18 9 2 2 4 2 1:26.103 1:25.315 1:26.869 \n",
" 2 18 5 3 3 23 1 1:25.664 1:25.452 1:27.079 \n",
" 3 18 13 4 4 2 6 1:25.994 1:25.691 1:27.178 \n",
" 4 18 2 5 5 3 2 1:25.960 1:25.518 1:27.236 \n",
" ... ... ... ... ... ... ... ... ... \n",
"7392 982 825 7415 16 20 210 1:43.756 NULL NULL \n",
"7393 982 13 7416 17 19 3 1:44.014 NULL NULL \n",
"7394 982 840 7417 18 18 3 1:44.728 NULL NULL \n",
"7395 982 836 7418 19 94 15 1:45.059 NULL NULL \n",
"7396 982 828 7419 20 9 15 1:45.570 NULL NULL \n",
"\n",
"\n",
"7397 rows x 9 columns\n",
"memory usage: 0.61 MB\n",
"name: qualifying\n",
"type: getml.DataFrame\n",
"url: http://localhost:1709/#/getdataframe/formula1/qualifying/"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qualifying.set_role([\"raceId\", \"driverId\", \"qualifyId\"], getml.data.roles.join_key)\n",
"qualifying.set_role([\"position\", \"number\"], getml.data.roles.numerical)\n",
"\n",
"qualifying"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Predictive modeling\n",
"\n",
"We loaded the data and defined the roles and units. Next, we create a getML pipeline for relational learning."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" test \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
" \n",
" infinite number of rows \n",
" \n",
" type: StringColumnView \n",
" \n",
"
\n"
],
"text/plain": [
" \n",
" 0 train\n",
" 1 train\n",
" 2 train\n",
" 3 test \n",
" 4 train\n",
" ... \n",
"\n",
"\n",
"infinite number of rows\n",
"type: StringColumnView"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"split = getml.data.split.random(train=0.8, test=0.2)\n",
"split"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1 Define relational model"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"data model \n",
"diagram driver_standings lap_times pit_stops qualifying drivers population driverId = driverId date <= date Horizon: 1.0 days Lagged targets allowed driverId = driverId date <= date Horizon: 1.0 days driverId = driverId date <= date Horizon: 1.0 days driverId = driverId raceId = raceId Relationship: many-to-one driverId = driverId Relationship: many-to-one staging \n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" data frames \n",
" \n",
" \n",
" \n",
" staging table \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" population, qualifying, drivers \n",
" \n",
" \n",
" \n",
" POPULATION__STAGING_TABLE_1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" driver_standings \n",
" \n",
" \n",
" \n",
" DRIVER_STANDINGS__STAGING_TABLE_2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" lap_times \n",
" \n",
" \n",
" \n",
" LAP_TIMES__STAGING_TABLE_3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" pit_stops \n",
" \n",
" \n",
" \n",
" PIT_STOPS__STAGING_TABLE_4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"container \n",
"\n",
"
population \n",
" \n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" subset \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" rows \n",
" \n",
" \n",
" \n",
" type \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" test \n",
" \n",
" \n",
" \n",
" driver_standings \n",
" \n",
" \n",
" \n",
" 6229 \n",
" \n",
" \n",
" \n",
" View \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" driver_standings \n",
" \n",
" \n",
" \n",
" 25349 \n",
" \n",
" \n",
" \n",
" View \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
\n",
"\n",
"
peripheral \n",
" \n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" rows \n",
" \n",
" \n",
" \n",
" type \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" driver_standings \n",
" \n",
" \n",
" \n",
" 31578 \n",
" \n",
" \n",
" \n",
" DataFrame \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" lap_times \n",
" \n",
" \n",
" \n",
" 420369 \n",
" \n",
" \n",
" \n",
" DataFrame \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" pit_stops \n",
" \n",
" \n",
" \n",
" 6070 \n",
" \n",
" \n",
" \n",
" DataFrame \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" qualifying \n",
" \n",
" \n",
" \n",
" 7397 \n",
" \n",
" \n",
" \n",
" DataFrame \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" drivers \n",
" \n",
" \n",
" \n",
" 840 \n",
" \n",
" \n",
" \n",
" DataFrame \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"data model\n",
"\n",
" population:\n",
" columns:\n",
" - raceId: join_key\n",
" - driverId: join_key\n",
" - year: join_key\n",
" - win: target\n",
" - date: time_stamp\n",
" - ...\n",
"\n",
" joins:\n",
" - right: 'driver_standings'\n",
" on: \n",
" - (population.driverId, driver_standings.driverId)\n",
" time_stamps: (population.date, driver_standings.date)\n",
" relationship: 'many-to-many'\n",
" horizon: 86400.0\n",
" lagged_targets: True\n",
" - right: 'lap_times'\n",
" on: \n",
" - (population.driverId, lap_times.driverId)\n",
" time_stamps: (population.date, lap_times.date)\n",
" relationship: 'many-to-many'\n",
" horizon: 86400.0\n",
" lagged_targets: False\n",
" - right: 'pit_stops'\n",
" on: \n",
" - (population.driverId, pit_stops.driverId)\n",
" time_stamps: (population.date, pit_stops.date)\n",
" relationship: 'many-to-many'\n",
" horizon: 86400.0\n",
" lagged_targets: False\n",
" - right: 'qualifying'\n",
" on: \n",
" - (population.driverId, qualifying.driverId)\n",
" - (population.raceId, qualifying.raceId)\n",
" relationship: 'many-to-one'\n",
" lagged_targets: False\n",
" - right: 'drivers'\n",
" on: \n",
" - (population.driverId, drivers.driverId)\n",
" relationship: 'many-to-one'\n",
" lagged_targets: False\n",
"\n",
" driver_standings:\n",
" columns:\n",
" - raceId: join_key\n",
" - driverId: join_key\n",
" - year: join_key\n",
" - position: numerical\n",
" - win: target\n",
" - ...\n",
"\n",
" lap_times:\n",
" columns:\n",
" - raceId: join_key\n",
" - driverId: join_key\n",
" - year: join_key\n",
" - lap: numerical\n",
" - milliseconds: numerical\n",
" - ...\n",
"\n",
" pit_stops:\n",
" columns:\n",
" - raceId: join_key\n",
" - driverId: join_key\n",
" - year: join_key\n",
" - lap: numerical\n",
" - milliseconds: numerical\n",
" - ...\n",
"\n",
" qualifying:\n",
" columns:\n",
" - raceId: join_key\n",
" - driverId: join_key\n",
" - qualifyId: join_key\n",
" - position: numerical\n",
" - number: numerical\n",
" - ...\n",
"\n",
" drivers:\n",
" columns:\n",
" - nationality: categorical\n",
" - driverRef: categorical\n",
" - driverId: join_key\n",
" - number: unused_float\n",
" - code: unused_string\n",
" - ...\n",
"\n",
"\n",
"container\n",
"\n",
" population\n",
" subset name rows type\n",
" 0 test driver_standings 6229 View\n",
" 1 train driver_standings 25349 View\n",
"\n",
" peripheral\n",
" name rows type \n",
" 0 driver_standings 31578 DataFrame\n",
" 1 lap_times 420369 DataFrame\n",
" 2 pit_stops 6070 DataFrame\n",
" 3 qualifying 7397 DataFrame\n",
" 4 drivers 840 DataFrame"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"star_schema = getml.data.StarSchema(population=driver_standings.drop([\"position\"]), alias=\"population\", split=split)\n",
"\n",
"star_schema.join(\n",
" driver_standings,\n",
" on=[\"driverId\"],\n",
" time_stamps=\"date\",\n",
" horizon=getml.data.time.days(1),\n",
" lagged_targets=True,\n",
")\n",
"\n",
"# We cannot use lap times for the race\n",
"# we would like to predict, so we set\n",
"# a non-zero horizon.\n",
"star_schema.join(\n",
" lap_times,\n",
" on=[\"driverId\"],\n",
" time_stamps=\"date\",\n",
" horizon=getml.data.time.days(1),\n",
")\n",
"\n",
"# We cannot use pit stops for the race\n",
"# we would like to predict, so we set\n",
"# a non-zero horizon.\n",
"star_schema.join(\n",
" pit_stops,\n",
" on=[\"driverId\"],\n",
" time_stamps=\"date\",\n",
" horizon=getml.data.time.days(1),\n",
")\n",
"\n",
"star_schema.join(\n",
" qualifying,\n",
" on=[\"driverId\", \"raceId\"],\n",
" relationship=getml.data.relationship.many_to_one,\n",
")\n",
"\n",
"star_schema.join(\n",
" drivers,\n",
" on=[\"driverId\"],\n",
" relationship=getml.data.relationship.many_to_one,\n",
")\n",
"\n",
"star_schema"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2 getML pipeline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"__Set-up the feature learner & predictor__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We use the relboost algorithms for this problem. Because of the large number of keywords, we regularize the model a bit by requiring a minimum support for the keywords (`min_num_samples`)."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"mapping = getml.preprocessors.Mapping()\n",
"\n",
"fast_prop = getml.feature_learning.FastProp(\n",
" loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n",
" aggregation=getml.feature_learning.FastProp.agg_sets.All,\n",
" num_threads=1,\n",
")\n",
"\n",
"relboost = getml.feature_learning.Relboost(\n",
" loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n",
" num_threads=1,\n",
")\n",
"\n",
"relmt = getml.feature_learning.RelMT(\n",
" loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n",
" num_threads=1,\n",
")\n",
"\n",
"predictor = getml.predictors.XGBoostClassifier(n_jobs=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Build the pipeline__"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"Pipeline(data_model='population',\n",
" feature_learners=['FastProp'],\n",
" feature_selectors=[],\n",
" include_categorical=True,\n",
" loss_function=None,\n",
" peripheral=['driver_standings', 'drivers', 'lap_times', 'pit_stops', 'qualifying'],\n",
" predictors=['XGBoostClassifier'],\n",
" preprocessors=['Mapping'],\n",
" share_selected_features=0.5,\n",
" tags=['fast_prop']) "
],
"text/plain": [
"Pipeline(data_model='population',\n",
" feature_learners=['FastProp'],\n",
" feature_selectors=[],\n",
" include_categorical=True,\n",
" loss_function=None,\n",
" peripheral=['driver_standings', 'drivers', 'lap_times', 'pit_stops', 'qualifying'],\n",
" predictors=['XGBoostClassifier'],\n",
" preprocessors=['Mapping'],\n",
" share_selected_features=0.5,\n",
" tags=['fast_prop'])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe1 = getml.pipeline.Pipeline(\n",
" tags=['fast_prop'],\n",
" data_model=star_schema.data_model,\n",
" preprocessors=[mapping],\n",
" feature_learners=[fast_prop],\n",
" predictors=[predictor],\n",
" include_categorical=True,\n",
")\n",
"\n",
"pipe1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3 Model training"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking data model...\n",
"\n",
"\n",
"Staging...\n",
"[========================================] 100%\n",
"\n",
"Preprocessing...\n",
"[========================================] 100%\n",
"\n",
"Checking...\n",
"[========================================] 100%\n",
"\n",
"\n",
"INFO [FOREIGN KEYS NOT FOUND]: When joining POPULATION__STAGING_TABLE_1 and LAP_TIMES__STAGING_TABLE_3 over 'driverId' and 'driverId', there are no corresponding entries for 68.551028% of entries in 'driverId' in 'POPULATION__STAGING_TABLE_1'. You might want to double-check your join keys.\n",
"INFO [FOREIGN KEYS NOT FOUND]: When joining POPULATION__STAGING_TABLE_1 and PIT_STOPS__STAGING_TABLE_4 over 'driverId' and 'driverId', there are no corresponding entries for 82.527910% of entries in 'driverId' in 'POPULATION__STAGING_TABLE_1'. You might want to double-check your join keys.\n"
]
}
],
"source": [
"pipe1.check(star_schema.train)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking data model...\n",
"\n",
"\n",
"Staging...\n",
"[========================================] 100%\n",
"\n",
"\n",
"INFO [FOREIGN KEYS NOT FOUND]: When joining POPULATION__STAGING_TABLE_1 and LAP_TIMES__STAGING_TABLE_3 over 'driverId' and 'driverId', there are no corresponding entries for 68.551028% of entries in 'driverId' in 'POPULATION__STAGING_TABLE_1'. You might want to double-check your join keys.\n",
"INFO [FOREIGN KEYS NOT FOUND]: When joining POPULATION__STAGING_TABLE_1 and PIT_STOPS__STAGING_TABLE_4 over 'driverId' and 'driverId', there are no corresponding entries for 82.527910% of entries in 'driverId' in 'POPULATION__STAGING_TABLE_1'. You might want to double-check your join keys.\n",
"\n",
"\n",
"Staging...\n",
"[========================================] 100%\n",
"\n",
"Preprocessing...\n",
"[========================================] 100%\n",
"\n",
"FastProp: Trying 867 features...\n",
"[========================================] 100%\n",
"\n",
"FastProp: Building features...\n",
"[========================================] 100%\n",
"\n",
"XGBoost: Training as predictor...\n",
"[========================================] 100%\n",
"\n",
"\n",
"Trained pipeline.\n",
"Time taken: 0h:10m:31.904886\n",
"\n"
]
},
{
"data": {
"text/html": [
"Pipeline(data_model='population',\n",
" feature_learners=['FastProp'],\n",
" feature_selectors=[],\n",
" include_categorical=True,\n",
" loss_function=None,\n",
" peripheral=['driver_standings', 'drivers', 'lap_times', 'pit_stops', 'qualifying'],\n",
" predictors=['XGBoostClassifier'],\n",
" preprocessors=['Mapping'],\n",
" share_selected_features=0.5,\n",
" tags=['fast_prop', 'container-iDDODO']) url: http://localhost:1709/#/getpipeline/formula1/sSpaJ1/0/ "
],
"text/plain": [
"Pipeline(data_model='population',\n",
" feature_learners=['FastProp'],\n",
" feature_selectors=[],\n",
" include_categorical=True,\n",
" loss_function=None,\n",
" peripheral=['driver_standings', 'drivers', 'lap_times', 'pit_stops', 'qualifying'],\n",
" predictors=['XGBoostClassifier'],\n",
" preprocessors=['Mapping'],\n",
" share_selected_features=0.5,\n",
" tags=['fast_prop', 'container-iDDODO'])\n",
"\n",
"url: http://localhost:1709/#/getpipeline/formula1/sSpaJ1/0/"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe1.fit(star_schema.train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.4 Model evaluation"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"lines_to_next_cell": 0
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Staging...\n",
"[========================================] 100%\n",
"\n",
"Preprocessing...\n",
"[========================================] 100%\n",
"\n",
"FastProp: Building features...\n",
"[========================================] 100%\n",
"\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" date time \n",
" \n",
" \n",
" \n",
" set used \n",
" \n",
" \n",
" \n",
" target \n",
" \n",
" \n",
" \n",
" accuracy \n",
" \n",
" \n",
" \n",
" auc \n",
" \n",
" \n",
" \n",
" cross entropy \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" 2021-08-23 21:25:33 \n",
" \n",
" \n",
" \n",
" train \n",
" \n",
" \n",
" \n",
" win \n",
" \n",
" \n",
" \n",
" 0.9734 \n",
" \n",
" \n",
" \n",
" 0.957 \n",
" \n",
" \n",
" \n",
" 0.07563 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" 2021-08-23 21:26:01 \n",
" \n",
" \n",
" \n",
" test \n",
" \n",
" \n",
" \n",
" win \n",
" \n",
" \n",
" \n",
" 0.9727 \n",
" \n",
" \n",
" \n",
" 0.9242 \n",
" \n",
" \n",
" \n",
" 0.08486 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
" date time set used target accuracy auc cross entropy\n",
"0 2021-08-23 21:25:33 train win 0.9734 0.957 0.07563\n",
"1 2021-08-23 21:26:01 test win 0.9727 0.9242 0.08486"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe1.score(star_schema.test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.5 featuretools"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"featuretools requires some additional data preparation before we can start engineering features."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"population_train_pd = star_schema.train.population.drop([\"position\"]).to_pandas()\n",
"population_test_pd = star_schema.test.population.drop([\"position\"]).to_pandas()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"driver_standings_pd = driver_standings.drop(driver_standings.roles.unused).to_pandas()\n",
"lap_times_pd = lap_times.drop(lap_times.roles.unused).to_pandas()\n",
"pit_stops_pd = pit_stops.drop(pit_stops.roles.unused).to_pandas()\n",
"qualifying_pd = qualifying.drop(qualifying.roles.unused).to_pandas()\n",
"drivers_pd = drivers.drop(drivers.roles.unused).to_pandas()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Because `qualifying` and `drivers` are many-to-one joins, we can directly join them onto our table."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" date \n",
" raceId \n",
" driverId \n",
" year \n",
" win \n",
" id \n",
" qualifyId \n",
" position \n",
" number \n",
" nationality \n",
" driverRef \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2008-03-16 \n",
" 18 \n",
" 1 \n",
" 2008 \n",
" 1.0 \n",
" 0 \n",
" 1 \n",
" 1.0 \n",
" 22.0 \n",
" British \n",
" hamilton \n",
" \n",
" \n",
" 1 \n",
" 2008-03-16 \n",
" 18 \n",
" 2 \n",
" 2008 \n",
" 0.0 \n",
" 1 \n",
" 5 \n",
" 5.0 \n",
" 3.0 \n",
" German \n",
" heidfeld \n",
" \n",
" \n",
" 2 \n",
" 2008-03-16 \n",
" 18 \n",
" 3 \n",
" 2008 \n",
" 0.0 \n",
" 2 \n",
" 7 \n",
" 7.0 \n",
" 7.0 \n",
" German \n",
" rosberg \n",
" \n",
" \n",
" 3 \n",
" 2008-03-16 \n",
" 18 \n",
" 5 \n",
" 2008 \n",
" 0.0 \n",
" 3 \n",
" 3 \n",
" 3.0 \n",
" 23.0 \n",
" Finnish \n",
" kovalainen \n",
" \n",
" \n",
" 4 \n",
" 2008-03-16 \n",
" 18 \n",
" 6 \n",
" 2008 \n",
" 0.0 \n",
" 4 \n",
" 14 \n",
" 14.0 \n",
" 8.0 \n",
" Japanese \n",
" nakajima \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 25344 \n",
" 2017-09-17 \n",
" 982 \n",
" 835 \n",
" 2017 \n",
" 0.0 \n",
" 25344 \n",
" 7410 \n",
" 11.0 \n",
" 30.0 \n",
" British \n",
" jolyon_palmer \n",
" \n",
" \n",
" 25345 \n",
" 2017-09-17 \n",
" 982 \n",
" 154 \n",
" 2017 \n",
" 0.0 \n",
" 25345 \n",
" 7414 \n",
" 15.0 \n",
" 8.0 \n",
" French \n",
" grosjean \n",
" \n",
" \n",
" 25346 \n",
" 2017-09-17 \n",
" 982 \n",
" 836 \n",
" 2017 \n",
" 0.0 \n",
" 25346 \n",
" 7418 \n",
" 19.0 \n",
" 94.0 \n",
" German \n",
" wehrlein \n",
" \n",
" \n",
" 25347 \n",
" 2017-09-17 \n",
" 982 \n",
" 18 \n",
" 2017 \n",
" 0.0 \n",
" 25347 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" British \n",
" button \n",
" \n",
" \n",
" 25348 \n",
" 2017-09-17 \n",
" 982 \n",
" 814 \n",
" 2017 \n",
" 0.0 \n",
" 25348 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" British \n",
" resta \n",
" \n",
" \n",
"
\n",
"
25349 rows × 11 columns
\n",
"
"
],
"text/plain": [
" date raceId driverId year win id qualifyId position \\\n",
"0 2008-03-16 18 1 2008 1.0 0 1 1.0 \n",
"1 2008-03-16 18 2 2008 0.0 1 5 5.0 \n",
"2 2008-03-16 18 3 2008 0.0 2 7 7.0 \n",
"3 2008-03-16 18 5 2008 0.0 3 3 3.0 \n",
"4 2008-03-16 18 6 2008 0.0 4 14 14.0 \n",
"... ... ... ... ... ... ... ... ... \n",
"25344 2017-09-17 982 835 2017 0.0 25344 7410 11.0 \n",
"25345 2017-09-17 982 154 2017 0.0 25345 7414 15.0 \n",
"25346 2017-09-17 982 836 2017 0.0 25346 7418 19.0 \n",
"25347 2017-09-17 982 18 2017 0.0 25347 NaN NaN \n",
"25348 2017-09-17 982 814 2017 0.0 25348 NaN NaN \n",
"\n",
" number nationality driverRef \n",
"0 22.0 British hamilton \n",
"1 3.0 German heidfeld \n",
"2 7.0 German rosberg \n",
"3 23.0 Finnish kovalainen \n",
"4 8.0 Japanese nakajima \n",
"... ... ... ... \n",
"25344 30.0 British jolyon_palmer \n",
"25345 8.0 French grosjean \n",
"25346 94.0 German wehrlein \n",
"25347 NaN British button \n",
"25348 NaN British resta \n",
"\n",
"[25349 rows x 11 columns]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"population_train_pd[\"id\"] = population_train_pd.index\n",
"\n",
"population_train_pd = population_train_pd.merge(\n",
" qualifying_pd,\n",
" on=[\"driverId\", \"raceId\"],\n",
" how=\"left\",\n",
")\n",
"\n",
"population_train_pd = population_train_pd.merge(\n",
" drivers_pd,\n",
" on=[\"driverId\"],\n",
" how=\"left\",\n",
")\n",
"\n",
"population_train_pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Same for the testing set."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" date \n",
" raceId \n",
" driverId \n",
" year \n",
" win \n",
" id \n",
" qualifyId \n",
" position \n",
" number \n",
" nationality \n",
" driverRef \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2008-03-16 \n",
" 18 \n",
" 4 \n",
" 2008 \n",
" 0.0 \n",
" 0 \n",
" 12 \n",
" 12.0 \n",
" 5.0 \n",
" Spanish \n",
" alonso \n",
" \n",
" \n",
" 1 \n",
" 2008-03-16 \n",
" 18 \n",
" 7 \n",
" 2008 \n",
" 0.0 \n",
" 1 \n",
" 18 \n",
" 18.0 \n",
" 14.0 \n",
" French \n",
" bourdais \n",
" \n",
" \n",
" 2 \n",
" 2008-03-23 \n",
" 19 \n",
" 3 \n",
" 2008 \n",
" 0.0 \n",
" 2 \n",
" 38 \n",
" 16.0 \n",
" 7.0 \n",
" German \n",
" rosberg \n",
" \n",
" \n",
" 3 \n",
" 2008-03-23 \n",
" 19 \n",
" 11 \n",
" 2008 \n",
" 0.0 \n",
" 3 \n",
" 42 \n",
" 20.0 \n",
" 18.0 \n",
" Japanese \n",
" sato \n",
" \n",
" \n",
" 4 \n",
" 2008-04-06 \n",
" 20 \n",
" 7 \n",
" 2008 \n",
" 0.0 \n",
" 4 \n",
" 59 \n",
" 15.0 \n",
" 14.0 \n",
" French \n",
" bourdais \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 6224 \n",
" 2017-09-03 \n",
" 981 \n",
" 835 \n",
" 2017 \n",
" 0.0 \n",
" 6224 \n",
" 7396 \n",
" 17.0 \n",
" 30.0 \n",
" British \n",
" jolyon_palmer \n",
" \n",
" \n",
" 6225 \n",
" 2017-09-03 \n",
" 981 \n",
" 814 \n",
" 2017 \n",
" 0.0 \n",
" 6225 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" British \n",
" resta \n",
" \n",
" \n",
" 6226 \n",
" 2017-09-17 \n",
" 982 \n",
" 822 \n",
" 2017 \n",
" 0.0 \n",
" 6226 \n",
" 7405 \n",
" 6.0 \n",
" 77.0 \n",
" Finnish \n",
" bottas \n",
" \n",
" \n",
" 6227 \n",
" 2017-09-17 \n",
" 982 \n",
" 832 \n",
" 2017 \n",
" 0.0 \n",
" 6227 \n",
" 7409 \n",
" 10.0 \n",
" 55.0 \n",
" Spanish \n",
" sainz \n",
" \n",
" \n",
" 6228 \n",
" 2017-09-17 \n",
" 982 \n",
" 826 \n",
" 2017 \n",
" 0.0 \n",
" 6228 \n",
" 7412 \n",
" 13.0 \n",
" 26.0 \n",
" Russian \n",
" kvyat \n",
" \n",
" \n",
"
\n",
"
6229 rows × 11 columns
\n",
"
"
],
"text/plain": [
" date raceId driverId year win id qualifyId position number \\\n",
"0 2008-03-16 18 4 2008 0.0 0 12 12.0 5.0 \n",
"1 2008-03-16 18 7 2008 0.0 1 18 18.0 14.0 \n",
"2 2008-03-23 19 3 2008 0.0 2 38 16.0 7.0 \n",
"3 2008-03-23 19 11 2008 0.0 3 42 20.0 18.0 \n",
"4 2008-04-06 20 7 2008 0.0 4 59 15.0 14.0 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"6224 2017-09-03 981 835 2017 0.0 6224 7396 17.0 30.0 \n",
"6225 2017-09-03 981 814 2017 0.0 6225 NaN NaN NaN \n",
"6226 2017-09-17 982 822 2017 0.0 6226 7405 6.0 77.0 \n",
"6227 2017-09-17 982 832 2017 0.0 6227 7409 10.0 55.0 \n",
"6228 2017-09-17 982 826 2017 0.0 6228 7412 13.0 26.0 \n",
"\n",
" nationality driverRef \n",
"0 Spanish alonso \n",
"1 French bourdais \n",
"2 German rosberg \n",
"3 Japanese sato \n",
"4 French bourdais \n",
"... ... ... \n",
"6224 British jolyon_palmer \n",
"6225 British resta \n",
"6226 Finnish bottas \n",
"6227 Spanish sainz \n",
"6228 Russian kvyat \n",
"\n",
"[6229 rows x 11 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"population_test_pd[\"id\"] = population_test_pd.index\n",
"\n",
"population_test_pd = population_test_pd.merge(\n",
" qualifying_pd,\n",
" on=[\"driverId\", \"raceId\"],\n",
" how=\"left\",\n",
")\n",
"\n",
"population_test_pd = population_test_pd.merge(\n",
" drivers_pd,\n",
" on=[\"driverId\"],\n",
" how=\"left\",\n",
")\n",
"\n",
"population_test_pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"featuretools requires us to expand our peripheral tables so they can be joined using the unique id from the population table. Luckily, we can write a simple helper function that works for all three remaining peripheral tables."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"def prepare_peripheral(peripheral, train_or_test):\n",
" \"\"\"\n",
" Helper function that imitates the behavior of \n",
" the data model defined above.\n",
" \"\"\"\n",
" peripheral_new = peripheral.merge(\n",
" train_or_test[[\"id\", \"driverId\", \"date\"]],\n",
" on=[\"driverId\"],\n",
" )\n",
"\n",
" peripheral_new = peripheral_new[\n",
" peripheral_new[\"date_x\"] < peripheral_new[\"date_y\"]\n",
" ]\n",
" \n",
" del peripheral_new[\"date_y\"]\n",
" del peripheral_new[\"driverId\"]\n",
" del peripheral_new[\"raceId\"]\n",
"\n",
" return peripheral_new.rename(columns={\"date_x\": \"date\"})"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" date \n",
" year \n",
" win \n",
" position \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 2008-03-16 \n",
" 2008 \n",
" 1.0 \n",
" 1.0 \n",
" 6 \n",
" \n",
" \n",
" 2 \n",
" 2008-03-16 \n",
" 2008 \n",
" 1.0 \n",
" 1.0 \n",
" 22 \n",
" \n",
" \n",
" 3 \n",
" 2008-03-16 \n",
" 2008 \n",
" 1.0 \n",
" 1.0 \n",
" 39 \n",
" \n",
" \n",
" 4 \n",
" 2008-03-16 \n",
" 2008 \n",
" 1.0 \n",
" 1.0 \n",
" 54 \n",
" \n",
" \n",
" 5 \n",
" 2008-03-16 \n",
" 2008 \n",
" 1.0 \n",
" 1.0 \n",
" 72 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 2656230 \n",
" 2017-07-30 \n",
" 2017 \n",
" 0.0 \n",
" 12.0 \n",
" 25323 \n",
" \n",
" \n",
" 2656231 \n",
" 2017-07-30 \n",
" 2017 \n",
" 0.0 \n",
" 12.0 \n",
" 25341 \n",
" \n",
" \n",
" 2656242 \n",
" 2017-08-27 \n",
" 2017 \n",
" 0.0 \n",
" 13.0 \n",
" 25323 \n",
" \n",
" \n",
" 2656243 \n",
" 2017-08-27 \n",
" 2017 \n",
" 0.0 \n",
" 13.0 \n",
" 25341 \n",
" \n",
" \n",
" 2656255 \n",
" 2017-09-03 \n",
" 2017 \n",
" 0.0 \n",
" 12.0 \n",
" 25341 \n",
" \n",
" \n",
"
\n",
"
1317941 rows × 5 columns
\n",
"
"
],
"text/plain": [
" date year win position id\n",
"1 2008-03-16 2008 1.0 1.0 6\n",
"2 2008-03-16 2008 1.0 1.0 22\n",
"3 2008-03-16 2008 1.0 1.0 39\n",
"4 2008-03-16 2008 1.0 1.0 54\n",
"5 2008-03-16 2008 1.0 1.0 72\n",
"... ... ... ... ... ...\n",
"2656230 2017-07-30 2017 0.0 12.0 25323\n",
"2656231 2017-07-30 2017 0.0 12.0 25341\n",
"2656242 2017-08-27 2017 0.0 13.0 25323\n",
"2656243 2017-08-27 2017 0.0 13.0 25341\n",
"2656255 2017-09-03 2017 0.0 12.0 25341\n",
"\n",
"[1317941 rows x 5 columns]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"driver_standings_train_pd = prepare_peripheral(driver_standings_pd, population_train_pd)\n",
"driver_standings_test_pd = prepare_peripheral(driver_standings_pd, population_test_pd)\n",
"driver_standings_train_pd"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" date \n",
" year \n",
" lap \n",
" milliseconds \n",
" position \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" 28 \n",
" 2009-03-29 \n",
" 2009 \n",
" 1.0 \n",
" 109088.0 \n",
" 13.0 \n",
" 5874 \n",
" \n",
" \n",
" 29 \n",
" 2009-03-29 \n",
" 2009 \n",
" 1.0 \n",
" 109088.0 \n",
" 13.0 \n",
" 5904 \n",
" \n",
" \n",
" 30 \n",
" 2009-03-29 \n",
" 2009 \n",
" 1.0 \n",
" 109088.0 \n",
" 13.0 \n",
" 5918 \n",
" \n",
" \n",
" 31 \n",
" 2009-03-29 \n",
" 2009 \n",
" 1.0 \n",
" 109088.0 \n",
" 13.0 \n",
" 5936 \n",
" \n",
" \n",
" 32 \n",
" 2009-03-29 \n",
" 2009 \n",
" 1.0 \n",
" 109088.0 \n",
" 13.0 \n",
" 5954 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 54811898 \n",
" 2017-04-09 \n",
" 2017 \n",
" 3.0 \n",
" 156151.0 \n",
" 17.0 \n",
" 25264 \n",
" \n",
" \n",
" 54811899 \n",
" 2017-04-09 \n",
" 2017 \n",
" 3.0 \n",
" 156151.0 \n",
" 17.0 \n",
" 25281 \n",
" \n",
" \n",
" 54811900 \n",
" 2017-04-09 \n",
" 2017 \n",
" 3.0 \n",
" 156151.0 \n",
" 17.0 \n",
" 25300 \n",
" \n",
" \n",
" 54811901 \n",
" 2017-04-09 \n",
" 2017 \n",
" 3.0 \n",
" 156151.0 \n",
" 17.0 \n",
" 25320 \n",
" \n",
" \n",
" 54811902 \n",
" 2017-04-09 \n",
" 2017 \n",
" 3.0 \n",
" 156151.0 \n",
" 17.0 \n",
" 25337 \n",
" \n",
" \n",
"
\n",
"
25544456 rows × 6 columns
\n",
"
"
],
"text/plain": [
" date year lap milliseconds position id\n",
"28 2009-03-29 2009 1.0 109088.0 13.0 5874\n",
"29 2009-03-29 2009 1.0 109088.0 13.0 5904\n",
"30 2009-03-29 2009 1.0 109088.0 13.0 5918\n",
"31 2009-03-29 2009 1.0 109088.0 13.0 5936\n",
"32 2009-03-29 2009 1.0 109088.0 13.0 5954\n",
"... ... ... ... ... ... ...\n",
"54811898 2017-04-09 2017 3.0 156151.0 17.0 25264\n",
"54811899 2017-04-09 2017 3.0 156151.0 17.0 25281\n",
"54811900 2017-04-09 2017 3.0 156151.0 17.0 25300\n",
"54811901 2017-04-09 2017 3.0 156151.0 17.0 25320\n",
"54811902 2017-04-09 2017 3.0 156151.0 17.0 25337\n",
"\n",
"[25544456 rows x 6 columns]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lap_times_train_pd = prepare_peripheral(lap_times_pd, population_train_pd)\n",
"lap_times_test_pd = prepare_peripheral(lap_times_pd, population_test_pd)\n",
"lap_times_train_pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`lap_times` demonstrates one of the greatest dangers of featuretools. Because it is written in pure Python, featuretools requires you expand your tables so that they can be more easily joined. But this comes at the cost of increased memory consumption: In this case a table that used to have about 420,000 rows has now been expanded to over 25 million rows."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" date \n",
" year \n",
" lap \n",
" milliseconds \n",
" stop \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" 57 \n",
" 2011-03-27 \n",
" 2011 \n",
" 16.0 \n",
" 23227.0 \n",
" 1.0 \n",
" 22459 \n",
" \n",
" \n",
" 58 \n",
" 2011-03-27 \n",
" 2011 \n",
" 16.0 \n",
" 23227.0 \n",
" 1.0 \n",
" 22498 \n",
" \n",
" \n",
" 59 \n",
" 2011-03-27 \n",
" 2011 \n",
" 16.0 \n",
" 23227.0 \n",
" 1.0 \n",
" 22536 \n",
" \n",
" \n",
" 60 \n",
" 2011-03-27 \n",
" 2011 \n",
" 16.0 \n",
" 23227.0 \n",
" 1.0 \n",
" 22555 \n",
" \n",
" \n",
" 61 \n",
" 2011-03-27 \n",
" 2011 \n",
" 16.0 \n",
" 23227.0 \n",
" 1.0 \n",
" 22574 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 688120 \n",
" 2017-04-09 \n",
" 2017 \n",
" 2.0 \n",
" 29443.0 \n",
" 1.0 \n",
" 25264 \n",
" \n",
" \n",
" 688121 \n",
" 2017-04-09 \n",
" 2017 \n",
" 2.0 \n",
" 29443.0 \n",
" 1.0 \n",
" 25281 \n",
" \n",
" \n",
" 688122 \n",
" 2017-04-09 \n",
" 2017 \n",
" 2.0 \n",
" 29443.0 \n",
" 1.0 \n",
" 25300 \n",
" \n",
" \n",
" 688123 \n",
" 2017-04-09 \n",
" 2017 \n",
" 2.0 \n",
" 29443.0 \n",
" 1.0 \n",
" 25320 \n",
" \n",
" \n",
" 688124 \n",
" 2017-04-09 \n",
" 2017 \n",
" 2.0 \n",
" 29443.0 \n",
" 1.0 \n",
" 25337 \n",
" \n",
" \n",
"
\n",
"
213549 rows × 6 columns
\n",
"
"
],
"text/plain": [
" date year lap milliseconds stop id\n",
"57 2011-03-27 2011 16.0 23227.0 1.0 22459\n",
"58 2011-03-27 2011 16.0 23227.0 1.0 22498\n",
"59 2011-03-27 2011 16.0 23227.0 1.0 22536\n",
"60 2011-03-27 2011 16.0 23227.0 1.0 22555\n",
"61 2011-03-27 2011 16.0 23227.0 1.0 22574\n",
"... ... ... ... ... ... ...\n",
"688120 2017-04-09 2017 2.0 29443.0 1.0 25264\n",
"688121 2017-04-09 2017 2.0 29443.0 1.0 25281\n",
"688122 2017-04-09 2017 2.0 29443.0 1.0 25300\n",
"688123 2017-04-09 2017 2.0 29443.0 1.0 25320\n",
"688124 2017-04-09 2017 2.0 29443.0 1.0 25337\n",
"\n",
"[213549 rows x 6 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pit_stops_train_pd = prepare_peripheral(pit_stops_pd, population_train_pd)\n",
"pit_stops_test_pd = prepare_peripheral(pit_stops_pd, population_test_pd)\n",
"pit_stops_train_pd"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"del population_train_pd[\"driverId\"]\n",
"del population_train_pd[\"raceId\"]\n",
"del population_train_pd[\"year\"]\n",
"del population_train_pd[\"qualifyId\"]"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"del population_test_pd[\"driverId\"]\n",
"del population_test_pd[\"raceId\"]\n",
"del population_test_pd[\"year\"]\n",
"del population_test_pd[\"qualifyId\"]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"entities_train = {\n",
" \"population\" : (population_train_pd, \"id\"),\n",
" \"driver_standings\": (driver_standings_train_pd, \"index\"),\n",
" \"lap_times\" : (lap_times_train_pd, \"index\"),\n",
" \"pit_stops\" : (pit_stops_train_pd, \"index\"),\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"entities_test = {\n",
" \"population\" : (population_test_pd, \"id\"),\n",
" \"driver_standings\": (driver_standings_test_pd, \"index\"),\n",
" \"lap_times\" : (lap_times_test_pd, \"index\"),\n",
" \"pit_stops\" : (pit_stops_test_pd, \"index\")\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"relationships = [\n",
" (\"population\", \"id\", \"driver_standings\", \"id\"),\n",
" (\"population\", \"id\", \"lap_times\", \"id\"),\n",
" (\"population\", \"id\", \"pit_stops\", \"id\")\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/patrick/.local/lib/python3.9/site-packages/featuretools/entityset/entity.py:462: UserWarning: index index not found in dataframe, creating new integer column\n",
" warnings.warn(\"index {} not found in dataframe, creating new \"\n"
]
}
],
"source": [
"featuretools_train_pd = featuretools.dfs(\n",
" entities=entities_train,\n",
" relationships=relationships,\n",
" target_entity=\"population\")[0]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"featuretools_test_pd = featuretools.dfs(\n",
" entities=entities_test,\n",
" relationships=relationships,\n",
" target_entity=\"population\")[0]"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"featuretools_train = getml.data.DataFrame.from_pandas(featuretools_train_pd, \"featuretools_train\")\n",
"featuretools_test = getml.data.DataFrame.from_pandas(featuretools_test_pd, \"featuretools_test\")"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"90.725472% of all entries of column 'MAX(pit_stops.lap)' are NULL values.\n",
"90.725472% of all entries of column 'MAX(pit_stops.milliseconds)' are NULL values.\n",
"90.725472% of all entries of column 'MAX(pit_stops.stop)' are NULL values.\n",
"90.725472% of all entries of column 'MEAN(pit_stops.lap)' are NULL values.\n",
"90.725472% of all entries of column 'MEAN(pit_stops.milliseconds)' are NULL values.\n",
"90.725472% of all entries of column 'MEAN(pit_stops.stop)' are NULL values.\n",
"90.725472% of all entries of column 'MIN(pit_stops.lap)' are NULL values.\n",
"90.725472% of all entries of column 'MIN(pit_stops.milliseconds)' are NULL values.\n",
"90.725472% of all entries of column 'MIN(pit_stops.stop)' are NULL values.\n",
"90.725472% of all entries of column 'NUM_UNIQUE(pit_stops.year)' are NULL values.\n",
"90.934554% of all entries of column 'SKEW(pit_stops.lap)' are NULL values.\n",
"90.934554% of all entries of column 'SKEW(pit_stops.milliseconds)' are NULL values.\n",
"90.934554% of all entries of column 'SKEW(pit_stops.stop)' are NULL values.\n",
"90.757032% of all entries of column 'STD(pit_stops.lap)' are NULL values.\n",
"90.757032% of all entries of column 'STD(pit_stops.milliseconds)' are NULL values.\n",
"90.757032% of all entries of column 'STD(pit_stops.stop)' are NULL values.\n",
"90.725472% of all entries of column 'MODE(pit_stops.DAY(date))' are NULL values.\n",
"90.725472% of all entries of column 'MODE(pit_stops.MONTH(date))' are NULL values.\n",
"90.725472% of all entries of column 'MODE(pit_stops.WEEKDAY(date))' are NULL values.\n",
"90.725472% of all entries of column 'MODE(pit_stops.YEAR(date))' are NULL values.\n",
"90.725472% of all entries of column 'NUM_UNIQUE(pit_stops.DAY(date))' are NULL values.\n",
"90.725472% of all entries of column 'NUM_UNIQUE(pit_stops.MONTH(date))' are NULL values.\n",
"90.725472% of all entries of column 'NUM_UNIQUE(pit_stops.WEEKDAY(date))' are NULL values.\n",
"90.725472% of all entries of column 'NUM_UNIQUE(pit_stops.YEAR(date))' are NULL values.\n",
"90.725472% of all entries of column 'MODE(pit_stops.year)' are NULL values.\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" name \n",
" \n",
" \n",
" \n",
" win \n",
" \n",
" \n",
" \n",
" nationality \n",
" \n",
" \n",
" \n",
" driverRef \n",
" \n",
" \n",
" \n",
" MODE(driver_standings.year) \n",
" \n",
" \n",
" \n",
" MODE(lap_times.year) \n",
" \n",
" \n",
" \n",
" MODE(pit_stops.year) \n",
" \n",
" \n",
" \n",
" position \n",
" \n",
" \n",
" \n",
" number \n",
" \n",
" \n",
" \n",
" COUNT(driver_standings) \n",
" \n",
" \n",
" \n",
" MAX(driver_standings.position) \n",
" \n",
" \n",
" \n",
" MAX(driver_standings.win) \n",
" \n",
" \n",
" \n",
" MEAN(driver_standings.position) \n",
" \n",
" \n",
" \n",
" MEAN(driver_standings.win) \n",
" \n",
" \n",
" \n",
" MIN(driver_standings.position) \n",
" \n",
" \n",
" \n",
" MIN(driver_standings.win) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(driver_standings.year) \n",
" \n",
" \n",
" \n",
" SKEW(driver_standings.position) \n",
" \n",
" \n",
" \n",
" SKEW(driver_standings.win) \n",
" \n",
" \n",
" \n",
" STD(driver_standings.position) \n",
" \n",
" \n",
" \n",
" STD(driver_standings.win) \n",
" \n",
" \n",
" \n",
" SUM(driver_standings.position) \n",
" \n",
" \n",
" \n",
" SUM(driver_standings.win) \n",
" \n",
" \n",
" \n",
" COUNT(lap_times) \n",
" \n",
" \n",
" \n",
" MAX(lap_times.lap) \n",
" \n",
" \n",
" \n",
" MAX(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" MAX(lap_times.position) \n",
" \n",
" \n",
" \n",
" MEAN(lap_times.lap) \n",
" \n",
" \n",
" \n",
" MEAN(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" MEAN(lap_times.position) \n",
" \n",
" \n",
" \n",
" MIN(lap_times.lap) \n",
" \n",
" \n",
" \n",
" MIN(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" MIN(lap_times.position) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(lap_times.year) \n",
" \n",
" \n",
" \n",
" SKEW(lap_times.lap) \n",
" \n",
" \n",
" \n",
" SKEW(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" SKEW(lap_times.position) \n",
" \n",
" \n",
" \n",
" STD(lap_times.lap) \n",
" \n",
" \n",
" \n",
" STD(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" STD(lap_times.position) \n",
" \n",
" \n",
" \n",
" SUM(lap_times.lap) \n",
" \n",
" \n",
" \n",
" SUM(lap_times.milliseconds) \n",
" \n",
" \n",
" \n",
" SUM(lap_times.position) \n",
" \n",
" \n",
" \n",
" COUNT(pit_stops) \n",
" \n",
" \n",
" \n",
" MAX(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" MAX(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" MAX(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" MEAN(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" MEAN(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" MEAN(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" MIN(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" MIN(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" MIN(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(pit_stops.year) \n",
" \n",
" \n",
" \n",
" SKEW(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" SKEW(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" SKEW(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" STD(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" STD(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" STD(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" SUM(pit_stops.lap) \n",
" \n",
" \n",
" \n",
" SUM(pit_stops.milliseconds) \n",
" \n",
" \n",
" \n",
" SUM(pit_stops.stop) \n",
" \n",
" \n",
" \n",
" DAY(date) \n",
" \n",
" \n",
" \n",
" MONTH(date) \n",
" \n",
" \n",
" \n",
" WEEKDAY(date) \n",
" \n",
" \n",
" \n",
" YEAR(date) \n",
" \n",
" \n",
" \n",
" MODE(driver_standings.DAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(driver_standings.MONTH(date)) \n",
" \n",
" \n",
" \n",
" MODE(driver_standings.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(driver_standings.YEAR(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(driver_standings.DAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(driver_standings.MONTH(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(driver_standings.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(driver_standings.YEAR(date)) \n",
" \n",
" \n",
" \n",
" MODE(lap_times.DAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(lap_times.MONTH(date)) \n",
" \n",
" \n",
" \n",
" MODE(lap_times.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(lap_times.YEAR(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(lap_times.DAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(lap_times.MONTH(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(lap_times.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(lap_times.YEAR(date)) \n",
" \n",
" \n",
" \n",
" MODE(pit_stops.DAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(pit_stops.MONTH(date)) \n",
" \n",
" \n",
" \n",
" MODE(pit_stops.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" MODE(pit_stops.YEAR(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(pit_stops.DAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(pit_stops.MONTH(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(pit_stops.WEEKDAY(date)) \n",
" \n",
" \n",
" \n",
" NUM_UNIQUE(pit_stops.YEAR(date)) \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" British \n",
" \n",
" \n",
" \n",
" hamilton \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .4706 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2353 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .3538 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .3723 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .7998 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .4372 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1037 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 78 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1453884 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 32 .0559 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 90600 .8602 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .2575 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 72506 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .1882 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 .093 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 .4493 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 .1156 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 45564 .9471 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .4488 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 33242 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 93953092 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3378 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" heidfeld \n",
" \n",
" \n",
" \n",
" 2005 \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 134 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 .8582 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .4681 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 .136 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1455 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6863 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 78 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1285986 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 .4682 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 89072 .7102 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 .6799 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 70516 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2623 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 .5344 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3339 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .7041 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20544 .1746 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 209103 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 611306010 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 66433 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2005 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" rosberg \n",
" \n",
" \n",
" \n",
" 2006 \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 35 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 .9714 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .1328 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .1761 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 419 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1627 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 77 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 191891 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 .4124 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 89820 .1174 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 .9809 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 73159 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2225 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .7858 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .5491 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .6109 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14212 .8848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .733 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 49481 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 146137331 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16239 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2006 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" Finnish \n",
" \n",
" \n",
" \n",
" kovalainen \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 23 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 .3529 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .7931 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .4116 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 142 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1023 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 76 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1394884 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 .4526 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 92458 .8299 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 .4018 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 73998 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .1906 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 26 .2493 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .6941 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .6943 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 43578 .4946 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .1724 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 32176 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 94585383 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9618 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" Japanese \n",
" \n",
" \n",
" \n",
" nakajima \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" NULL \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 70 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 70 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 104396 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 35 .5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 76228 .3571 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 .9143 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 73116 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .4222 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .2783 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 .3511 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4785 .2529 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .8552 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2485 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5335985 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 764 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2007 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ... \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25344 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" British \n",
" \n",
" \n",
" \n",
" jolyon_palmer \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 34 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .0588 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" -1 .7626 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .8413 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 614 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1517 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 78 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1223356 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29 .4199 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 98411 .6038 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14 .5175 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68652 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2921 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 .0237 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3751 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .5854 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 43393 .1519 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .0483 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 44630 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 149290403 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22023 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 56 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 50 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1088294 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 .9286 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 61015 .1429 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .7857 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16851 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3035 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 .1507 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .8981 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 .473 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 191214 .0556 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .9088 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1172 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3416848 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 100 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25345 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" French \n",
" \n",
" \n",
" \n",
" grosjean \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2014 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 118 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11 .5254 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .3306 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .1709 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1360 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5518 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 78 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3670560 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 29 .4511 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 99489 .4235 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 10 .7356 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 68590 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2565 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 39 .9299 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .06907 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .0521 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 63108 .3058 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .8371 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 162511 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 548982639 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 59239 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 206 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 62 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1313665 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 .9369 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 46260 .6214 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .801 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15073 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3075 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 .1215 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .2186 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 .7483 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 154388 .9496 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .9288 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4725 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9529688 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 371 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 27 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2014 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25346 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" German \n",
" \n",
" \n",
" \n",
" wehrlein \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 19 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 94 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 32 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 .25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3213 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 .2718 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 552 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1636 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 76 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2118880 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 .3839 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 99952 .8594 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 .8319 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 69241 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2027 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 20 .0905 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" -0 .8509 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .2369 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 77850 .4087 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .2136 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 49708 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 163522878 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25901 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 62 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 52 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2008464 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 21 .6129 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 119925 .5968 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .8065 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18064 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .1765 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 .9986 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .1414 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 12 .8896 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 368710 .9372 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .9381 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1340 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7435387 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 112 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25347 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" British \n",
" \n",
" \n",
" \n",
" button \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" 2013 \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" nan \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 309 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 .6828 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .04854 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3055 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .2218 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 5 .8899 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2153 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2992 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 15 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 16272 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 78 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7503775 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 22 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 30 .2853 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 95662 .1676 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 .4123 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 69828 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .2244 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 64 .7495 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .4521 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 .3544 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 79242 .6165 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 4 .859 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 492803 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1556614792 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 136885 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 259 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 64 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2010062 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 .9344 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 45562 .5985 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .8571 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 14501 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .3229 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 8 .7373 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 .148 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 13 .5509 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 179696 .8608 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 .9353 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6458 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 11800713 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 481 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 17 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2017 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2016 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 24 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2013 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 18 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 25 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2011 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 31 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 9 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1