{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Module 5\n", "\n", "## Video 24: Filtering by Product\n", "**Python for the Energy Industry**\n", "\n", "We can filter Cargo Movements by the carried product in much the same way as we filter by geography. \n", "\n", "## Products Endpoint\n", "\n", "[Products endpoint documentation](https://vortechsa.github.io/python-sdk/endpoints/products/)\n", "\n", "We start by doing a search for 'crude':" ] }, { "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)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2020-12-10 16:47:54,856 vortexasdk.client — WARNING — You are using vortexasdk version 0.26.0, however version 0.27.1 is available.\n", "You should consider upgrading via the 'pip install vortexasdk --upgrade' command.\n" ] } ], "source": [ "crude_search = v.Products().search(term=['crude'])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "19" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(crude_search)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get 19 results. Inspecting the first of these, we can see there is a product name and ID, plus information about parent products." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': 'e1b3d075a9340969322024a35b8c720e5065d8c95a91b6d2cda2cb06dd707717',\n", " 'name': 'Crude Vegoil',\n", " 'layer': ['grade'],\n", " 'leaf': True,\n", " 'parent': [{'name': 'Biodiesel Feedstock',\n", " 'layer': ['category'],\n", " 'id': '9d52ede1cff0421a8cd7283b0171afe8d23f519dca5f4e489734522f9cdf804c'}],\n", " 'meta': {},\n", " 'ref_type': 'product',\n", " 'hierarchy': [{'id': 'b68cbb746f8b9098c50e2ba36bcad83001a53bd362e9031fb49085d02c36659c',\n", " 'layer': 'group',\n", " 'label': 'Clean Petroleum Products'},\n", " {'id': 'a75fcc09bfc7d16496de3336551bc52b5891838bb7c22356d2cb65451587d1e5',\n", " 'layer': 'group_product',\n", " 'label': 'Biodiesel'},\n", " {'id': '9d52ede1cff0421a8cd7283b0171afe8d23f519dca5f4e489734522f9cdf804c',\n", " 'layer': 'category',\n", " 'label': 'Biodiesel Feedstock'},\n", " {'id': 'e1b3d075a9340969322024a35b8c720e5065d8c95a91b6d2cda2cb06dd707717',\n", " 'layer': 'grade',\n", " 'label': 'Crude Vegoil'}]}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "crude_search[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets take a look at all the products returned by our search:" ] }, { "cell_type": "code", "execution_count": 5, "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", "
idnamelayer.0parent.0.name
0e1b3d075a9340969322024a35b8c720e5065d8c95a91b6...Crude VegoilgradeBiodiesel Feedstock
16f11b0724c9a4e85ffa7f1445bc768f054af755a090118...Crudegroup_productCrude/Condensates
24fe046d7478c4072b9ecbaa2c03d3b977bbfec5077ee44...Crude ButadienegradeOlefins/Other Chemicals
354af755a090118dcf9b0724c9a4e9f14745c26165385ff...Crude/CondensatesgroupNaN
49fda040ee8844e47b5239051e322d06dd9d2b96f0c3249...TPAO crudegradeMedium-Sour
52b76490350005604507ca64567101df7d3db80a973f462...Crude Vegetable OilgradeBiodiesel Feedstock
6f26cd12252b0bb23b4ab4ab590eaee11037d78a7ac5cc6...Crude BenzenegradeChemicals
7e9d1031a9167fff80ef089f2d5591deb1833ee34f1d028...Crude Palm OilgradeBiodiesel Feedstock
8c2aa8895d3d176868cbb0519f2bb5318a74a2a66ac9034...Eagle Ford crudegradeLight-Sweet
9164a4a510343458bbf949a79964ce3bb8efa8d14276c48...US Shale CrudegradeLight-Sweet
101dfa78c965d56ab9d7b953e424d9160e9f79d0275e460c...Kaliningrad light crudegradeLight-Sweet
114ff810b966104a658d22e7155596c11bedcd1e3e81594e...Yuri Korchagin CrudegradeLight-Sweet
126fd8a34225de493ab9bff7f95880d96a3e34737db24849...Domestic Sweet Crude (DSW)gradeLight-Sour
13c49a65c1651913a1cb3b185760ab952827b5b9ddc03e1e...Crude Soybean Oil (CSBO)gradeBiodiesel Feedstock
14c7bee2499ebba9677e11930891fdd067c293b8536efe53...Crude Sunflower Oil (CSFO)gradeBiodiesel Feedstock
15c4ad8221d48642b2adc7b363c68a3d729b3ef7f2d9aa42...Diluted Crude Oil (DCO)gradeHeavy-Sour
1698fa8034b122632b13564878dd75d902faa735b822cac9...Crude Degummed Soybean OilgradeBiodiesel Feedstock
17bc9deabd28d74b5985056195dcbcd33ccae7c616e2584a...Reconstituted Crude Oil (Recon)gradeDirty Condensates
18ca15a14cae72539854f53413a0f8668bcca2ec90053722...Crude Blendstock for Oxygenate BlendinggradeBlending Components
\n", "
" ], "text/plain": [ " id \\\n", "0 e1b3d075a9340969322024a35b8c720e5065d8c95a91b6... \n", "1 6f11b0724c9a4e85ffa7f1445bc768f054af755a090118... \n", "2 4fe046d7478c4072b9ecbaa2c03d3b977bbfec5077ee44... \n", "3 54af755a090118dcf9b0724c9a4e9f14745c26165385ff... \n", "4 9fda040ee8844e47b5239051e322d06dd9d2b96f0c3249... \n", "5 2b76490350005604507ca64567101df7d3db80a973f462... \n", "6 f26cd12252b0bb23b4ab4ab590eaee11037d78a7ac5cc6... \n", "7 e9d1031a9167fff80ef089f2d5591deb1833ee34f1d028... \n", "8 c2aa8895d3d176868cbb0519f2bb5318a74a2a66ac9034... \n", "9 164a4a510343458bbf949a79964ce3bb8efa8d14276c48... \n", "10 1dfa78c965d56ab9d7b953e424d9160e9f79d0275e460c... \n", "11 4ff810b966104a658d22e7155596c11bedcd1e3e81594e... \n", "12 6fd8a34225de493ab9bff7f95880d96a3e34737db24849... \n", "13 c49a65c1651913a1cb3b185760ab952827b5b9ddc03e1e... \n", "14 c7bee2499ebba9677e11930891fdd067c293b8536efe53... \n", "15 c4ad8221d48642b2adc7b363c68a3d729b3ef7f2d9aa42... \n", "16 98fa8034b122632b13564878dd75d902faa735b822cac9... \n", "17 bc9deabd28d74b5985056195dcbcd33ccae7c616e2584a... \n", "18 ca15a14cae72539854f53413a0f8668bcca2ec90053722... \n", "\n", " name layer.0 \\\n", "0 Crude Vegoil grade \n", "1 Crude group_product \n", "2 Crude Butadiene grade \n", "3 Crude/Condensates group \n", "4 TPAO crude grade \n", "5 Crude Vegetable Oil grade \n", "6 Crude Benzene grade \n", "7 Crude Palm Oil grade \n", "8 Eagle Ford crude grade \n", "9 US Shale Crude grade \n", "10 Kaliningrad light crude grade \n", "11 Yuri Korchagin Crude grade \n", "12 Domestic Sweet Crude (DSW) grade \n", "13 Crude Soybean Oil (CSBO) grade \n", "14 Crude Sunflower Oil (CSFO) grade \n", "15 Diluted Crude Oil (DCO) grade \n", "16 Crude Degummed Soybean Oil grade \n", "17 Reconstituted Crude Oil (Recon) grade \n", "18 Crude Blendstock for Oxygenate Blending grade \n", "\n", " parent.0.name \n", "0 Biodiesel Feedstock \n", "1 Crude/Condensates \n", "2 Olefins/Other Chemicals \n", "3 NaN \n", "4 Medium-Sour \n", "5 Biodiesel Feedstock \n", "6 Chemicals \n", "7 Biodiesel Feedstock \n", "8 Light-Sweet \n", "9 Light-Sweet \n", "10 Light-Sweet \n", "11 Light-Sweet \n", "12 Light-Sour \n", "13 Biodiesel Feedstock \n", "14 Biodiesel Feedstock \n", "15 Heavy-Sour \n", "16 Biodiesel Feedstock \n", "17 Dirty Condensates \n", "18 Blending Components " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "crude_search.to_df()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are different layers of product type, ranging from the broad group 'Crude/Condensates', down to specific grades. We can grab the ID of the Crude group/product to filter on." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filtering by Products\n", "\n", "An assert statement will check that we only get one result for our exact term match." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading from API: 2500it [00:01, 1318.26it/s] \n" ] } ], "source": [ "# Grab the ID for Crude\n", "crude_search = v.Products().search(term=['Crude'],exact_term_match=True)\n", "assert len(crude_search) == 1\n", "crude_ID = crude_search[0]['id']\n", "\n", "cm_crude_query = v.CargoMovements().search(\n", " filter_activity=\"loading_state\",\n", " filter_time_min=one_month_ago,\n", " filter_time_max=now,\n", " filter_products=crude_ID)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As before, we pick the colulmns of interest from our Cargo Movements search and make a DataFrame." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "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": 8, "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
0ASAHI PRINCESSaframaxCrude/CondensatesNaN190455unloading_stateMalampaya [PH]2020-12-05 05:59:44+00:00Map Ta Phut [TH]NaT
1KALAHARIaframaxCrude/CondensatesSiberian Light585442unloaded_stateNovorossiysk [RU]2020-11-21 10:52:20+00:00Burgas (Bourgas) [BG]2020-11-24 19:37:04+00:00
2M T VEDMATAtiny_tankerCrude/CondensatesNaN45280unloaded_stateAgge [NG]2020-11-17 04:38:46+00:00Tulja [NG]2020-11-17 15:15:33+00:00
3SHALAMARaframaxCrude/CondensatesArab Light730874unloaded_stateRas Tanura [SA]2020-12-01 01:30:06+00:00Karachi, SD [PK]2020-12-08 22:52:33+00:00
4NEW ENTERPRISEvlcc_plusCrude/CondensatesMurban1132667transiting_stateFujairah [AE]2020-11-21 18:35:28+00:00Tomakomai [JP]NaT
.................................
2002AMAZON FALCONpanamaxCrude/CondensatesVasconia476332unloaded_stateCovenas [CO]2020-11-16 17:05:04+00:00Chiriqui Grande [PA]2020-11-19 23:07:19+00:00
2003A SYMPHONYsuezmaxCrude/CondensatesNaN1021406storing_stateNaN2020-12-08 19:54:29+00:00NaNNaT
2004VAIL SPIRITsuezmaxCrude/CondensatesBonny Light1004770unloaded_stateBonny Offshore Oil Terminal [NG]2020-11-15 03:38:20+00:00Jose Ignacio Terminal [UY]2020-12-03 00:20:30+00:00
2005DAKOTA STRENGHTaframaxCrude/CondensatesHibernia401320unloading_stateWhiffen Head [CA]2020-12-05 12:27:34+00:00New York, NY [US]NaT
2006EAGLE TOLEDOaframaxCrude/CondensatesEagle Ford crude776022transiting_stateCorpus Christi, TX [US]2020-11-28 19:23:03+00:00Mumbai [IN]NaT
\n", "

2007 rows × 10 columns

\n", "
" ], "text/plain": [ " vessel_name vessel_class product_group product_grade \\\n", "0 ASAHI PRINCESS aframax Crude/Condensates NaN \n", "1 KALAHARI aframax Crude/Condensates Siberian Light \n", "2 M T VEDMATA tiny_tanker Crude/Condensates NaN \n", "3 SHALAMAR aframax Crude/Condensates Arab Light \n", "4 NEW ENTERPRISE vlcc_plus Crude/Condensates Murban \n", "... ... ... ... ... \n", "2002 AMAZON FALCON panamax Crude/Condensates Vasconia \n", "2003 A SYMPHONY suezmax Crude/Condensates NaN \n", "2004 VAIL SPIRIT suezmax Crude/Condensates Bonny Light \n", "2005 DAKOTA STRENGHT aframax Crude/Condensates Hibernia \n", "2006 EAGLE TOLEDO aframax Crude/Condensates Eagle Ford crude \n", "\n", " quantity status loading_port \\\n", "0 190455 unloading_state Malampaya [PH] \n", "1 585442 unloaded_state Novorossiysk [RU] \n", "2 45280 unloaded_state Agge [NG] \n", "3 730874 unloaded_state Ras Tanura [SA] \n", "4 1132667 transiting_state Fujairah [AE] \n", "... ... ... ... \n", "2002 476332 unloaded_state Covenas [CO] \n", "2003 1021406 storing_state NaN \n", "2004 1004770 unloaded_state Bonny Offshore Oil Terminal [NG] \n", "2005 401320 unloading_state Whiffen Head [CA] \n", "2006 776022 transiting_state Corpus Christi, TX [US] \n", "\n", " loading_finish unloading_port \\\n", "0 2020-12-05 05:59:44+00:00 Map Ta Phut [TH] \n", "1 2020-11-21 10:52:20+00:00 Burgas (Bourgas) [BG] \n", "2 2020-11-17 04:38:46+00:00 Tulja [NG] \n", "3 2020-12-01 01:30:06+00:00 Karachi, SD [PK] \n", "4 2020-11-21 18:35:28+00:00 Tomakomai [JP] \n", "... ... ... \n", "2002 2020-11-16 17:05:04+00:00 Chiriqui Grande [PA] \n", "2003 2020-12-08 19:54:29+00:00 NaN \n", "2004 2020-11-15 03:38:20+00:00 Jose Ignacio Terminal [UY] \n", "2005 2020-12-05 12:27:34+00:00 New York, NY [US] \n", "2006 2020-11-28 19:23:03+00:00 Mumbai [IN] \n", "\n", " unloading_finish \n", "0 NaT \n", "1 2020-11-24 19:37:04+00:00 \n", "2 2020-11-17 15:15:33+00:00 \n", "3 2020-12-08 22:52:33+00:00 \n", "4 NaT \n", "... ... \n", "2002 2020-11-19 23:07:19+00:00 \n", "2003 NaT \n", "2004 2020-12-03 00:20:30+00:00 \n", "2005 NaT \n", "2006 NaT \n", "\n", "[2007 rows x 10 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm_crude_query.to_df(columns=required_columns).rename(relabel,axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exploring the Products dataset\n", "\n", "Let's say you wanted to know which child products belonged to a particular group or category. One way to do this is to full the full products dataset:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading from API: 2000it [00:00, 5183.91it/s] \n" ] } ], "source": [ "search = v.Products().search()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1762" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(search)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can convert this into a DataFrame. This allows us to, for example, find all products of 'group' type." ] }, { "cell_type": "code", "execution_count": 11, "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", "
idnamelayer.0parent.0.name
1155b68cbb746f8b9098c50e2ba36bcad83001a53bd362e903...Clean Petroleum ProductsgroupNaN
119854af755a090118dcf9b0724c9a4e9f14745c26165385ff...Crude/CondensatesgroupNaN
12905de0b00094e0fd7542c10f9f8a71b4008d55750f21dc90...Dirty Petroleum ProductsgroupNaN
\n", "
" ], "text/plain": [ " id \\\n", "1155 b68cbb746f8b9098c50e2ba36bcad83001a53bd362e903... \n", "1198 54af755a090118dcf9b0724c9a4e9f14745c26165385ff... \n", "1290 5de0b00094e0fd7542c10f9f8a71b4008d55750f21dc90... \n", "\n", " name layer.0 parent.0.name \n", "1155 Clean Petroleum Products group NaN \n", "1198 Crude/Condensates group NaN \n", "1290 Dirty Petroleum Products group NaN " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search_df = search.to_df()\n", "\n", "search_df[search_df['layer.0'] == 'group']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's say we then want to find the 'child' products of 'Crude/Condensates':" ] }, { "cell_type": "code", "execution_count": 12, "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", "
idnamelayer.0parent.0.name
1170d053227a2df2f4d6eacca61341cd6c08e49ba6970cc18a...Condensatesgroup_productCrude/Condensates
11886f11b0724c9a4e85ffa7f1445bc768f054af755a090118...Crudegroup_productCrude/Condensates
\n", "
" ], "text/plain": [ " id name \\\n", "1170 d053227a2df2f4d6eacca61341cd6c08e49ba6970cc18a... Condensates \n", "1188 6f11b0724c9a4e85ffa7f1445bc768f054af755a090118... Crude \n", "\n", " layer.0 parent.0.name \n", "1170 group_product Crude/Condensates \n", "1188 group_product Crude/Condensates " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search_df[search_df['parent.0.name'] == 'Crude/Condensates']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Going one step further:" ] }, { "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", "
idnamelayer.0parent.0.name
64a7e26956fbb91d786b1d55582981b0d199f72c050958fd...Medium-SourcategoryCrude
651c10c409e5412d5eee38bbbd529509d2fe0251fa99e292...Medium-SweetcategoryCrude
1552fc2e0746428ed6109045fc1195a4ee4ef2e339d55b7b6e...Heavy-SourcategoryCrude
15533cb81242a4b490d97b78657e8f1d40b994c32d4334051f...Heavy-SweetcategoryCrude
173587acdcdd0f1b2482eb808d5ea2afdc05266f27e4c9b0a5...Light-SourcategoryCrude
173666a98cd9df06660555000f8d4de9bc075e651bce3b57a4...Light-SweetcategoryCrude
\n", "
" ], "text/plain": [ " id name \\\n", "64 a7e26956fbb91d786b1d55582981b0d199f72c050958fd... Medium-Sour \n", "65 1c10c409e5412d5eee38bbbd529509d2fe0251fa99e292... Medium-Sweet \n", "1552 fc2e0746428ed6109045fc1195a4ee4ef2e339d55b7b6e... Heavy-Sour \n", "1553 3cb81242a4b490d97b78657e8f1d40b994c32d4334051f... Heavy-Sweet \n", "1735 87acdcdd0f1b2482eb808d5ea2afdc05266f27e4c9b0a5... Light-Sour \n", "1736 66a98cd9df06660555000f8d4de9bc075e651bce3b57a4... Light-Sweet \n", "\n", " layer.0 parent.0.name \n", "64 category Crude \n", "65 category Crude \n", "1552 category Crude \n", "1553 category Crude \n", "1735 category Crude \n", "1736 category Crude " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search_df[search_df['parent.0.name'] == 'Crude']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And finally, to grade level:" ] }, { "cell_type": "code", "execution_count": 14, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamelayer.0parent.0.name
54fb4d9f3e8c547b7b5be2f69f72279712a11de9deedec42...MaynagradeHeavy-Sweet
158f771796213919845444b4310aa8d6184cc8437b2d29de9...Nigerian MediumgradeHeavy-Sweet
1998be6e28c0b2379e8c74cfea67af4dd570e5ce3dbbb3893...OlendegradeHeavy-Sweet
2013a2b4996b8568a15296f541dc0c16d6060e32f2eb903b5...OlombendogradeHeavy-Sweet
214382a1fdb7c456190f77ed096a3fcc61ff3f77e5d8fd398...OstragradeHeavy-Sweet
2662da055a25689552c9a58bba5a3294114aba62cf73e3bde...PazflorgradeHeavy-Sweet
270acccc718f28b757b433b8809892bc7f4a2d7a7d3e83ad3...PenglaigradeHeavy-Sweet
338497768f75d5f0834a88b6e51a8f805324f3e23b4d2caf6...PyreneesgradeHeavy-Sweet
3475bcfb3d6ea2b417593fc2524366fbcd74571d6c1bbda4f...QinghuangdaogradeHeavy-Sweet
41919c99edb8bfa5ecd4efbf3dc4e0017ce338c7a62b49c23...Roncador HeavygradeHeavy-Sweet
44926c07045de0fbcaa1b3cefd665ca8f322631523da32b40...Sanga sangagradeHeavy-Sweet
450548dc50e9ec946c12885a46d3b443428b789011cd8c978...SangosgradeHeavy-Sweet
459b9c38044b2df5ef84351ec0b4035767f8c1a485f54c902...Schiehallion BlendgradeHeavy-Sweet
4677057a91c1981ba55f249159655957edb07e72b31509a90...Sergipano TerragradeHeavy-Sweet
4963ed2629a328ce7f3c2b90183ff21e3be6d71adc5f60e03...SolangradeHeavy-Sweet
525e795d1f160bb6bc1ec6a452040eb2212bc0527ee680bdf...StaggradeHeavy-Sweet
562bb34861c4c1c5d47ae4453e1f5b2583bbe91ba53042ae1...TagulgradeHeavy-Sweet
6935c273a8a7627c251713a1d3c8886f71571dcc55bb49ee3...Van GoghgradeHeavy-Sweet
703efed961dfabbd2e41f2db0ce2186f8a41fa8b659c2f2cc...VincentgradeHeavy-Sweet
714892c10e97597abe422148f26eda184ea6087134795e858...WandoogradeHeavy-Sweet
715c27355b5263c4ff688803a5b6afd7d13504c9eee3e8f4a...WassanagradeHeavy-Sweet
741fd5b4d385b5b4ed18e680de4fbc79debf4e7115982b240...WoodbournegradeHeavy-Sweet
750ef2870346d0eaf18d88059c70ffd8c12296c70e8a8e231...YombogradeHeavy-Sweet
869880d79ff1884ed37a8091526b09605bee38546c0a41ed4...Antan BlendgradeHeavy-Sweet
903af3ed44f2270bdfe36286edd93faca925e7590dcb49222...AthenagradeHeavy-Sweet
904fb3c7267c7654c468f2a5b6454bf443fcfdae6dde7704a...AtlantagradeHeavy-Sweet
9149a5dfab130b5cd5df3572ed76ca642d01768d6ba8a23c8...AzadegangradeHeavy-Sweet
942d8dc642b92088492c09d26f78d79eedc57c4bbb4c336e1...BaobabgradeHeavy-Sweet
9431a02518edd0e41019194a84e39da3b38fd7cee158cf448...BarracudagradeHeavy-Sweet
9621af91599b7eb93c7332f1ca1292dc63f267f55cc6ca78c...BeningradeHeavy-Sweet
97464b7370212a085464093888cd37012343b1ad3a35b7418...BimagradeHeavy-Sweet
101092a2672b4e6709ce3e2fdcf1b2cbab32af02f4d658f685...Bonny MediumgradeHeavy-Sweet
101700880328b73f471e9a61d156b075a2103b3c5273ddac42...BozhonggradeHeavy-Sweet
10248d906dcb86d7813d11da8fa71ab056fb5c8df6c2bbfbb0...Bretana BlendgradeHeavy-Sweet
103162f2c9a279304701a8620f692c72726a09f783bf93cd4b...BulagradeHeavy-Sweet
11078980f09ff3f45eaa4fc12ab939265b8a80666b33cbfed7...Canadon SecogradeHeavy-Sweet
1110bdaeac274d2e4f93af94e5877b48f3b43c5c0bcb8b5049...CaofeidiangradeHeavy-Sweet
1112e975413418674ef699e96459208c6a9fe25f3eea26c64e...CaratingagradeHeavy-Sweet
11536930dea9bdd4a9d50e7716304d49c4f94a036f66070fae...ClairgradeHeavy-Sweet
11784cbee8cb1e568850c67c6e1677e4e70bb5ab32fcfbee9c...CorocorogradeHeavy-Sweet
11878c1995d4bce4c7e80c1eeca2bde92f243de8bec076e845...CretaceogradeHeavy-Sweet
1228f56a9d776a7dd8f98f8634701414242214e1a694446810...Dar BlendgradeHeavy-Sweet
12953a35c61bc48d1ea6f1b21214341ee3f844ee0869006ae6...DjenogradeHeavy-Sweet
1296cd2d3394abd22be9bfac91e1844b42ca40417d2c2ef03d...DobagradeHeavy-Sweet
131459a21390302993399852a65534066ec94780417f0e1099...Duri (Sumatran Heavy)gradeHeavy-Sweet
1338c0c47dcf0c42a38c8e411b69437f24240e83ff579c287f...EbokgradeHeavy-Sweet
1352f3f3fa50b15f528bd21b37e1fade5c635ca1ad80f0e790...EnfieldgradeHeavy-Sweet
1359b346b21b898ccb662010b3718f785168d292cfc7ffaec6...EscalantegradeHeavy-Sweet
1400c90c2e7e5165eca3b56c8928dd961840a19ba03f60d83e...FoinavengradeHeavy-Sweet
150817f01902a755732dab2c9f909c24ddce99156c918f2c7f...GryphongradeHeavy-Sweet
1685b1fdf767738c8a27f327f31e0b633034894deb3bff1d17...KrakengradeHeavy-Sweet
1714f5bc02bfa3d32e5278d22151fd762fec7c3c4a5c54ea1a...LapagradeHeavy-Sweet
174190516c2254f72429666871fe811e03c3d437111460f23f...LiuhuagradeHeavy-Sweet
1745423969c656d3f36588db1961bc19bae08df99bca72136d...LokelegradeHeavy-Sweet
\n", "
" ], "text/plain": [ " id \\\n", "54 fb4d9f3e8c547b7b5be2f69f72279712a11de9deedec42... \n", "158 f771796213919845444b4310aa8d6184cc8437b2d29de9... \n", "199 8be6e28c0b2379e8c74cfea67af4dd570e5ce3dbbb3893... \n", "201 3a2b4996b8568a15296f541dc0c16d6060e32f2eb903b5... \n", "214 382a1fdb7c456190f77ed096a3fcc61ff3f77e5d8fd398... \n", "266 2da055a25689552c9a58bba5a3294114aba62cf73e3bde... \n", "270 acccc718f28b757b433b8809892bc7f4a2d7a7d3e83ad3... \n", "338 497768f75d5f0834a88b6e51a8f805324f3e23b4d2caf6... \n", "347 5bcfb3d6ea2b417593fc2524366fbcd74571d6c1bbda4f... \n", "419 19c99edb8bfa5ecd4efbf3dc4e0017ce338c7a62b49c23... \n", "449 26c07045de0fbcaa1b3cefd665ca8f322631523da32b40... \n", "450 548dc50e9ec946c12885a46d3b443428b789011cd8c978... \n", "459 b9c38044b2df5ef84351ec0b4035767f8c1a485f54c902... \n", "467 7057a91c1981ba55f249159655957edb07e72b31509a90... \n", "496 3ed2629a328ce7f3c2b90183ff21e3be6d71adc5f60e03... \n", "525 e795d1f160bb6bc1ec6a452040eb2212bc0527ee680bdf... \n", "562 bb34861c4c1c5d47ae4453e1f5b2583bbe91ba53042ae1... \n", "693 5c273a8a7627c251713a1d3c8886f71571dcc55bb49ee3... \n", "703 efed961dfabbd2e41f2db0ce2186f8a41fa8b659c2f2cc... \n", "714 892c10e97597abe422148f26eda184ea6087134795e858... \n", "715 c27355b5263c4ff688803a5b6afd7d13504c9eee3e8f4a... \n", "741 fd5b4d385b5b4ed18e680de4fbc79debf4e7115982b240... \n", "750 ef2870346d0eaf18d88059c70ffd8c12296c70e8a8e231... \n", "869 880d79ff1884ed37a8091526b09605bee38546c0a41ed4... \n", "903 af3ed44f2270bdfe36286edd93faca925e7590dcb49222... \n", "904 fb3c7267c7654c468f2a5b6454bf443fcfdae6dde7704a... \n", "914 9a5dfab130b5cd5df3572ed76ca642d01768d6ba8a23c8... \n", "942 d8dc642b92088492c09d26f78d79eedc57c4bbb4c336e1... \n", "943 1a02518edd0e41019194a84e39da3b38fd7cee158cf448... \n", "962 1af91599b7eb93c7332f1ca1292dc63f267f55cc6ca78c... \n", "974 64b7370212a085464093888cd37012343b1ad3a35b7418... \n", "1010 92a2672b4e6709ce3e2fdcf1b2cbab32af02f4d658f685... \n", "1017 00880328b73f471e9a61d156b075a2103b3c5273ddac42... \n", "1024 8d906dcb86d7813d11da8fa71ab056fb5c8df6c2bbfbb0... \n", "1031 62f2c9a279304701a8620f692c72726a09f783bf93cd4b... \n", "1107 8980f09ff3f45eaa4fc12ab939265b8a80666b33cbfed7... \n", "1110 bdaeac274d2e4f93af94e5877b48f3b43c5c0bcb8b5049... \n", "1112 e975413418674ef699e96459208c6a9fe25f3eea26c64e... \n", "1153 6930dea9bdd4a9d50e7716304d49c4f94a036f66070fae... \n", "1178 4cbee8cb1e568850c67c6e1677e4e70bb5ab32fcfbee9c... \n", "1187 8c1995d4bce4c7e80c1eeca2bde92f243de8bec076e845... \n", "1228 f56a9d776a7dd8f98f8634701414242214e1a694446810... \n", "1295 3a35c61bc48d1ea6f1b21214341ee3f844ee0869006ae6... \n", "1296 cd2d3394abd22be9bfac91e1844b42ca40417d2c2ef03d... \n", "1314 59a21390302993399852a65534066ec94780417f0e1099... \n", "1338 c0c47dcf0c42a38c8e411b69437f24240e83ff579c287f... \n", "1352 f3f3fa50b15f528bd21b37e1fade5c635ca1ad80f0e790... \n", "1359 b346b21b898ccb662010b3718f785168d292cfc7ffaec6... \n", "1400 c90c2e7e5165eca3b56c8928dd961840a19ba03f60d83e... \n", "1508 17f01902a755732dab2c9f909c24ddce99156c918f2c7f... \n", "1685 b1fdf767738c8a27f327f31e0b633034894deb3bff1d17... \n", "1714 f5bc02bfa3d32e5278d22151fd762fec7c3c4a5c54ea1a... \n", "1741 90516c2254f72429666871fe811e03c3d437111460f23f... \n", "1745 423969c656d3f36588db1961bc19bae08df99bca72136d... \n", "\n", " name layer.0 parent.0.name \n", "54 Mayna grade Heavy-Sweet \n", "158 Nigerian Medium grade Heavy-Sweet \n", "199 Olende grade Heavy-Sweet \n", "201 Olombendo grade Heavy-Sweet \n", "214 Ostra grade Heavy-Sweet \n", "266 Pazflor grade Heavy-Sweet \n", "270 Penglai grade Heavy-Sweet \n", "338 Pyrenees grade Heavy-Sweet \n", "347 Qinghuangdao grade Heavy-Sweet \n", "419 Roncador Heavy grade Heavy-Sweet \n", "449 Sanga sanga grade Heavy-Sweet \n", "450 Sangos grade Heavy-Sweet \n", "459 Schiehallion Blend grade Heavy-Sweet \n", "467 Sergipano Terra grade Heavy-Sweet \n", "496 Solan grade Heavy-Sweet \n", "525 Stag grade Heavy-Sweet \n", "562 Tagul grade Heavy-Sweet \n", "693 Van Gogh grade Heavy-Sweet \n", "703 Vincent grade Heavy-Sweet \n", "714 Wandoo grade Heavy-Sweet \n", "715 Wassana grade Heavy-Sweet \n", "741 Woodbourne grade Heavy-Sweet \n", "750 Yombo grade Heavy-Sweet \n", "869 Antan Blend grade Heavy-Sweet \n", "903 Athena grade Heavy-Sweet \n", "904 Atlanta grade Heavy-Sweet \n", "914 Azadegan grade Heavy-Sweet \n", "942 Baobab grade Heavy-Sweet \n", "943 Barracuda grade Heavy-Sweet \n", "962 Benin grade Heavy-Sweet \n", "974 Bima grade Heavy-Sweet \n", "1010 Bonny Medium grade Heavy-Sweet \n", "1017 Bozhong grade Heavy-Sweet \n", "1024 Bretana Blend grade Heavy-Sweet \n", "1031 Bula grade Heavy-Sweet \n", "1107 Canadon Seco grade Heavy-Sweet \n", "1110 Caofeidian grade Heavy-Sweet \n", "1112 Caratinga grade Heavy-Sweet \n", "1153 Clair grade Heavy-Sweet \n", "1178 Corocoro grade Heavy-Sweet \n", "1187 Cretaceo grade Heavy-Sweet \n", "1228 Dar Blend grade Heavy-Sweet \n", "1295 Djeno grade Heavy-Sweet \n", "1296 Doba grade Heavy-Sweet \n", "1314 Duri (Sumatran Heavy) grade Heavy-Sweet \n", "1338 Ebok grade Heavy-Sweet \n", "1352 Enfield grade Heavy-Sweet \n", "1359 Escalante grade Heavy-Sweet \n", "1400 Foinaven grade Heavy-Sweet \n", "1508 Gryphon grade Heavy-Sweet \n", "1685 Kraken grade Heavy-Sweet \n", "1714 Lapa grade Heavy-Sweet \n", "1741 Liuhua grade Heavy-Sweet \n", "1745 Lokele grade Heavy-Sweet " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search_df[search_df['parent.0.name'] == 'Heavy-Sweet']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a convenient way of exploring the different products that exist in the data. \n", "\n", "### Exercise\n", "\n", "Assemble a DataFrame of Cargo Movements that were loading in the last 7 weeks, and that were carrying Diesel out of the United States.\n", "\n", "*Note: Diesel is a subset of wider group Diesel/Gasoil.*" ] }, { "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 }