mirror of
https://github.com/elastic/eland.git
synced 2025-07-11 00:02:14 +08:00
* Updating test matrix for 7.6 + removing oss for now. * Resolving 7.6.0 docs issues * Updating ML docs * Bumping version following doc fixes * Change ExternalMLModel to ImportedMLModel
3731 lines
163 KiB
Plaintext
3731 lines
163 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Eland Demo Notebook"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import eland as ed\n",
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"from elasticsearch import Elasticsearch\n",
|
||
"\n",
|
||
"# Import standard test settings for consistent results\n",
|
||
"from eland.conftest import *"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Compare eland DataFrame vs pandas DataFrame"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Create an eland.DataFrame from a `flights` index"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"ed_flights = ed.read_es('localhost', 'flights')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"eland.dataframe.DataFrame"
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"type(ed_flights)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Compare to pandas DataFrame (created from the same data)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"pd_flights = ed.eland_to_pandas(ed_flights)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"pandas.core.frame.DataFrame"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"type(pd_flights)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Attributes and underlying data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['AvgTicketPrice', 'Cancelled', 'Carrier', 'Dest', 'DestAirportID', 'DestCityName',\n",
|
||
" 'DestCountry', 'DestLocation', 'DestRegion', 'DestWeather', 'DistanceKilometers',\n",
|
||
" 'DistanceMiles', 'FlightDelay', 'FlightDelayMin', 'FlightDelayType', 'FlightNum',\n",
|
||
" 'FlightTimeHour', 'FlightTimeMin', 'Origin', 'OriginAirportID', 'OriginCityName',\n",
|
||
" 'OriginCountry', 'OriginLocation', 'OriginRegion', 'OriginWeather', 'dayOfWeek',\n",
|
||
" 'timestamp'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['AvgTicketPrice', 'Cancelled', 'Carrier', 'Dest', 'DestAirportID', 'DestCityName',\n",
|
||
" 'DestCountry', 'DestLocation', 'DestRegion', 'DestWeather', 'DistanceKilometers',\n",
|
||
" 'DistanceMiles', 'FlightDelay', 'FlightDelayMin', 'FlightDelayType', 'FlightNum',\n",
|
||
" 'FlightTimeHour', 'FlightTimeMin', 'Origin', 'OriginAirportID', 'OriginCityName',\n",
|
||
" 'OriginCountry', 'OriginLocation', 'OriginRegion', 'OriginWeather', 'dayOfWeek',\n",
|
||
" 'timestamp'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.dtypes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice float64\n",
|
||
"Cancelled bool\n",
|
||
"Carrier object\n",
|
||
"Dest object\n",
|
||
"DestAirportID object\n",
|
||
" ... \n",
|
||
"OriginLocation object\n",
|
||
"OriginRegion object\n",
|
||
"OriginWeather object\n",
|
||
"dayOfWeek int64\n",
|
||
"timestamp datetime64[ns]\n",
|
||
"Length: 27, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.dtypes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice float64\n",
|
||
"Cancelled bool\n",
|
||
"Carrier object\n",
|
||
"Dest object\n",
|
||
"DestAirportID object\n",
|
||
" ... \n",
|
||
"OriginLocation object\n",
|
||
"OriginRegion object\n",
|
||
"OriginWeather object\n",
|
||
"dayOfWeek int64\n",
|
||
"timestamp datetime64[ns]\n",
|
||
"Length: 27, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.dtypes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.select_dtypes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>FlightTimeMin</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>841.265642</td>\n",
|
||
" <td>16492.326654</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1030.770416</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>882.982662</td>\n",
|
||
" <td>8823.400140</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>464.389481</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>190.636904</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>181.694216</td>\n",
|
||
" <td>555.737767</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>222.749059</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>730.041778</td>\n",
|
||
" <td>13358.244200</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>785.779071</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>1080.446279</td>\n",
|
||
" <td>8058.581753</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>402.929088</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>646.612941</td>\n",
|
||
" <td>7088.598322</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>644.418029</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>997.751876</td>\n",
|
||
" <td>10920.652972</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>937.540811</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>1102.814465</td>\n",
|
||
" <td>18748.859647</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1697.404971</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>858.144337</td>\n",
|
||
" <td>16809.141923</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1610.761827</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>13059 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice DistanceKilometers ... FlightTimeMin dayOfWeek\n",
|
||
"0 841.265642 16492.326654 ... 1030.770416 0\n",
|
||
"1 882.982662 8823.400140 ... 464.389481 0\n",
|
||
"2 190.636904 0.000000 ... 0.000000 0\n",
|
||
"3 181.694216 555.737767 ... 222.749059 0\n",
|
||
"4 730.041778 13358.244200 ... 785.779071 0\n",
|
||
"... ... ... ... ... ...\n",
|
||
"13054 1080.446279 8058.581753 ... 402.929088 6\n",
|
||
"13055 646.612941 7088.598322 ... 644.418029 6\n",
|
||
"13056 997.751876 10920.652972 ... 937.540811 6\n",
|
||
"13057 1102.814465 18748.859647 ... 1697.404971 6\n",
|
||
"13058 858.144337 16809.141923 ... 1610.761827 6\n",
|
||
"\n",
|
||
"[13059 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.select_dtypes(include=np.number)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>FlightTimeMin</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>841.265642</td>\n",
|
||
" <td>16492.326654</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1030.770416</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>882.982662</td>\n",
|
||
" <td>8823.400140</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>464.389481</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>190.636904</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>181.694216</td>\n",
|
||
" <td>555.737767</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>222.749059</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>730.041778</td>\n",
|
||
" <td>13358.244200</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>785.779071</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>1080.446279</td>\n",
|
||
" <td>8058.581753</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>402.929088</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>646.612941</td>\n",
|
||
" <td>7088.598322</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>644.418029</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>997.751876</td>\n",
|
||
" <td>10920.652972</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>937.540811</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>1102.814465</td>\n",
|
||
" <td>18748.859647</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1697.404971</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>858.144337</td>\n",
|
||
" <td>16809.141923</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1610.761827</td>\n",
|
||
" <td>6</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>13059 rows × 7 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice DistanceKilometers ... FlightTimeMin dayOfWeek\n",
|
||
"0 841.265642 16492.326654 ... 1030.770416 0\n",
|
||
"1 882.982662 8823.400140 ... 464.389481 0\n",
|
||
"2 190.636904 0.000000 ... 0.000000 0\n",
|
||
"3 181.694216 555.737767 ... 222.749059 0\n",
|
||
"4 730.041778 13358.244200 ... 785.779071 0\n",
|
||
"... ... ... ... ... ...\n",
|
||
"13054 1080.446279 8058.581753 ... 402.929088 6\n",
|
||
"13055 646.612941 7088.598322 ... 644.418029 6\n",
|
||
"13056 997.751876 10920.652972 ... 937.540811 6\n",
|
||
"13057 1102.814465 18748.859647 ... 1697.404971 6\n",
|
||
"13058 858.144337 16809.141923 ... 1610.761827 6\n",
|
||
"\n",
|
||
"[13059 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.select_dtypes(include=np.number)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.empty"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"False"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.empty"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"False"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.empty"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(13059, 27)"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(13059, 27)"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.index\n",
|
||
"\n",
|
||
"Note, `eland.DataFrame.index` does not mirror `pandas.DataFrame.index`. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n",
|
||
" ...\n",
|
||
" '13049', '13050', '13051', '13052', '13053', '13054', '13055', '13056', '13057', '13058'],\n",
|
||
" dtype='object', length=13059)"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.index"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<eland.index.Index at 0x116b3efd0>"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# NBVAL_IGNORE_OUTPUT\n",
|
||
"ed_flights.index"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'_id'"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.index.index_field"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.values\n",
|
||
"\n",
|
||
"Note, `eland.DataFrame.values` is not supported."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[841.2656419677076, False, 'Kibana Airlines', ..., 'Sunny', 0,\n",
|
||
" Timestamp('2018-01-01 00:00:00')],\n",
|
||
" [882.9826615595518, False, 'Logstash Airways', ..., 'Clear', 0,\n",
|
||
" Timestamp('2018-01-01 18:27:00')],\n",
|
||
" [190.6369038508356, False, 'Logstash Airways', ..., 'Rain', 0,\n",
|
||
" Timestamp('2018-01-01 17:11:14')],\n",
|
||
" ...,\n",
|
||
" [997.7518761454494, False, 'Logstash Airways', ..., 'Sunny', 6,\n",
|
||
" Timestamp('2018-02-11 04:09:27')],\n",
|
||
" [1102.8144645388556, False, 'JetBeats', ..., 'Hail', 6,\n",
|
||
" Timestamp('2018-02-11 08:28:21')],\n",
|
||
" [858.1443369038839, False, 'JetBeats', ..., 'Rain', 6,\n",
|
||
" Timestamp('2018-02-11 14:54:34')]], dtype=object)"
|
||
]
|
||
},
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.values"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"This method would scan/scroll the entire Elasticsearch index(s) into memory. If this is explicitly required, and there is sufficient memory, call `ed.eland_to_pandas(ed_df).values`\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"try:\n",
|
||
" ed_flights.values\n",
|
||
"except AttributeError as e:\n",
|
||
" print(e)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Indexing, iteration"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.head"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>841.265642</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 00:00:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>882.982662</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 18:27:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>190.636904</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 17:11:14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>181.694216</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 10:33:28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>730.041778</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 05:13:00</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 27 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"0 841.265642 False ... 0 2018-01-01 00:00:00\n",
|
||
"1 882.982662 False ... 0 2018-01-01 18:27:00\n",
|
||
"2 190.636904 False ... 0 2018-01-01 17:11:14\n",
|
||
"3 181.694216 True ... 0 2018-01-01 10:33:28\n",
|
||
"4 730.041778 False ... 0 2018-01-01 05:13:00\n",
|
||
"\n",
|
||
"[5 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>841.265642</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 00:00:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>882.982662</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 18:27:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>190.636904</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 17:11:14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>181.694216</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 10:33:28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>730.041778</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 05:13:00</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>5 rows × 27 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"0 841.265642 False ... 0 2018-01-01 00:00:00\n",
|
||
"1 882.982662 False ... 0 2018-01-01 18:27:00\n",
|
||
"2 190.636904 False ... 0 2018-01-01 17:11:14\n",
|
||
"3 181.694216 True ... 0 2018-01-01 10:33:28\n",
|
||
"4 730.041778 False ... 0 2018-01-01 05:13:00\n",
|
||
"\n",
|
||
"[5 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.tail"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>1080.446279</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 20:42:25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>646.612941</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 01:41:57</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>997.751876</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 04:09:27</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>1102.814465</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 08:28:21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>858.144337</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 14:54:34</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 27 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"13054 1080.446279 False ... 6 2018-02-11 20:42:25\n",
|
||
"13055 646.612941 False ... 6 2018-02-11 01:41:57\n",
|
||
"13056 997.751876 False ... 6 2018-02-11 04:09:27\n",
|
||
"13057 1102.814465 False ... 6 2018-02-11 08:28:21\n",
|
||
"13058 858.144337 False ... 6 2018-02-11 14:54:34\n",
|
||
"\n",
|
||
"[5 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>1080.446279</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 20:42:25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>646.612941</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 01:41:57</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>997.751876</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 04:09:27</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>1102.814465</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 08:28:21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>858.144337</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 14:54:34</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>5 rows × 27 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"13054 1080.446279 False ... 6 2018-02-11 20:42:25\n",
|
||
"13055 646.612941 False ... 6 2018-02-11 01:41:57\n",
|
||
"13056 997.751876 False ... 6 2018-02-11 04:09:27\n",
|
||
"13057 1102.814465 False ... 6 2018-02-11 08:28:21\n",
|
||
"13058 858.144337 False ... 6 2018-02-11 14:54:34\n",
|
||
"\n",
|
||
"[5 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.keys"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['AvgTicketPrice', 'Cancelled', 'Carrier', 'Dest', 'DestAirportID', 'DestCityName',\n",
|
||
" 'DestCountry', 'DestLocation', 'DestRegion', 'DestWeather', 'DistanceKilometers',\n",
|
||
" 'DistanceMiles', 'FlightDelay', 'FlightDelayMin', 'FlightDelayType', 'FlightNum',\n",
|
||
" 'FlightTimeHour', 'FlightTimeMin', 'Origin', 'OriginAirportID', 'OriginCityName',\n",
|
||
" 'OriginCountry', 'OriginLocation', 'OriginRegion', 'OriginWeather', 'dayOfWeek',\n",
|
||
" 'timestamp'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.keys()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['AvgTicketPrice', 'Cancelled', 'Carrier', 'Dest', 'DestAirportID', 'DestCityName',\n",
|
||
" 'DestCountry', 'DestLocation', 'DestRegion', 'DestWeather', 'DistanceKilometers',\n",
|
||
" 'DistanceMiles', 'FlightDelay', 'FlightDelayMin', 'FlightDelayType', 'FlightNum',\n",
|
||
" 'FlightTimeHour', 'FlightTimeMin', 'Origin', 'OriginAirportID', 'OriginCityName',\n",
|
||
" 'OriginCountry', 'OriginLocation', 'OriginRegion', 'OriginWeather', 'dayOfWeek',\n",
|
||
" 'timestamp'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.keys()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.get"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 Kibana Airlines\n",
|
||
"1 Logstash Airways\n",
|
||
"2 Logstash Airways\n",
|
||
"3 Kibana Airlines\n",
|
||
"4 Kibana Airlines\n",
|
||
" ... \n",
|
||
"13054 Logstash Airways\n",
|
||
"13055 Logstash Airways\n",
|
||
"13056 Logstash Airways\n",
|
||
"13057 JetBeats\n",
|
||
"13058 JetBeats\n",
|
||
"Name: Carrier, Length: 13059, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.get('Carrier')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 Kibana Airlines\n",
|
||
"1 Logstash Airways\n",
|
||
"2 Logstash Airways\n",
|
||
"3 Kibana Airlines\n",
|
||
"4 Kibana Airlines\n",
|
||
" ... \n",
|
||
"13054 Logstash Airways\n",
|
||
"13055 Logstash Airways\n",
|
||
"13056 Logstash Airways\n",
|
||
"13057 JetBeats\n",
|
||
"13058 JetBeats\n",
|
||
"Name: Carrier, Length: 13059, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.get('Carrier')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Carrier</th>\n",
|
||
" <th>Origin</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>Frankfurt am Main Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>Cape Town International Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>Venice Marco Polo Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>Naples International Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>Licenciado Benito Juarez International Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>Pisa International Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>Winnipeg / James Armstrong Richardson Internat...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>Licenciado Benito Juarez International Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>Itami Airport</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>Adelaide International Airport</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>13059 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Carrier Origin\n",
|
||
"0 Kibana Airlines Frankfurt am Main Airport\n",
|
||
"1 Logstash Airways Cape Town International Airport\n",
|
||
"2 Logstash Airways Venice Marco Polo Airport\n",
|
||
"3 Kibana Airlines Naples International Airport\n",
|
||
"4 Kibana Airlines Licenciado Benito Juarez International Airport\n",
|
||
"... ... ...\n",
|
||
"13054 Logstash Airways Pisa International Airport\n",
|
||
"13055 Logstash Airways Winnipeg / James Armstrong Richardson Internat...\n",
|
||
"13056 Logstash Airways Licenciado Benito Juarez International Airport\n",
|
||
"13057 JetBeats Itami Airport\n",
|
||
"13058 JetBeats Adelaide International Airport\n",
|
||
"\n",
|
||
"[13059 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.get(['Carrier', 'Origin'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"List input not currently supported by `eland.DataFrame.get`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"unhashable type: 'list'\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"try:\n",
|
||
" ed_flights.get(['Carrier', 'Origin'])\n",
|
||
"except TypeError as e:\n",
|
||
" print(e)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.query"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>960.869736</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 12:09:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26</th>\n",
|
||
" <td>975.812632</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 15:38:32</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>311</th>\n",
|
||
" <td>946.358410</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 11:51:12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>651</th>\n",
|
||
" <td>975.383864</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 21:13:17</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>950</th>\n",
|
||
" <td>907.836523</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 05:14:51</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12820</th>\n",
|
||
" <td>909.973606</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2018-02-10 05:11:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12906</th>\n",
|
||
" <td>983.429244</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 06:19:58</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12918</th>\n",
|
||
" <td>1136.678150</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 16:03:10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12919</th>\n",
|
||
" <td>1105.211803</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 05:36:05</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13013</th>\n",
|
||
" <td>1055.350213</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 13:20:16</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>68 rows × 27 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"8 960.869736 True ... 0 2018-01-01 12:09:35\n",
|
||
"26 975.812632 True ... 0 2018-01-01 15:38:32\n",
|
||
"311 946.358410 True ... 0 2018-01-01 11:51:12\n",
|
||
"651 975.383864 True ... 2 2018-01-03 21:13:17\n",
|
||
"950 907.836523 True ... 2 2018-01-03 05:14:51\n",
|
||
"... ... ... ... ... ...\n",
|
||
"12820 909.973606 True ... 5 2018-02-10 05:11:35\n",
|
||
"12906 983.429244 True ... 6 2018-02-11 06:19:58\n",
|
||
"12918 1136.678150 True ... 6 2018-02-11 16:03:10\n",
|
||
"12919 1105.211803 True ... 6 2018-02-11 05:36:05\n",
|
||
"13013 1055.350213 True ... 6 2018-02-11 13:20:16\n",
|
||
"\n",
|
||
"[68 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.query('Carrier == \"Kibana Airlines\" & AvgTicketPrice > 900.0 & Cancelled == True')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"`eland.DataFrame.query` requires qualifier on bool i.e.\n",
|
||
"\n",
|
||
"`ed_flights.query('Carrier == \"Kibana Airlines\" & AvgTicketPrice > 900.0 & Cancelled')` fails"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>960.869736</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 12:09:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26</th>\n",
|
||
" <td>975.812632</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 15:38:32</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>311</th>\n",
|
||
" <td>946.358410</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 11:51:12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>651</th>\n",
|
||
" <td>975.383864</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 21:13:17</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>950</th>\n",
|
||
" <td>907.836523</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 05:14:51</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12820</th>\n",
|
||
" <td>909.973606</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2018-02-10 05:11:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12906</th>\n",
|
||
" <td>983.429244</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 06:19:58</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12918</th>\n",
|
||
" <td>1136.678150</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 16:03:10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12919</th>\n",
|
||
" <td>1105.211803</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 05:36:05</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13013</th>\n",
|
||
" <td>1055.350213</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 13:20:16</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>68 rows × 27 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"8 960.869736 True ... 0 2018-01-01 12:09:35\n",
|
||
"26 975.812632 True ... 0 2018-01-01 15:38:32\n",
|
||
"311 946.358410 True ... 0 2018-01-01 11:51:12\n",
|
||
"651 975.383864 True ... 2 2018-01-03 21:13:17\n",
|
||
"950 907.836523 True ... 2 2018-01-03 05:14:51\n",
|
||
"... ... ... ... ... ...\n",
|
||
"12820 909.973606 True ... 5 2018-02-10 05:11:35\n",
|
||
"12906 983.429244 True ... 6 2018-02-11 06:19:58\n",
|
||
"12918 1136.678150 True ... 6 2018-02-11 16:03:10\n",
|
||
"12919 1105.211803 True ... 6 2018-02-11 05:36:05\n",
|
||
"13013 1055.350213 True ... 6 2018-02-11 13:20:16\n",
|
||
"\n",
|
||
"[68 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.query('Carrier == \"Kibana Airlines\" & AvgTicketPrice > 900.0 & Cancelled == True')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Boolean indexing query"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>960.869736</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 12:09:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26</th>\n",
|
||
" <td>975.812632</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 15:38:32</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>311</th>\n",
|
||
" <td>946.358410</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 11:51:12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>651</th>\n",
|
||
" <td>975.383864</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 21:13:17</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>950</th>\n",
|
||
" <td>907.836523</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 05:14:51</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12820</th>\n",
|
||
" <td>909.973606</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2018-02-10 05:11:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12906</th>\n",
|
||
" <td>983.429244</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 06:19:58</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12918</th>\n",
|
||
" <td>1136.678150</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 16:03:10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12919</th>\n",
|
||
" <td>1105.211803</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 05:36:05</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13013</th>\n",
|
||
" <td>1055.350213</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 13:20:16</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>68 rows × 27 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"8 960.869736 True ... 0 2018-01-01 12:09:35\n",
|
||
"26 975.812632 True ... 0 2018-01-01 15:38:32\n",
|
||
"311 946.358410 True ... 0 2018-01-01 11:51:12\n",
|
||
"651 975.383864 True ... 2 2018-01-03 21:13:17\n",
|
||
"950 907.836523 True ... 2 2018-01-03 05:14:51\n",
|
||
"... ... ... ... ... ...\n",
|
||
"12820 909.973606 True ... 5 2018-02-10 05:11:35\n",
|
||
"12906 983.429244 True ... 6 2018-02-11 06:19:58\n",
|
||
"12918 1136.678150 True ... 6 2018-02-11 16:03:10\n",
|
||
"12919 1105.211803 True ... 6 2018-02-11 05:36:05\n",
|
||
"13013 1055.350213 True ... 6 2018-02-11 13:20:16\n",
|
||
"\n",
|
||
"[68 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights[(pd_flights.Carrier==\"Kibana Airlines\") & \n",
|
||
" (pd_flights.AvgTicketPrice > 900.0) &\n",
|
||
" (pd_flights.Cancelled == True)]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>Cancelled</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>960.869736</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 12:09:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26</th>\n",
|
||
" <td>975.812632</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 15:38:32</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>311</th>\n",
|
||
" <td>946.358410</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 11:51:12</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>651</th>\n",
|
||
" <td>975.383864</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 21:13:17</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>950</th>\n",
|
||
" <td>907.836523</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2018-01-03 05:14:51</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12820</th>\n",
|
||
" <td>909.973606</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2018-02-10 05:11:35</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12906</th>\n",
|
||
" <td>983.429244</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 06:19:58</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12918</th>\n",
|
||
" <td>1136.678150</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 16:03:10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12919</th>\n",
|
||
" <td>1105.211803</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 05:36:05</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13013</th>\n",
|
||
" <td>1055.350213</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 13:20:16</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>68 rows × 27 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice Cancelled ... dayOfWeek timestamp\n",
|
||
"8 960.869736 True ... 0 2018-01-01 12:09:35\n",
|
||
"26 975.812632 True ... 0 2018-01-01 15:38:32\n",
|
||
"311 946.358410 True ... 0 2018-01-01 11:51:12\n",
|
||
"651 975.383864 True ... 2 2018-01-03 21:13:17\n",
|
||
"950 907.836523 True ... 2 2018-01-03 05:14:51\n",
|
||
"... ... ... ... ... ...\n",
|
||
"12820 909.973606 True ... 5 2018-02-10 05:11:35\n",
|
||
"12906 983.429244 True ... 6 2018-02-11 06:19:58\n",
|
||
"12918 1136.678150 True ... 6 2018-02-11 16:03:10\n",
|
||
"12919 1105.211803 True ... 6 2018-02-11 05:36:05\n",
|
||
"13013 1055.350213 True ... 6 2018-02-11 13:20:16\n",
|
||
"\n",
|
||
"[68 rows x 27 columns]"
|
||
]
|
||
},
|
||
"execution_count": 34,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights[(ed_flights.Carrier==\"Kibana Airlines\") & \n",
|
||
" (ed_flights.AvgTicketPrice > 900.0) &\n",
|
||
" (ed_flights.Cancelled == True)]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Function application, GroupBy & window"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.aggs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>sum</th>\n",
|
||
" <td>9.261629e+07</td>\n",
|
||
" <td>8.204365e+06</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0.000000e+00</td>\n",
|
||
" <td>1.000205e+02</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>4.578438e+03</td>\n",
|
||
" <td>2.663969e+02</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" DistanceKilometers AvgTicketPrice\n",
|
||
"sum 9.261629e+07 8.204365e+06\n",
|
||
"min 0.000000e+00 1.000205e+02\n",
|
||
"std 4.578438e+03 2.663969e+02"
|
||
]
|
||
},
|
||
"execution_count": 35,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights[['DistanceKilometers', 'AvgTicketPrice']].aggregate(['sum', 'min', 'std'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"`eland.DataFrame.aggregate` currently only supported numeric columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>sum</th>\n",
|
||
" <td>9.261629e+07</td>\n",
|
||
" <td>8.204365e+06</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0.000000e+00</td>\n",
|
||
" <td>1.000205e+02</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>4.578263e+03</td>\n",
|
||
" <td>2.663867e+02</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" DistanceKilometers AvgTicketPrice\n",
|
||
"sum 9.261629e+07 8.204365e+06\n",
|
||
"min 0.000000e+00 1.000205e+02\n",
|
||
"std 4.578263e+03 2.663867e+02"
|
||
]
|
||
},
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights[['DistanceKilometers', 'AvgTicketPrice']].aggregate(['sum', 'min', 'std'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Computations / descriptive stats"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.count"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 13059\n",
|
||
"Cancelled 13059\n",
|
||
"Carrier 13059\n",
|
||
"Dest 13059\n",
|
||
"DestAirportID 13059\n",
|
||
" ... \n",
|
||
"OriginLocation 13059\n",
|
||
"OriginRegion 13059\n",
|
||
"OriginWeather 13059\n",
|
||
"dayOfWeek 13059\n",
|
||
"timestamp 13059\n",
|
||
"Length: 27, dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 37,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.count()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 13059\n",
|
||
"Cancelled 13059\n",
|
||
"Carrier 13059\n",
|
||
"Dest 13059\n",
|
||
"DestAirportID 13059\n",
|
||
" ... \n",
|
||
"OriginLocation 13059\n",
|
||
"OriginRegion 13059\n",
|
||
"OriginWeather 13059\n",
|
||
"dayOfWeek 13059\n",
|
||
"timestamp 13059\n",
|
||
"Length: 27, dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 38,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.count()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.describe"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>FlightTimeMin</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>628.253689</td>\n",
|
||
" <td>7092.142455</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>511.127842</td>\n",
|
||
" <td>2.835975</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>266.396861</td>\n",
|
||
" <td>4578.438497</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>334.753952</td>\n",
|
||
" <td>1.939439</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>100.020528</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>409.893816</td>\n",
|
||
" <td>2459.705673</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>252.333192</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>640.556668</td>\n",
|
||
" <td>7610.330866</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>503.045170</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>842.185470</td>\n",
|
||
" <td>9736.637600</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>720.416036</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>1199.729053</td>\n",
|
||
" <td>19881.482315</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1902.902032</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice DistanceKilometers ... FlightTimeMin dayOfWeek\n",
|
||
"count 13059.000000 13059.000000 ... 13059.000000 13059.000000\n",
|
||
"mean 628.253689 7092.142455 ... 511.127842 2.835975\n",
|
||
"std 266.396861 4578.438497 ... 334.753952 1.939439\n",
|
||
"min 100.020528 0.000000 ... 0.000000 0.000000\n",
|
||
"25% 409.893816 2459.705673 ... 252.333192 1.000000\n",
|
||
"50% 640.556668 7610.330866 ... 503.045170 3.000000\n",
|
||
"75% 842.185470 9736.637600 ... 720.416036 4.000000\n",
|
||
"max 1199.729053 19881.482315 ... 1902.902032 6.000000\n",
|
||
"\n",
|
||
"[8 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Values returned from `eland.DataFrame.describe` may vary due to results of Elasticsearch aggregations."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AvgTicketPrice</th>\n",
|
||
" <th>DistanceKilometers</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>FlightTimeMin</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" <td>13059.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>628.253689</td>\n",
|
||
" <td>7092.142457</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>511.127842</td>\n",
|
||
" <td>2.835975</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>266.386661</td>\n",
|
||
" <td>4578.263193</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>334.741135</td>\n",
|
||
" <td>1.939365</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>100.020531</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>410.008918</td>\n",
|
||
" <td>2470.545974</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>251.938710</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>640.362667</td>\n",
|
||
" <td>7612.072403</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>503.148975</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>840.617448</td>\n",
|
||
" <td>9738.206675</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>720.026320</td>\n",
|
||
" <td>4.160448</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>1199.729004</td>\n",
|
||
" <td>19881.482422</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1902.901978</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AvgTicketPrice DistanceKilometers ... FlightTimeMin dayOfWeek\n",
|
||
"count 13059.000000 13059.000000 ... 13059.000000 13059.000000\n",
|
||
"mean 628.253689 7092.142457 ... 511.127842 2.835975\n",
|
||
"std 266.386661 4578.263193 ... 334.741135 1.939365\n",
|
||
"min 100.020531 0.000000 ... 0.000000 0.000000\n",
|
||
"25% 410.008918 2470.545974 ... 251.938710 1.000000\n",
|
||
"50% 640.362667 7612.072403 ... 503.148975 3.000000\n",
|
||
"75% 840.617448 9738.206675 ... 720.026320 4.160448\n",
|
||
"max 1199.729004 19881.482422 ... 1902.901978 6.000000\n",
|
||
"\n",
|
||
"[8 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 40,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# NBVAL_IGNORE_OUTPUT\n",
|
||
"ed_flights.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.info"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"Index: 13059 entries, 0 to 13058\n",
|
||
"Data columns (total 27 columns):\n",
|
||
"AvgTicketPrice 13059 non-null float64\n",
|
||
"Cancelled 13059 non-null bool\n",
|
||
"Carrier 13059 non-null object\n",
|
||
"Dest 13059 non-null object\n",
|
||
"DestAirportID 13059 non-null object\n",
|
||
"DestCityName 13059 non-null object\n",
|
||
"DestCountry 13059 non-null object\n",
|
||
"DestLocation 13059 non-null object\n",
|
||
"DestRegion 13059 non-null object\n",
|
||
"DestWeather 13059 non-null object\n",
|
||
"DistanceKilometers 13059 non-null float64\n",
|
||
"DistanceMiles 13059 non-null float64\n",
|
||
"FlightDelay 13059 non-null bool\n",
|
||
"FlightDelayMin 13059 non-null int64\n",
|
||
"FlightDelayType 13059 non-null object\n",
|
||
"FlightNum 13059 non-null object\n",
|
||
"FlightTimeHour 13059 non-null float64\n",
|
||
"FlightTimeMin 13059 non-null float64\n",
|
||
"Origin 13059 non-null object\n",
|
||
"OriginAirportID 13059 non-null object\n",
|
||
"OriginCityName 13059 non-null object\n",
|
||
"OriginCountry 13059 non-null object\n",
|
||
"OriginLocation 13059 non-null object\n",
|
||
"OriginRegion 13059 non-null object\n",
|
||
"OriginWeather 13059 non-null object\n",
|
||
"dayOfWeek 13059 non-null int64\n",
|
||
"timestamp 13059 non-null datetime64[ns]\n",
|
||
"dtypes: bool(2), datetime64[ns](1), float64(5), int64(2), object(17)\n",
|
||
"memory usage: 3.2+ MB\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.info()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'eland.dataframe.DataFrame'>\n",
|
||
"Index: 13059 entries, 0 to 13058\n",
|
||
"Data columns (total 27 columns):\n",
|
||
"AvgTicketPrice 13059 non-null float64\n",
|
||
"Cancelled 13059 non-null bool\n",
|
||
"Carrier 13059 non-null object\n",
|
||
"Dest 13059 non-null object\n",
|
||
"DestAirportID 13059 non-null object\n",
|
||
"DestCityName 13059 non-null object\n",
|
||
"DestCountry 13059 non-null object\n",
|
||
"DestLocation 13059 non-null object\n",
|
||
"DestRegion 13059 non-null object\n",
|
||
"DestWeather 13059 non-null object\n",
|
||
"DistanceKilometers 13059 non-null float64\n",
|
||
"DistanceMiles 13059 non-null float64\n",
|
||
"FlightDelay 13059 non-null bool\n",
|
||
"FlightDelayMin 13059 non-null int64\n",
|
||
"FlightDelayType 13059 non-null object\n",
|
||
"FlightNum 13059 non-null object\n",
|
||
"FlightTimeHour 13059 non-null float64\n",
|
||
"FlightTimeMin 13059 non-null float64\n",
|
||
"Origin 13059 non-null object\n",
|
||
"OriginAirportID 13059 non-null object\n",
|
||
"OriginCityName 13059 non-null object\n",
|
||
"OriginCountry 13059 non-null object\n",
|
||
"OriginLocation 13059 non-null object\n",
|
||
"OriginRegion 13059 non-null object\n",
|
||
"OriginWeather 13059 non-null object\n",
|
||
"dayOfWeek 13059 non-null int64\n",
|
||
"timestamp 13059 non-null datetime64[ns]\n",
|
||
"dtypes: bool(2), datetime64[ns](1), float64(5), int64(2), object(17)\n",
|
||
"memory usage: 96.0 bytes\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.info()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.max, DataFrame.min, DataFrame.mean, DataFrame.sum"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### max"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 1199.729053\n",
|
||
"Cancelled 1.000000\n",
|
||
"DistanceKilometers 19881.482315\n",
|
||
"DistanceMiles 12353.780369\n",
|
||
"FlightDelay 1.000000\n",
|
||
"FlightDelayMin 360.000000\n",
|
||
"FlightTimeHour 31.715034\n",
|
||
"FlightTimeMin 1902.902032\n",
|
||
"dayOfWeek 6.000000\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 43,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.max(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"`eland.DataFrame.max,min,mean,sum` only aggregate numeric columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 1199.729004\n",
|
||
"Cancelled 1.000000\n",
|
||
"DistanceKilometers 19881.482422\n",
|
||
"DistanceMiles 12353.780273\n",
|
||
"FlightDelay 1.000000\n",
|
||
"FlightDelayMin 360.000000\n",
|
||
"FlightTimeHour 31.715034\n",
|
||
"FlightTimeMin 1902.901978\n",
|
||
"dayOfWeek 6.000000\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 44,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.max(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### min"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 100.020528\n",
|
||
"Cancelled 0.000000\n",
|
||
"DistanceKilometers 0.000000\n",
|
||
"DistanceMiles 0.000000\n",
|
||
"FlightDelay 0.000000\n",
|
||
"FlightDelayMin 0.000000\n",
|
||
"FlightTimeHour 0.000000\n",
|
||
"FlightTimeMin 0.000000\n",
|
||
"dayOfWeek 0.000000\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 45,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.min(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 100.020531\n",
|
||
"Cancelled 0.000000\n",
|
||
"DistanceKilometers 0.000000\n",
|
||
"DistanceMiles 0.000000\n",
|
||
"FlightDelay 0.000000\n",
|
||
"FlightDelayMin 0.000000\n",
|
||
"FlightTimeHour 0.000000\n",
|
||
"FlightTimeMin 0.000000\n",
|
||
"dayOfWeek 0.000000\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.min(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### mean"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 628.253689\n",
|
||
"Cancelled 0.128494\n",
|
||
"DistanceKilometers 7092.142455\n",
|
||
"DistanceMiles 4406.853013\n",
|
||
"FlightDelay 0.251168\n",
|
||
"FlightDelayMin 47.335171\n",
|
||
"FlightTimeHour 8.518797\n",
|
||
"FlightTimeMin 511.127842\n",
|
||
"dayOfWeek 2.835975\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 47,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.mean(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 628.253689\n",
|
||
"Cancelled 0.128494\n",
|
||
"DistanceKilometers 7092.142457\n",
|
||
"DistanceMiles 4406.853010\n",
|
||
"FlightDelay 0.251168\n",
|
||
"FlightDelayMin 47.335171\n",
|
||
"FlightTimeHour 8.518797\n",
|
||
"FlightTimeMin 511.127842\n",
|
||
"dayOfWeek 2.835975\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 48,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.mean(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### sum"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 8.204365e+06\n",
|
||
"Cancelled 1.678000e+03\n",
|
||
"DistanceKilometers 9.261629e+07\n",
|
||
"DistanceMiles 5.754909e+07\n",
|
||
"FlightDelay 3.280000e+03\n",
|
||
"FlightDelayMin 6.181500e+05\n",
|
||
"FlightTimeHour 1.112470e+05\n",
|
||
"FlightTimeMin 6.674818e+06\n",
|
||
"dayOfWeek 3.703500e+04\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 49,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.sum(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AvgTicketPrice 8.204365e+06\n",
|
||
"Cancelled 1.678000e+03\n",
|
||
"DistanceKilometers 9.261629e+07\n",
|
||
"DistanceMiles 5.754909e+07\n",
|
||
"FlightDelay 3.280000e+03\n",
|
||
"FlightDelayMin 6.181500e+05\n",
|
||
"FlightTimeHour 1.112470e+05\n",
|
||
"FlightTimeMin 6.674818e+06\n",
|
||
"dayOfWeek 3.703500e+04\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 50,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.sum(numeric_only=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.nunique"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 51,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Carrier 4\n",
|
||
"Origin 156\n",
|
||
"Dest 156\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 51,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights[['Carrier', 'Origin', 'Dest']].nunique()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Carrier 4\n",
|
||
"Origin 156\n",
|
||
"Dest 156\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights[['Carrier', 'Origin', 'Dest']].nunique()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### DataFrame.drop"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 53,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Carrier</th>\n",
|
||
" <th>DestRegion</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 00:00:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 18:27:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 17:11:14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 10:33:28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 05:13:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 20:42:25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>CH-ZH</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 01:41:57</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>RU-AMU</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 04:09:27</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 08:28:21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>US-DC</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 14:54:34</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>13059 rows × 20 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Carrier DestRegion ... dayOfWeek timestamp\n",
|
||
"0 Kibana Airlines SE-BD ... 0 2018-01-01 00:00:00\n",
|
||
"1 Logstash Airways IT-34 ... 0 2018-01-01 18:27:00\n",
|
||
"2 Logstash Airways IT-34 ... 0 2018-01-01 17:11:14\n",
|
||
"3 Kibana Airlines IT-34 ... 0 2018-01-01 10:33:28\n",
|
||
"4 Kibana Airlines SE-BD ... 0 2018-01-01 05:13:00\n",
|
||
"... ... ... ... ... ...\n",
|
||
"13054 Logstash Airways SE-BD ... 6 2018-02-11 20:42:25\n",
|
||
"13055 Logstash Airways CH-ZH ... 6 2018-02-11 01:41:57\n",
|
||
"13056 Logstash Airways RU-AMU ... 6 2018-02-11 04:09:27\n",
|
||
"13057 JetBeats SE-BD ... 6 2018-02-11 08:28:21\n",
|
||
"13058 JetBeats US-DC ... 6 2018-02-11 14:54:34\n",
|
||
"\n",
|
||
"[13059 rows x 20 columns]"
|
||
]
|
||
},
|
||
"execution_count": 53,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.drop(columns=['AvgTicketPrice', \n",
|
||
" 'Cancelled', \n",
|
||
" 'DestLocation',\n",
|
||
" 'Dest', \n",
|
||
" 'DestAirportID', \n",
|
||
" 'DestCityName', \n",
|
||
" 'DestCountry'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 54,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Carrier</th>\n",
|
||
" <th>DestRegion</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>dayOfWeek</th>\n",
|
||
" <th>timestamp</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 00:00:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 18:27:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 17:11:14</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>IT-34</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 10:33:28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Kibana Airlines</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>2018-01-01 05:13:00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13054</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 20:42:25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13055</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>CH-ZH</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 01:41:57</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13056</th>\n",
|
||
" <td>Logstash Airways</td>\n",
|
||
" <td>RU-AMU</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 04:09:27</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13057</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>SE-BD</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 08:28:21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13058</th>\n",
|
||
" <td>JetBeats</td>\n",
|
||
" <td>US-DC</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>2018-02-11 14:54:34</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>\n",
|
||
"<p>13059 rows × 20 columns</p>"
|
||
],
|
||
"text/plain": [
|
||
" Carrier DestRegion ... dayOfWeek timestamp\n",
|
||
"0 Kibana Airlines SE-BD ... 0 2018-01-01 00:00:00\n",
|
||
"1 Logstash Airways IT-34 ... 0 2018-01-01 18:27:00\n",
|
||
"2 Logstash Airways IT-34 ... 0 2018-01-01 17:11:14\n",
|
||
"3 Kibana Airlines IT-34 ... 0 2018-01-01 10:33:28\n",
|
||
"4 Kibana Airlines SE-BD ... 0 2018-01-01 05:13:00\n",
|
||
"... ... ... ... ... ...\n",
|
||
"13054 Logstash Airways SE-BD ... 6 2018-02-11 20:42:25\n",
|
||
"13055 Logstash Airways CH-ZH ... 6 2018-02-11 01:41:57\n",
|
||
"13056 Logstash Airways RU-AMU ... 6 2018-02-11 04:09:27\n",
|
||
"13057 JetBeats SE-BD ... 6 2018-02-11 08:28:21\n",
|
||
"13058 JetBeats US-DC ... 6 2018-02-11 14:54:34\n",
|
||
"\n",
|
||
"[13059 rows x 20 columns]"
|
||
]
|
||
},
|
||
"execution_count": 54,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.drop(columns=['AvgTicketPrice', \n",
|
||
" 'Cancelled', \n",
|
||
" 'DestLocation',\n",
|
||
" 'Dest', \n",
|
||
" 'DestAirportID', \n",
|
||
" 'DestCityName', \n",
|
||
" 'DestCountry'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Plotting"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 55,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 720x720 with 9 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd_flights.select_dtypes(include=np.number).hist(figsize=[10,10])\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 56,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 720x720 with 9 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"ed_flights.select_dtypes(include=np.number).hist(figsize=[10,10])\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Elasticsearch utilities"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 57,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"ed_flights2 = ed_flights[(ed_flights.OriginAirportID == 'AMS') & (ed_flights.FlightDelayMin > 60)]\n",
|
||
"ed_flights2 = ed_flights2[['timestamp', 'OriginAirportID', 'DestAirportID', 'FlightDelayMin']]\n",
|
||
"ed_flights2 = ed_flights2.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 58,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"index_pattern: flights\n",
|
||
"Index:\n",
|
||
" index_field: _id\n",
|
||
" is_source_field: False\n",
|
||
"Mappings:\n",
|
||
" capabilities:\n",
|
||
" es_field_name is_source es_dtype es_date_format pd_dtype is_searchable is_aggregatable is_scripted aggregatable_es_field_name\n",
|
||
"timestamp timestamp True date strict_date_hour_minute_second datetime64[ns] True True False timestamp\n",
|
||
"OriginAirportID OriginAirportID True keyword None object True True False OriginAirportID\n",
|
||
"DestAirportID DestAirportID True keyword None object True True False DestAirportID\n",
|
||
"FlightDelayMin FlightDelayMin True integer None int64 True True False FlightDelayMin\n",
|
||
"Operations:\n",
|
||
" tasks: [('boolean_filter': ('boolean_filter': {'bool': {'must': [{'term': {'OriginAirportID': 'AMS'}}, {'range': {'FlightDelayMin': {'gt': 60}}}]}})), ('tail': ('sort_field': '_doc', 'count': 5))]\n",
|
||
" size: 5\n",
|
||
" sort_params: _doc:desc\n",
|
||
" _source: ['timestamp', 'OriginAirportID', 'DestAirportID', 'FlightDelayMin']\n",
|
||
" body: {'query': {'bool': {'must': [{'term': {'OriginAirportID': 'AMS'}}, {'range': {'FlightDelayMin': {'gt': 60}}}]}}}\n",
|
||
" post_processing: [('sort_index')]\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(ed_flights2.info_es())"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.7.5"
|
||
},
|
||
"pycharm": {
|
||
"stem_cell": {
|
||
"cell_type": "raw",
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"source": []
|
||
}
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|