mirror of
https://github.com/elastic/eland.git
synced 2025-07-11 00:02:14 +08:00
3753 lines
166 KiB
Plaintext
3753 lines
166 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 0x7fc6765aefd0>"
|
||
]
|
||
},
|
||
"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.012798</td>\n",
|
||
" <td>2470.545974</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>251.682199</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>640.362667</td>\n",
|
||
" <td>7612.072403</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>503.148975</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>842.233478</td>\n",
|
||
" <td>9735.660463</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>720.572969</td>\n",
|
||
" <td>4.271242</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.012798 2470.545974 ... 251.682199 1.000000\n",
|
||
"50% 640.362667 7612.072403 ... 503.148975 3.000000\n",
|
||
"75% 842.233478 9735.660463 ... 720.572969 4.271242\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",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 AvgTicketPrice 13059 non-null float64 \n",
|
||
" 1 Cancelled 13059 non-null bool \n",
|
||
" 2 Carrier 13059 non-null object \n",
|
||
" 3 Dest 13059 non-null object \n",
|
||
" 4 DestAirportID 13059 non-null object \n",
|
||
" 5 DestCityName 13059 non-null object \n",
|
||
" 6 DestCountry 13059 non-null object \n",
|
||
" 7 DestLocation 13059 non-null object \n",
|
||
" 8 DestRegion 13059 non-null object \n",
|
||
" 9 DestWeather 13059 non-null object \n",
|
||
" 10 DistanceKilometers 13059 non-null float64 \n",
|
||
" 11 DistanceMiles 13059 non-null float64 \n",
|
||
" 12 FlightDelay 13059 non-null bool \n",
|
||
" 13 FlightDelayMin 13059 non-null int64 \n",
|
||
" 14 FlightDelayType 13059 non-null object \n",
|
||
" 15 FlightNum 13059 non-null object \n",
|
||
" 16 FlightTimeHour 13059 non-null float64 \n",
|
||
" 17 FlightTimeMin 13059 non-null float64 \n",
|
||
" 18 Origin 13059 non-null object \n",
|
||
" 19 OriginAirportID 13059 non-null object \n",
|
||
" 20 OriginCityName 13059 non-null object \n",
|
||
" 21 OriginCountry 13059 non-null object \n",
|
||
" 22 OriginLocation 13059 non-null object \n",
|
||
" 23 OriginRegion 13059 non-null object \n",
|
||
" 24 OriginWeather 13059 non-null object \n",
|
||
" 25 dayOfWeek 13059 non-null int64 \n",
|
||
" 26 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",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 AvgTicketPrice 13059 non-null float64 \n",
|
||
" 1 Cancelled 13059 non-null bool \n",
|
||
" 2 Carrier 13059 non-null object \n",
|
||
" 3 Dest 13059 non-null object \n",
|
||
" 4 DestAirportID 13059 non-null object \n",
|
||
" 5 DestCityName 13059 non-null object \n",
|
||
" 6 DestCountry 13059 non-null object \n",
|
||
" 7 DestLocation 13059 non-null object \n",
|
||
" 8 DestRegion 13059 non-null object \n",
|
||
" 9 DestWeather 13059 non-null object \n",
|
||
" 10 DistanceKilometers 13059 non-null float64 \n",
|
||
" 11 DistanceMiles 13059 non-null float64 \n",
|
||
" 12 FlightDelay 13059 non-null bool \n",
|
||
" 13 FlightDelayMin 13059 non-null int64 \n",
|
||
" 14 FlightDelayType 13059 non-null object \n",
|
||
" 15 FlightNum 13059 non-null object \n",
|
||
" 16 FlightTimeHour 13059 non-null float64 \n",
|
||
" 17 FlightTimeMin 13059 non-null float64 \n",
|
||
" 18 Origin 13059 non-null object \n",
|
||
" 19 OriginAirportID 13059 non-null object \n",
|
||
" 20 OriginCityName 13059 non-null object \n",
|
||
" 21 OriginCountry 13059 non-null object \n",
|
||
" 22 OriginLocation 13059 non-null object \n",
|
||
" 23 OriginRegion 13059 non-null object \n",
|
||
" 24 OriginWeather 13059 non-null object \n",
|
||
" 25 dayOfWeek 13059 non-null int64 \n",
|
||
" 26 timestamp 13059 non-null datetime64[ns]\n",
|
||
"dtypes: bool(2), datetime64[ns](1), float64(5), int64(2), object(17)\n",
|
||
"memory usage: 80.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.73\n",
|
||
"Cancelled True\n",
|
||
"DistanceKilometers 19881.5\n",
|
||
"DistanceMiles 12353.8\n",
|
||
"FlightDelay True\n",
|
||
"FlightDelayMin 360\n",
|
||
"FlightTimeHour 31.715\n",
|
||
"FlightTimeMin 1902.9\n",
|
||
"dayOfWeek 6\n",
|
||
"dtype: object"
|
||
]
|
||
},
|
||
"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.73\n",
|
||
"Cancelled True\n",
|
||
"DistanceKilometers 19881.5\n",
|
||
"DistanceMiles 12353.8\n",
|
||
"FlightDelay True\n",
|
||
"FlightDelayMin 360\n",
|
||
"FlightTimeHour 31.715\n",
|
||
"FlightTimeMin 1902.9\n",
|
||
"dayOfWeek 6\n",
|
||
"dtype: object"
|
||
]
|
||
},
|
||
"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.021\n",
|
||
"Cancelled False\n",
|
||
"DistanceKilometers 0\n",
|
||
"DistanceMiles 0\n",
|
||
"FlightDelay False\n",
|
||
"FlightDelayMin 0\n",
|
||
"FlightTimeHour 0\n",
|
||
"FlightTimeMin 0\n",
|
||
"dayOfWeek 0\n",
|
||
"dtype: object"
|
||
]
|
||
},
|
||
"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.021\n",
|
||
"Cancelled False\n",
|
||
"DistanceKilometers 0\n",
|
||
"DistanceMiles 0\n",
|
||
"FlightDelay False\n",
|
||
"FlightDelayMin 0\n",
|
||
"FlightTimeHour 0\n",
|
||
"FlightTimeMin 0\n",
|
||
"dayOfWeek 0\n",
|
||
"dtype: object"
|
||
]
|
||
},
|
||
"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": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/home/daniel/PycharmProjects/eland/venv/lib/python3.6/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
|
||
"The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
|
||
" layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
|
||
"/home/daniel/PycharmProjects/eland/venv/lib/python3.6/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
|
||
"The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
|
||
" layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
|
||
"/home/daniel/PycharmProjects/eland/venv/lib/python3.6/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
|
||
"The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
|
||
" if not layout[ax.rowNum + 1, ax.colNum]:\n",
|
||
"/home/daniel/PycharmProjects/eland/venv/lib/python3.6/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
|
||
"The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
|
||
" if not layout[ax.rowNum + 1, ax.colNum]:\n"
|
||
]
|
||
},
|
||
{
|
||
"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": 59,
|
||
"metadata": {
|
||
"pycharm": {
|
||
"is_executing": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"index_pattern: flights\n",
|
||
"Index:\n",
|
||
" index_field: _id\n",
|
||
" is_source_field: False\n",
|
||
"Mappings:\n",
|
||
" capabilities:\n",
|
||
" es_field_name is_source es_dtype es_date_format pd_dtype is_searchable is_aggregatable is_scripted aggregatable_es_field_name\n",
|
||
"timestamp timestamp True date strict_date_hour_minute_second datetime64[ns] True True False timestamp\n",
|
||
"OriginAirportID OriginAirportID True keyword None object True True False OriginAirportID\n",
|
||
"DestAirportID DestAirportID True keyword None object True True False DestAirportID\n",
|
||
"FlightDelayMin FlightDelayMin True integer None int64 True True False FlightDelayMin\n",
|
||
"Operations:\n",
|
||
" tasks: [('boolean_filter': ('boolean_filter': {'bool': {'must': [{'term': {'OriginAirportID': 'AMS'}}, {'range': {'FlightDelayMin': {'gt': 60}}}]}})), ('tail': ('sort_field': '_doc', 'count': 5))]\n",
|
||
" size: 5\n",
|
||
" sort_params: _doc:desc\n",
|
||
" _source: ['timestamp', 'OriginAirportID', 'DestAirportID', 'FlightDelayMin']\n",
|
||
" body: {'query': {'bool': {'must': [{'term': {'OriginAirportID': 'AMS'}}, {'range': {'FlightDelayMin': {'gt': 60}}}]}}}\n",
|
||
" post_processing: [('sort_index')]\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(ed_flights2.info_es())"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.6.9"
|
||
},
|
||
"pycharm": {
|
||
"stem_cell": {
|
||
"cell_type": "raw",
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"source": []
|
||
}
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|