{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Module 5\n", "\n", "## Video 25: Filtering by Vessel\n", "**Python for the Energy Industry**\n", "\n", "[Vessels endpoint documentation.](https://vortechsa.github.io/python-sdk/endpoints/vessels/)\n", "\n", "By now, you should be well used to the process of filtering Cargo Movements, and searching the relevant endpoints to get IDs of interest for filtering. This works in exactly the same way for filtering Cargo Movements that are being carried on a known Vessel:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Some initial imports / settings\n", "from datetime import datetime\n", "from dateutil.relativedelta import relativedelta\n", "import vortexasdk as v\n", "\n", "now = datetime.utcnow()\n", "one_month_ago = now - relativedelta(months=1)\n", "\n", "required_columns = [\"vessels.0.name\",\"vessels.0.vessel_class\",\"product.group.label\",\"product.grade.label\",\"quantity\",\n", " \"status\",\"events.cargo_port_load_event.0.location.port.label\",\"events.cargo_port_load_event.0.end_timestamp\",\n", " \"events.cargo_port_unload_event.0.location.port.label\",\"events.cargo_port_unload_event.0.end_timestamp\"]\n", "\n", "new_labels = [\"vessel_name\",\"vessel_class\",\"product_group\",\"product_grade\",\"quantity\",\"status\",\"loading_port\",\"loading_finish\",\"unloading_port\",\"unloading_finish\"]\n", "\n", "relabel = dict(zip(required_columns,new_labels))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
vessel_namevessel_classproduct_groupproduct_gradequantitystatusloading_portloading_finishunloading_portunloading_finish
0CRIMSON PEARLhandymaxClean Petroleum ProductsNaN292375unloaded_stateBrofjorden [SE]2021-01-12 01:33:36+00:00Amsterdam [NL]2021-01-16 05:50:14+00:00
1OCEANIC CRIMSONgeneral_purposeClean Petroleum ProductsNaN57142unloaded_stateHamburg [DE]2021-01-10 18:03:14+00:00Bejaia [DZ]2021-01-23 15:22:33+00:00
2CRIMSON RAYgeneral_purposeClean Petroleum ProductsNaN17730unloaded_stateAqaba [JO]2021-01-23 19:17:56+00:00Barcelona [ES]2021-02-03 08:30:38+00:00
3CRIMSON PEARLhandymaxClean Petroleum ProductsMotor Spirit181794transiting_stateAntwerp [BE]2021-01-22 23:40:00+00:00Conakry [GN]NaT
4LADY ROISEsgcClean Petroleum ProductsNaN13284unloaded_stateDaesan [KR]2021-01-30 10:56:38+00:00Kaohsiung [TW]2021-02-03 10:05:07+00:00
5SAEHAN SELINAsgcClean Petroleum ProductsNaN18982unloaded_stateDaesan [KR]2021-01-24 21:08:52+00:00Dongying [CN]2021-02-03 05:35:44+00:00
6SAEHAN VIRTUSsgcClean Petroleum ProductsNaN20580unloaded_stateDaesan [KR]2021-01-23 21:01:02+00:00Mizushima [JP]2021-02-04 08:39:12+00:00
7SAEHAN SELINAsgcClean Petroleum ProductsNaN20580loading_stateDaesan [KR]2021-02-09 08:04:59+00:00Cao Jing [CN]NaT
8SAEHAN VIRTUSsgcClean Petroleum ProductsNaN20240unloaded_stateJiangyin [CN]2021-01-17 23:15:33+00:00Ulsan, Onsan [KR]2021-01-20 14:47:25+00:00
9SAEHAN VIRTUSsgcClean Petroleum ProductsNaN20240transiting_stateDaesan [KR]2021-02-07 15:31:59+00:00NaNNaT
10SAEHAN SELINAsgcClean Petroleum ProductsNaN20580unloaded_stateDaesan [KR]2021-01-17 23:49:51+00:00Lianyungang [CN]2021-01-20 04:36:55+00:00
11CRIMSON PEARLhandymaxClean Petroleum ProductsMotor Spirit123940unloaded_stateAntwerp [BE]2021-01-22 23:40:00+00:00Freetown [SL]2021-02-06 11:26:30+00:00
12LADY ROISEsgcClean Petroleum ProductsNaN14768unloaded_stateUlsan, Onsan [KR]2021-01-19 18:24:41+00:00Kaohsiung [TW]2021-01-24 03:45:55+00:00
13LADY ROISEsgcClean Petroleum ProductsNaN14768unloaded_stateDaesan [KR]2021-01-11 21:58:38+00:00Taixing [CN]2021-01-17 02:52:13+00:00
14OCEANIC CRIMSONgeneral_purposeClean Petroleum ProductsNaN90673transiting_stateNikolayev (Mykolaiv) [UA]2021-02-07 22:22:30+00:00Cartagena [ES]NaT
\n", "
" ], "text/plain": [ " vessel_name vessel_class product_group product_grade \\\n", "0 CRIMSON PEARL handymax Clean Petroleum Products NaN \n", "1 OCEANIC CRIMSON general_purpose Clean Petroleum Products NaN \n", "2 CRIMSON RAY general_purpose Clean Petroleum Products NaN \n", "3 CRIMSON PEARL handymax Clean Petroleum Products Motor Spirit \n", "4 LADY ROISE sgc Clean Petroleum Products NaN \n", "5 SAEHAN SELINA sgc Clean Petroleum Products NaN \n", "6 SAEHAN VIRTUS sgc Clean Petroleum Products NaN \n", "7 SAEHAN SELINA sgc Clean Petroleum Products NaN \n", "8 SAEHAN VIRTUS sgc Clean Petroleum Products NaN \n", "9 SAEHAN VIRTUS sgc Clean Petroleum Products NaN \n", "10 SAEHAN SELINA sgc Clean Petroleum Products NaN \n", "11 CRIMSON PEARL handymax Clean Petroleum Products Motor Spirit \n", "12 LADY ROISE sgc Clean Petroleum Products NaN \n", "13 LADY ROISE sgc Clean Petroleum Products NaN \n", "14 OCEANIC CRIMSON general_purpose Clean Petroleum Products NaN \n", "\n", " quantity status loading_port \\\n", "0 292375 unloaded_state Brofjorden [SE] \n", "1 57142 unloaded_state Hamburg [DE] \n", "2 17730 unloaded_state Aqaba [JO] \n", "3 181794 transiting_state Antwerp [BE] \n", "4 13284 unloaded_state Daesan [KR] \n", "5 18982 unloaded_state Daesan [KR] \n", "6 20580 unloaded_state Daesan [KR] \n", "7 20580 loading_state Daesan [KR] \n", "8 20240 unloaded_state Jiangyin [CN] \n", "9 20240 transiting_state Daesan [KR] \n", "10 20580 unloaded_state Daesan [KR] \n", "11 123940 unloaded_state Antwerp [BE] \n", "12 14768 unloaded_state Ulsan, Onsan [KR] \n", "13 14768 unloaded_state Daesan [KR] \n", "14 90673 transiting_state Nikolayev (Mykolaiv) [UA] \n", "\n", " loading_finish unloading_port unloading_finish \n", "0 2021-01-12 01:33:36+00:00 Amsterdam [NL] 2021-01-16 05:50:14+00:00 \n", "1 2021-01-10 18:03:14+00:00 Bejaia [DZ] 2021-01-23 15:22:33+00:00 \n", "2 2021-01-23 19:17:56+00:00 Barcelona [ES] 2021-02-03 08:30:38+00:00 \n", "3 2021-01-22 23:40:00+00:00 Conakry [GN] NaT \n", "4 2021-01-30 10:56:38+00:00 Kaohsiung [TW] 2021-02-03 10:05:07+00:00 \n", "5 2021-01-24 21:08:52+00:00 Dongying [CN] 2021-02-03 05:35:44+00:00 \n", "6 2021-01-23 21:01:02+00:00 Mizushima [JP] 2021-02-04 08:39:12+00:00 \n", "7 2021-02-09 08:04:59+00:00 Cao Jing [CN] NaT \n", "8 2021-01-17 23:15:33+00:00 Ulsan, Onsan [KR] 2021-01-20 14:47:25+00:00 \n", "9 2021-02-07 15:31:59+00:00 NaN NaT \n", "10 2021-01-17 23:49:51+00:00 Lianyungang [CN] 2021-01-20 04:36:55+00:00 \n", "11 2021-01-22 23:40:00+00:00 Freetown [SL] 2021-02-06 11:26:30+00:00 \n", "12 2021-01-19 18:24:41+00:00 Kaohsiung [TW] 2021-01-24 03:45:55+00:00 \n", "13 2021-01-11 21:58:38+00:00 Taixing [CN] 2021-01-17 02:52:13+00:00 \n", "14 2021-02-07 22:22:30+00:00 Cartagena [ES] NaT " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get ID for all vessels with 'CRIMSON' in the name\n", "crimson_id = [ves['id'] for ves in v.Vessels().search(term='CRIMSON')]\n", "\n", "# filter for cargo movements on CRIMSON\n", "crimson_cm = v.CargoMovements().search(\n", " filter_activity=\"loading_state\",\n", " filter_time_min=one_month_ago,\n", " filter_time_max=now,\n", " filter_vessels=crimson_id)\n", "\n", "crimson_cm.to_df(columns=required_columns).rename(relabel,axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way of using the Vessels endpoint is to limit searches based on vessel class. Say we are interested only in VLCC movements from Saudi Arabia:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# get all vessels of vlcc class\n", "vlcc = v.Vessels().search(vessel_classes='vlcc')\n", "\n", "# get the ids of these vessels\n", "vlcc_ids = [ves['id'] for ves in vlcc]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# saudi arabia id\n", "sa_search = v.Geographies().search(\"Saudi Arabia\",exact_term_match=True)\n", "assert len(sa_search) == 1\n", "sa_ID = sa_search[0]['id']\n", "\n", "# filter for vlcc movements out of saudi arabia\n", "vlcc_query = v.CargoMovements().search(\n", " filter_activity=\"loading_state\",\n", " filter_time_min=one_month_ago,\n", " filter_time_max=now,\n", " filter_vessels=vlcc_ids,\n", " filter_origins=sa_ID)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
vessel_namevessel_classproduct_groupproduct_gradequantitystatusloading_portloading_finishunloading_portunloading_finish
0KASAGISANvlcc_plusCrude/CondensatesArab Medium2110718unloaded_stateJuaymah Terminal [SA]2020-11-14 07:16:42+00:00Quanzhou [CN]2020-12-07 08:53:54+00:00
1NEW PROSPECTvlcc_plusCrude/CondensatesArab Light1969827transiting_stateJuaymah Terminal [SA]2020-11-26 23:17:14+00:00Kaohsiung [TW]NaT
2C.MIGHTYvlcc_plusCrude/CondensatesArab Medium2035637transiting_stateJuaymah Terminal [SA]2020-11-21 08:56:21+00:00Zhoushan [CN]NaT
3GASSANvlcc_plusCrude/CondensatesArab Light301149transiting_stateRas Tanura [SA]2020-11-12 05:32:48+00:00Sendai, Miyagi [JP]NaT
4TENRYUvlcc_plusCrude/CondensatesArab Light565346transiting_stateRas Tanura [SA]2020-11-17 16:49:22+00:00Singapore [SG]NaT
.................................
102ABQAIQvlcc_plusCrude/CondensatesArab Light2102642transiting_stateYanbu Industrial Port [SA]2020-12-10 00:34:23+00:00Ain Sukhna [EG]NaT
103M.T. TENJUNvlcc_plusCrude/CondensatesArab Heavy591455loading_stateRas Tanura [SA]2020-12-11 10:32:47+00:00NaNNaT
104ATHINA IIvlcc_plusCrude/CondensatesArab Heavy1383057transiting_stateJuaymah Terminal [SA]2020-12-04 02:22:16+00:00New Mangalore [IN]NaT
105ABQAIQvlcc_plusCrude/CondensatesArab Light2102705unloaded_stateYanbu Industrial Port [SA]2020-11-27 23:27:01+00:00Ain Sukhna [EG]2020-12-04 20:17:20+00:00
106ENEOS TOKYOvlcc_plusCrude/CondensatesArab Light760348transiting_stateRas Tanura [SA]2020-12-09 01:49:46+00:00Fujairah [AE]NaT
\n", "

107 rows × 10 columns

\n", "
" ], "text/plain": [ " vessel_name vessel_class product_group product_grade quantity \\\n", "0 KASAGISAN vlcc_plus Crude/Condensates Arab Medium 2110718 \n", "1 NEW PROSPECT vlcc_plus Crude/Condensates Arab Light 1969827 \n", "2 C.MIGHTY vlcc_plus Crude/Condensates Arab Medium 2035637 \n", "3 GASSAN vlcc_plus Crude/Condensates Arab Light 301149 \n", "4 TENRYU vlcc_plus Crude/Condensates Arab Light 565346 \n", ".. ... ... ... ... ... \n", "102 ABQAIQ vlcc_plus Crude/Condensates Arab Light 2102642 \n", "103 M.T. TENJUN vlcc_plus Crude/Condensates Arab Heavy 591455 \n", "104 ATHINA II vlcc_plus Crude/Condensates Arab Heavy 1383057 \n", "105 ABQAIQ vlcc_plus Crude/Condensates Arab Light 2102705 \n", "106 ENEOS TOKYO vlcc_plus Crude/Condensates Arab Light 760348 \n", "\n", " status loading_port loading_finish \\\n", "0 unloaded_state Juaymah Terminal [SA] 2020-11-14 07:16:42+00:00 \n", "1 transiting_state Juaymah Terminal [SA] 2020-11-26 23:17:14+00:00 \n", "2 transiting_state Juaymah Terminal [SA] 2020-11-21 08:56:21+00:00 \n", "3 transiting_state Ras Tanura [SA] 2020-11-12 05:32:48+00:00 \n", "4 transiting_state Ras Tanura [SA] 2020-11-17 16:49:22+00:00 \n", ".. ... ... ... \n", "102 transiting_state Yanbu Industrial Port [SA] 2020-12-10 00:34:23+00:00 \n", "103 loading_state Ras Tanura [SA] 2020-12-11 10:32:47+00:00 \n", "104 transiting_state Juaymah Terminal [SA] 2020-12-04 02:22:16+00:00 \n", "105 unloaded_state Yanbu Industrial Port [SA] 2020-11-27 23:27:01+00:00 \n", "106 transiting_state Ras Tanura [SA] 2020-12-09 01:49:46+00:00 \n", "\n", " unloading_port unloading_finish \n", "0 Quanzhou [CN] 2020-12-07 08:53:54+00:00 \n", "1 Kaohsiung [TW] NaT \n", "2 Zhoushan [CN] NaT \n", "3 Sendai, Miyagi [JP] NaT \n", "4 Singapore [SG] NaT \n", ".. ... ... \n", "102 Ain Sukhna [EG] NaT \n", "103 NaN NaT \n", "104 New Mangalore [IN] NaT \n", "105 Ain Sukhna [EG] 2020-12-04 20:17:20+00:00 \n", "106 Fujairah [AE] NaT \n", "\n", "[107 rows x 10 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# convert to dataframe\n", "vlcc_query.to_df(columns=required_columns).rename(relabel,axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Storing IDs in a Dictionary\n", "\n", "If there is a group of vessels of interest, it may be useful to store their IDs in a dictionary for easy access (of course, this applies to IDs for all other types of filter, as well)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnameimovessel_class
0a8daaa7b46f01a01b0b003f51116882c6df4b18210c2b8...DELTA GLORY9602617vlcc_plus
151d8eeb4fbb6691756594f6143e1b3ce8b74437f50c800...ENEOS GLORY9851608vlcc_plus
205263ff056489d1cf2c264e708e6e8bb1da502a216ece6...V. GLORY9849851vlcc_plus
36a9b0048c3356d9975bef63da82e3a1ec04c9668066353...ATHENIAN GLORY9429302vlcc_plus
45f9d7b1329f44ef585bfa506d1d0c52a16eb3d5ef01c1b...CARIBBEAN GLORY9788875vlcc_plus
7c7cd0caacfc8d5b1ffafe6a623cd0c437843fb76100a58...BALTIC GLORY9307645vlcc_plus
9e6ff63f16630fdb1e82d856f3e3c2466ed8359d41a43d7...LANDBRIDGE GLORY9828778vlcc_plus
148faaab9fad4706d8bd19d908d55ab4368fa28ef422893e...PLATA GLORY9172674vlcc_plus
\n", "
" ], "text/plain": [ " id name \\\n", "0 a8daaa7b46f01a01b0b003f51116882c6df4b18210c2b8... DELTA GLORY \n", "1 51d8eeb4fbb6691756594f6143e1b3ce8b74437f50c800... ENEOS GLORY \n", "2 05263ff056489d1cf2c264e708e6e8bb1da502a216ece6... V. GLORY \n", "3 6a9b0048c3356d9975bef63da82e3a1ec04c9668066353... ATHENIAN GLORY \n", "4 5f9d7b1329f44ef585bfa506d1d0c52a16eb3d5ef01c1b... CARIBBEAN GLORY \n", "7 c7cd0caacfc8d5b1ffafe6a623cd0c437843fb76100a58... BALTIC GLORY \n", "9 e6ff63f16630fdb1e82d856f3e3c2466ed8359d41a43d7... LANDBRIDGE GLORY \n", "14 8faaab9fad4706d8bd19d908d55ab4368fa28ef422893e... PLATA GLORY \n", "\n", " imo vessel_class \n", "0 9602617 vlcc_plus \n", "1 9851608 vlcc_plus \n", "2 9849851 vlcc_plus \n", "3 9429302 vlcc_plus \n", "4 9788875 vlcc_plus \n", "7 9307645 vlcc_plus \n", "9 9828778 vlcc_plus \n", "14 9172674 vlcc_plus " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# search for all vlcc vessels with the term 'glory'\n", "vlcc_glory = v.Vessels().search(vessel_classes='vlcc',term='glory')\n", "vlcc_glory_df = vlcc_glory.to_df()\n", "\n", "# limit to those with 'glory' in the name\n", "vlcc_glory_df = vlcc_glory_df[vlcc_glory_df['name'].str.contains('GLORY')]\n", "vlcc_glory_df" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "vlcc_glory_dict = dict(zip(vlcc_glory_df['name'],vlcc_glory_df['id']))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'DELTA GLORY': 'a8daaa7b46f01a01b0b003f51116882c6df4b18210c2b8c26e96dccac3eba696',\n", " 'ENEOS GLORY': '51d8eeb4fbb6691756594f6143e1b3ce8b74437f50c80062785c1101f46aa652',\n", " 'V. GLORY': '05263ff056489d1cf2c264e708e6e8bb1da502a216ece68cfeee1105307dbd0a',\n", " 'ATHENIAN GLORY': '6a9b0048c3356d9975bef63da82e3a1ec04c966806635377ae6aa9b42d97c66e',\n", " 'CARIBBEAN GLORY': '5f9d7b1329f44ef585bfa506d1d0c52a16eb3d5ef01c1bf031da37849c3bfdf0',\n", " 'BALTIC GLORY': 'c7cd0caacfc8d5b1ffafe6a623cd0c437843fb76100a5828793d38cf92da6344',\n", " 'LANDBRIDGE GLORY': 'e6ff63f16630fdb1e82d856f3e3c2466ed8359d41a43d74d220e8e770769b240',\n", " 'PLATA GLORY': '8faaab9fad4706d8bd19d908d55ab4368fa28ef422893e25745216558088366c'}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vlcc_glory_dict" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading from API: 0it [00:00, ?it/s]\n" ] } ], "source": [ "vlcc_EG_query = v.CargoMovements().search(\n", " filter_activity=\"loading_state\",\n", " filter_time_min=one_month_ago,\n", " filter_time_max=now,\n", " filter_vessels=vlcc_glory_dict['DELTA GLORY'])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
vessel_namevessel_classproduct_groupproduct_gradequantitystatusloading_portloading_finishunloading_portunloading_finish
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [vessel_name, vessel_class, product_group, product_grade, quantity, status, loading_port, loading_finish, unloading_port, unloading_finish]\n", "Index: []" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vlcc_EG_query.to_df(columns=required_columns).rename(relabel,axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "Make a DataFrame with all vessels. Aggregate this by vessel class, and plot a pie chart of the number of vessels in each class." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 4 }