{
"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",
" Classification | \n",
" Year | \n",
" Period | \n",
" Period Desc. | \n",
" Aggregate Level | \n",
" Is Leaf Code | \n",
" Trade Flow Code | \n",
" Trade Flow | \n",
" Reporter Code | \n",
" Reporter | \n",
" ... | \n",
" Qty | \n",
" Alt Qty Unit Code | \n",
" Alt Qty Unit | \n",
" Alt Qty | \n",
" Netweight (kg) | \n",
" Gross weight (kg) | \n",
" Trade Value (US$) | \n",
" CIF Trade Value (US$) | \n",
" FOB Trade Value (US$) | \n",
" Flag | \n",
"
\n",
" \n",
" \n",
" \n",
" 1045 | \n",
" HS | \n",
" 2014 | \n",
" 201412 | \n",
" December 2014 | \n",
" 6 | \n",
" 1 | \n",
" 1 | \n",
" Imports | \n",
" 826 | \n",
" United Kingdom | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 72679 | \n",
" NaN | \n",
" 1903711 | \n",
" NaN | \n",
" NaN | \n",
" 0 | \n",
"
\n",
" \n",
" 1046 | \n",
" HS | \n",
" 2014 | \n",
" 201412 | \n",
" December 2014 | \n",
" 6 | \n",
" 1 | \n",
" 2 | \n",
" Exports | \n",
" 826 | \n",
" United Kingdom | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 1670 | \n",
" NaN | \n",
" 104985 | \n",
" NaN | \n",
" NaN | \n",
" 0 | \n",
"
\n",
" \n",
"
\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",
" Period | \n",
" Partner | \n",
" Trade Flow | \n",
" Hop-based products | \n",
" Trade Value (US$) | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 201401 | \n",
" World | \n",
" Imports | \n",
" cones_1 | \n",
" 2875045 | \n",
"
\n",
" \n",
" 1 | \n",
" 201401 | \n",
" World | \n",
" Exports | \n",
" cones_1 | \n",
" 537108 | \n",
"
\n",
" \n",
" 2 | \n",
" 201401 | \n",
" Australia | \n",
" Imports | \n",
" cones_1 | \n",
" 10763 | \n",
"
\n",
" \n",
" 3 | \n",
" 201401 | \n",
" Australia | \n",
" Exports | \n",
" cones_1 | \n",
" 66033 | \n",
"
\n",
" \n",
" 4 | \n",
" 201401 | \n",
" Belgium | \n",
" Imports | \n",
" cones_1 | \n",
" 493981 | \n",
"
\n",
" \n",
"
\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",
" Period | \n",
" Partner | \n",
" Trade Flow | \n",
" Hop-based products | \n",
" Trade Value (US$) | \n",
"
\n",
" \n",
" \n",
" \n",
" 2 | \n",
" 201401 | \n",
" Australia | \n",
" Imports | \n",
" cones_1 | \n",
" 10763 | \n",
"
\n",
" \n",
" 3 | \n",
" 201401 | \n",
" Australia | \n",
" Exports | \n",
" cones_1 | \n",
" 66033 | \n",
"
\n",
" \n",
" 4 | \n",
" 201401 | \n",
" Belgium | \n",
" Imports | \n",
" cones_1 | \n",
" 493981 | \n",
"
\n",
" \n",
" 5 | \n",
" 201401 | \n",
" Belgium | \n",
" Exports | \n",
" cones_1 | \n",
" 19782 | \n",
"
\n",
" \n",
" 6 | \n",
" 201401 | \n",
" Canada | \n",
" Exports | \n",
" cones_1 | \n",
" 9290 | \n",
"
\n",
" \n",
"
\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",
" Period | \n",
" Partner | \n",
" Trade Flow | \n",
" Hop-based products | \n",
" Trade Value (US$) | \n",
"
\n",
" \n",
" \n",
" \n",
" 662 | \n",
" 201401 | \n",
" France | \n",
" Exports | \n",
" extract | \n",
" 63928 | \n",
"
\n",
" \n",
" 667 | \n",
" 201401 | \n",
" Ireland | \n",
" Exports | \n",
" extract | \n",
" 336060 | \n",
"
\n",
" \n",
"
\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",
" Trade Flow | \n",
" Exports | \n",
" Imports | \n",
"
\n",
" \n",
" Partner | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Argentina | \n",
" 359284 | \n",
" NaN | \n",
"
\n",
" \n",
" Australia | \n",
" 1370282 | \n",
" 1673828 | \n",
"
\n",
" \n",
" Austria | \n",
" 1335 | \n",
" NaN | \n",
"
\n",
" \n",
" Belarus | \n",
" 110361 | \n",
" NaN | \n",
"
\n",
" \n",
" Belgium | \n",
" 5664460 | \n",
" 8874391 | \n",
"
\n",
" \n",
"
\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",
" Trade Flow | \n",
" Exports | \n",
" Imports | \n",
"
\n",
" \n",
" Partner | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Australia | \n",
" 1370282 | \n",
" 1673828 | \n",
"
\n",
" \n",
" Belgium | \n",
" 5664460 | \n",
" 8874391 | \n",
"
\n",
" \n",
" Canada | \n",
" 601190 | \n",
" 3024 | \n",
"
\n",
" \n",
" China | \n",
" 430125 | \n",
" 56097 | \n",
"
\n",
" \n",
" Czech Rep. | \n",
" 254642 | \n",
" 1998597 | \n",
"
\n",
" \n",
" Denmark | \n",
" 593679 | \n",
" 122416 | \n",
"
\n",
" \n",
" France | \n",
" 1221984 | \n",
" 9413829 | \n",
"
\n",
" \n",
" Germany | \n",
" 9158415 | \n",
" 17281076 | \n",
"
\n",
" \n",
" India | \n",
" 121934 | \n",
" 38215 | \n",
"
\n",
" \n",
" Netherlands | \n",
" 752854 | \n",
" 68009 | \n",
"
\n",
" \n",
" New Zealand | \n",
" 265622 | \n",
" 2176340 | \n",
"
\n",
" \n",
" Peru | \n",
" 1941 | \n",
" 4693 | \n",
"
\n",
" \n",
" Poland | \n",
" 375610 | \n",
" 2758898 | \n",
"
\n",
" \n",
" Slovakia | \n",
" 38916 | \n",
" 582680 | \n",
"
\n",
" \n",
" Slovenia | \n",
" 40334 | \n",
" 6092866 | \n",
"
\n",
" \n",
" Spain | \n",
" 659212 | \n",
" 1989 | \n",
"
\n",
" \n",
" United States of America | \n",
" 9431078 | \n",
" 39915608 | \n",
"
\n",
" \n",
"
\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": [
""
]
}
],
"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
}