{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "
\n", "\n", "   \n", "
\n", "
\n", "
\n", "\n", "## Project 4: Exploring the UK's hop-based product imports and exports\n", "\n", "#### produced by [Jez Phipps](https://www.futurelearn.com/profiles/3841612) on 7th November 2016.\n", "\n", "This is my project notebook for Week 4 of The Open University's [_Learn to Code for Data Analysis_](http://futurelearn.com/courses/learn-to-code) course." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "A country's economy depends, sometimes heavily, on its exports and imports. The United Nations Comtrade database provides data on global trade. It will be used to analyse the UK's imports and exports of three hop-based products (see commodity descriptors below) in 2014:\n", "\n", "- How much does the UK export and import and is the balance positive (more exports than imports)? \n", "- Which are the main trading partners, i.e. from/to which countries does the UK import/export the most?\n", "- Which are the regular customers, i.e. which countries buy the products from the UK every month?\n", "- Which countries does the UK both import from and export to?" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "Note:

Option to toggle code visibility on/off is at bottom of page.

" ] }, "execution_count": 97, "metadata": { }, "output_type": "execute_result" } ], "source": [ "from IPython.display import display, HTML\n", "HTML('''Note:

Option to toggle code visibility on/off is at bottom of page.

''')" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "activity": false }, "outputs": [ ], "source": [ "import warnings\n", "warnings.simplefilter('ignore', FutureWarning)\n", "\n", "from pandas import *\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Getting and preparing the data\n", "\n", "The data is obtained from the [United Nations Comtrade](http://comtrade.un.org/data/) website, by selecting the following configuration:\n", "\n", "- Type of Product: goods\n", "- Frequency: monthly \n", "- Periods: All of 2014\n", "- Reporter: United Kingdom\n", "- Partners: all\n", "- Flows: imports and exports\n", "- HS (as reported) commodity codes: **1210** (Hop cones, fresh or dried, lupulin), **121010** (Hop cones, not ground, powdered or pelleted), **130213** (Hop extract)\n", "\n", "Clicking on 'Preview' results in a message that the data exceeds 500 rows. Data was downloaded using the *Download CSV* button and the download file renamed appropriately." ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": true }, "outputs": [ ], "source": [ "LOCATION='comtrade_hops_uk_2014.csv'" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The data can also be downloaded directly from Comtrade using the \"View API Call\" URL, modified in two ways:\n", "\n", "- `max=500` is increased to `max=5000` to make sure all data is loaded,\n", "- `&fmt=csv` is added at the end to obtain the data in CSV format." ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "collapsed": true }, "outputs": [ ], "source": [ "# LOCATION = 'http://comtrade.un.org/api/get?max=5000&type=C&freq=M&px=HS&ps=2014&r=826&p=all&rg=1%2C2&cc=1210%2C121010%2C130213&fmt=csv'" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "On reading in the data, the commodity code has to be read as a string, to not lose the leading zero." ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "activity": false }, "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", "
ClassificationYearPeriodPeriod Desc.Aggregate LevelIs Leaf CodeTrade Flow CodeTrade FlowReporter CodeReporter...QtyAlt Qty Unit CodeAlt Qty UnitAlt QtyNetweight (kg)Gross weight (kg)Trade Value (US$)CIF Trade Value (US$)FOB Trade Value (US$)Flag
1045 HS 2014 201412 December 2014 6 1 1 Imports 826 United Kingdom...NaNNaNNaNNaN 72679NaN 1903711NaNNaN 0
1046 HS 2014 201412 December 2014 6 1 2 Exports 826 United Kingdom...NaNNaNNaNNaN 1670NaN 104985NaNNaN 0
\n", "

2 rows × 35 columns

\n", "
" ] }, "execution_count": 101, "metadata": { }, "output_type": "execute_result" } ], "source": [ "hops = read_csv(LOCATION, dtype={'Commodity Code':str})\n", "hops\n", "hops.tail(2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Most columns are irrelevant for this analysis, or contain always the same value, like the year and reporter columns. The commodity code is transformed into a short but descriptive text and only the relevant columns are selected." ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "activity": false }, "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", "
PeriodPartnerTrade FlowHop-based productsTrade Value (US$)
0 201401 World Imports cones_1 2875045
1 201401 World Exports cones_1 537108
2 201401 Australia Imports cones_1 10763
3 201401 Australia Exports cones_1 66033
4 201401 Belgium Imports cones_1 493981
\n", "
" ] }, "execution_count": 102, "metadata": { }, "output_type": "execute_result" } ], "source": [ "def hopsType(code):\n", " if code == '1210': # Hop cones, fresh or dried, lupulin\n", " return 'cones_1'\n", " if code == '121010': # Hop cones, not ground, powdered or pelleted\n", " return 'cones_2'\n", " if code == '130213': # Hop extract\n", " return 'extract' \n", " return 'unknown'\n", "\n", "COMMODITY = 'Hop-based products'\n", "hops[COMMODITY] = hops['Commodity Code'].apply(hopsType)\n", "MONTH = 'Period'\n", "PARTNER = 'Partner'\n", "FLOW = 'Trade Flow'\n", "VALUE = 'Trade Value (US$)'\n", "headings = [MONTH, PARTNER, FLOW, COMMODITY, VALUE]\n", "hops = hops[headings]\n", "hops.head()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The data contains the total imports and exports per month, under the 'World' partner. Those rows are removed to keep only the per-country data." ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "activity": false }, "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", "
PeriodPartnerTrade FlowHop-based productsTrade Value (US$)
2 201401 Australia Imports cones_1 10763
3 201401 Australia Exports cones_1 66033
4 201401 Belgium Imports cones_1 493981
5 201401 Belgium Exports cones_1 19782
6 201401 Canada Exports cones_1 9290
\n", "
" ] }, "execution_count": 103, "metadata": { }, "output_type": "execute_result" } ], "source": [ "hops = hops[hops[PARTNER] != 'World']\n", "hops.head()" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Note: The UK trade partners consist of 74 different countries.\n" ] } ], "source": [ "print(\"\\nNote: The UK trade partners consist of \" + str(len(hops['Partner'].unique())) + \" different countries.\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Total trade flow\n", "\n", "To answer the first question, **'How much does the UK export and import and is the balance positive (more exports than imports)?'**,\n", "the dataframe is split into two groups: exports from the UK and imports into the UK. The trade values within each group are summed up to get the total trading." ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "activity": false }, "outputs": [ { "data": { "text/plain": [ "Trade Flow\n", "Exports 59473468\n", "Imports 91270334\n", "Name: Trade Value (US$), dtype: int64" ] }, "execution_count": 105, "metadata": { }, "output_type": "execute_result" } ], "source": [ "grouped = hops.groupby([FLOW])\n", "hops_flow_totals = grouped[VALUE].aggregate(sum)\n", "hops_flow_totals" ] }, { "cell_type": "code", "execution_count": 106, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This shows a trade surplus of about 31.8 million US$.\n" ] } ], "source": [ "def roundToMillions (value):\n", " return round((value / 1000000),1)\n", "\n", "# Let's get the trade surplus:\n", "surplus = hops_flow_totals['Imports'] - hops_flow_totals['Exports']\n", "print(\"This shows a trade surplus of about \" + str(roundToMillions(surplus)) + \" million US$.\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Main trade partners\n", "\n", "To address the second question, **'Which are the main trading partners, i.e. from/to which countries does the UK import/export the most?'**, the dataframe is split by country instead, and then each group aggregated for the total trade value. This is done separately for imports and exports. The result is sorted in descending order so that the main partners are at the top." ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "activity": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The UK imports from 19 countries.\n", "The 5 biggest exporters to the UK are:\n" ] }, { "data": { "text/plain": [ "Partner\n", "United States of America 39915608\n", "Germany 17281076\n", "France 9413829\n", "Belgium 8874391\n", "Slovenia 6092866\n", "Name: Trade Value (US$), dtype: int64" ] }, "execution_count": 107, "metadata": { }, "output_type": "execute_result" } ], "source": [ "imports = hops[hops[FLOW] == 'Imports']\n", "grouped = imports.groupby([PARTNER])\n", "print('The UK imports from', len(grouped), 'countries.')\n", "print('The 5 biggest exporters to the UK are:')\n", "totalImports = grouped[VALUE].aggregate(sum).sort(inplace=False,ascending=False)\n", "totalImports.head()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The export values can be plotted as a bar chart, making differences between countries easier to see." ] }, { "cell_type": "code", "execution_count": 108, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 108, "metadata": { }, "output_type": "execute_result" }, { "data": { "image/png": "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" }, "execution_count": 108, "metadata": { }, "output_type": "execute_result" } ], "source": [ "totalImports.head(10).plot(kind='barh')" ] }, { "cell_type": "code", "execution_count": 109, "metadata": { "activity": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The UK exports to 72 countries.\n", "The 5 biggest importers from the UK are:\n" ] }, { "data": { "text/plain": [ "Partner\n", "United States of America 9431078\n", "Germany 9158415\n", "Nigeria 6862093\n", "Belgium 5664460\n", "Brazil 4700374\n", "Name: Trade Value (US$), dtype: int64" ] }, "execution_count": 109, "metadata": { }, "output_type": "execute_result" } ], "source": [ "exports = hops[hops[FLOW] == 'Exports']\n", "grouped = exports.groupby([PARTNER])\n", "print('The UK exports to', len(grouped), 'countries.')\n", "print('The 5 biggest importers from the UK are:')\n", "totalExports = grouped[VALUE].aggregate(sum).order(ascending=False).head()\n", "totalExports.head()" ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The above clearly shows that the U.S. is our largest partner.\n", "However, our imports from the U.S. are about 39.9 million US$ and our exports are about 9.4 million US$.\n", "Consequently, the balance of trade is about -30.5 million US$.\n" ] } ], "source": [ "i = totalImports.head(1)[0]\n", "i = str(roundToMillions(i))\n", "e = totalExports.head(1)[0]\n", "e = str(roundToMillions(e))\n", "\n", "print(\"The above clearly shows that the U.S. is our largest partner.\")\n", "print(\"However, our imports from the U.S. are about \" + i + \" million US$ and our exports are about \" + e + \" million US$.\")\n", "balance_of_trade = (totalExports.head(1)[0]) - (totalImports.head(1)[0]) # Country's imports exceed its exports.\n", "print(\"Consequently, the balance of trade is about \" + str(roundToMillions(balance_of_trade)) + \" million US$.\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Regular importers\n", "\n", "Given that there are three commodities, the third question, **'Which are the regular customers, i.e. which countries buy hop-based exports from the UK every month?'**, is meant in the sense that a regular customer buys (imports) _all three commodities every month._ This means that if the exports dataframe is grouped by country, each group has exactly 36 rows (three commodities bought each of the 12 months). To see the countries, only the first month of one commodity has to be listed, as by definition it's the same countries every month and for the other commodity." ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "activity": false }, "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", "
PeriodPartnerTrade FlowHop-based productsTrade Value (US$)
662 201401 France Exports extract 63928
667 201401 Ireland Exports extract 336060
\n", "
" ] }, "execution_count": 111, "metadata": { }, "output_type": "execute_result" } ], "source": [ "def buysEveryMonth(group):\n", " return len(group) == 36\n", "\n", "grouped = exports.groupby([PARTNER])\n", "regular = grouped.filter(buysEveryMonth)\n", "regular = regular[(regular[MONTH] == 201401) & (regular[COMMODITY] == 'extract')]\n", "regular" ] }, { "cell_type": "code", "execution_count": 112, "metadata": { "activity": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Approximately 0.67% of the total UK exports are due to the 2 regular customer(s) identified above.\n" ] } ], "source": [ "pc=((regular[VALUE].sum() / exports[VALUE].sum())*100)\n", "regulars = len(regular)\n", "print(\"Approximately \" + str(round(pc,2)) + \"% of the total UK exports are due to the\", regulars ,\"regular customer(s) identified above.\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Bi-directional trade\n", "\n", "To address the fourth question, \n", "**'Which countries does the UK both import from and export to?**', a pivot table is used to list the total export and import value for each country. " ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "activity": false }, "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", "
Trade FlowExportsImports
Partner
Argentina 359284 NaN
Australia 1370282 1673828
Austria 1335 NaN
Belarus 110361 NaN
Belgium 5664460 8874391
\n", "
" ] }, "execution_count": 113, "metadata": { }, "output_type": "execute_result" } ], "source": [ "countries = pivot_table(hops, index=[PARTNER], columns=[FLOW], \n", " values=VALUE, aggfunc=sum)\n", "countries.head()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Removing the rows with a missing value will result in only those countries with bi-directional trade flow with the UK." ] }, { "cell_type": "code", "execution_count": 114, "metadata": { "activity": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "The UK has bi-directional trade flow with the following 17 countries.\n", "\n" ] }, { "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", "
Trade FlowExportsImports
Partner
Australia 1370282 1673828
Belgium 5664460 8874391
Canada 601190 3024
China 430125 56097
Czech Rep. 254642 1998597
Denmark 593679 122416
France 1221984 9413829
Germany 9158415 17281076
India 121934 38215
Netherlands 752854 68009
New Zealand 265622 2176340
Peru 1941 4693
Poland 375610 2758898
Slovakia 38916 582680
Slovenia 40334 6092866
Spain 659212 1989
United States of America 9431078 39915608
\n", "
" ] }, "execution_count": 114, "metadata": { }, "output_type": "execute_result" } ], "source": [ "print(\"\\nThe UK has bi-directional trade flow with the following \" + str(len(countries.dropna())) + \" countries.\\n\")\n", "display(countries.dropna())" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Conclusions\n", "\n", "The UK hops-based product trade in 2014 was analysed in terms of which countries the UK mostly depends on for income (exports) and goods (imports). Over the period, the UK had a **trade surplus of over 32 million US dollars with 74 different parther countries**.\n", "\n", "The **U.S. is the main partner**, but the UK imported almost over three times the value of hop-based goods from the U.S. than it exported to them (i.e. a substantial trade deficit of about 31 million US dollars). \n", "\n", "The UK **exported to 72 countries** during the period, but only **imported from 19 countries**. Germany and France are the next two main customers for both hop imports into, and exports out of, the UK.\n", "\n", "Interestingly, the UK is not very heavily dependent on its regular customers, since there are only two countries out of 74 that buy all three types of hops-based commodities every month (France and Ireland). This accounts for less than 1% of exports. However, the UK does rely significantly on France for imported goods. \n", "\n", "The UK has bi-directional trade (i.e. both exports and imports) with 17 countries, although for some (i.e. Peru) the trade value is suprisingly low." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Top of page" ] }, { "cell_type": "code", "execution_count": 115, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Pandas version 0.15.0" ] }, { "data": { "text/html": [ "\n", "

Click here to toggle code visibility on/off

\n", "" ] }, "execution_count": 115, "metadata": { }, "output_type": "execute_result" } ], "source": [ "print(\"\\nPandas version\", pandas.__version__, end=\"\")\n", "from IPython.display import HTML\n", "HTML('''\n", "

Click here to toggle code visibility on/off

\n", "''')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "
© 2016 Phipps E&OE.
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (Ubuntu Linux)", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }