mirror of
https://github.com/elastic/eland.git
synced 2025-07-11 00:02:14 +08:00
* Adding python 3.5 compatibility. Main issue is ordering of dictionaries. * Updating notebooks with 3.7 results. * Removing tempoorary code. * Defaulting to OrderedDict for python 3.5 + lint all code All code reformated by PyCharm and inspection results analysed. * Adding support for multiple arithmetic operations. Added new 'arithmetics' file to manage this process. More tests to be added + cleanup. * Signficant refactor to arithmetics and mappings. Work in progress. Tests don't pass. * Major refactor to Mappings. Field name mappings were stored in different places (Mappings, QueryCompiler, Operations) and needed to be keep in sync. With the addition of complex arithmetic operations this became complex and difficult to maintain. Therefore, all field naming is now in 'FieldMappings' which replaces 'Mappings'. Note this commit removes the cache for some of the mapped values and so the code is SIGNIFICANTLY slower on large indices. In addition, the addition of date_format to Mappings has been removed. This again added more unncessary complexity. * Adding OrderedDict for 3.5 compatibility * Fixes to ordering issues with 3.5 * Adding simple cache for mappings in flatten Improves performance significantly on large datasets (>10000 rows). * Adding updated notebooks (new info_es). All tests (doc + nbval + pytest) pass.
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 0x11f14aed0>"
|
||
]
|
||
},
|
||
"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.739008</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>640.387285</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>842.254990</td>\n",
|
||
" <td>9735.082407</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>720.534532</td>\n",
|
||
" <td>4.055556</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.739008 1.000000\n",
|
||
"50% 640.387285 7612.072403 ... 503.148975 3.000000\n",
|
||
"75% 842.254990 9735.082407 ... 720.534532 4.055556\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 None 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
|
||
}
|