diff --git a/app/app.py b/app/app.py index a80df1b..db82b19 100644 --- a/app/app.py +++ b/app/app.py @@ -1,8 +1,13 @@ import os -from flask import Flask, render_template, g, jsonify, request +import io +import base64 as b64 + +from flask import Flask, render_template, g, jsonify, request, redirect import pandas as pd import settings from random import choice +import matplotlib.pyplot as plt +from matplotlib.pyplot import rcParams from flask_wtf import FlaskForm from wtforms import StringField, SelectField @@ -13,20 +18,81 @@ df['Year'] = df['Year'].str[4:].astype(int) df2 = df.groupby(['Year', 'Nation']).sum().unstack() df2.columns = df2.columns.droplevel() nations = df2.columns -choices = zip(nations, nations) +choices = list(zip(nations, nations)) +images = ['mpl/' + nation for nation in df2.columns] +images = list(zip(images, images)) app = Flask(__name__) app.config['SECRET_KEY'] = 'secretkey' + +rcParams['lines.linewidth'] = 1 +rcParams["font.family"] = "Tunga" +rcParams['font.size'] = 14 +rcParams['axes.labelsize'] = 12 +rcParams['xtick.labelsize'] = 12 +rcParams['ytick.labelsize'] = 12 +rcParams['font.size'] = 14 +rcParams['figure.titlesize'] = 18 +rcParams['axes.titlesize'] = 18 +rcParams['legend.fontsize'] = 12 +rcParams['figure.figsize'] = (8, 5) + + class MyForm(FlaskForm): nation = SelectField('nation', choices=choices) +class MplForm(FlaskForm): + nation = SelectField('nation', choices=images) +def hide_spines(ax, alpha=0.4): + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['left'].set_alpha(alpha) + ax.spines['bottom'].set_alpha(alpha) +def fig_to_html(fig): + """ + converts a matplotlib figure into an html image -@app.route('/', methods=['GET', 'POST']) + :param fig: matplotlibe figure object + :returns: STR html string + """ + buf = io.BytesIO() + fig.savefig(buf, format='png') + img = ('data:image/png;base64,{}' + .format(b64.b64encode(buf.getvalue())) + .replace("b'",'') + .replace("'",'')) + return img + +@app.route('/') def index(): - global nations + return redirect('/home') + + +@app.route('/home') +def home(): + return render_template('home.html') + +@app.route('/matplotlib', methods=['GET', 'POST']) +def matplotlib_plot(): + form = MyForm() + head_scripts = render_template('chartist_head_scripts.html') + body = render_template('matplotlib.html', form=form) + scripts = render_template('matplotlib.js') + return render_template('home.html',head_scripts=head_scripts, body=body, scripts=scripts) + +@app.route('/chartist', methods=['GET', 'POST']) +def chartist(): + form = MyForm() + head_scripts = render_template('chartist_head_scripts.html') + body = render_template('chartist.html', form=form) + scripts = render_template('chartist.js') + return render_template('home.html', head_scripts=head_scripts, body=body, scripts=scripts) + +@app.route('/chartist1', methods=['GET', 'POST']) +def chartist1(): form = MyForm() return render_template('chart.html', form=form) @@ -36,6 +102,13 @@ def data(nation): data = '{' + 'labels:{}, series: {}'.format(df2.index.astype(int).tolist(), df2[nation].astype(float).tolist()) + '}' return jsonify({'results':df2[nation].astype(float).tolist(), 'labels':df2.index.astype(float).tolist()}) +@app.route('/mpl/') +def mpl(nation): + fig, ax = plt.subplots() + df2[nation].astype(float).plot(ax=ax, color='#D95D39', title=nation + ' population') + hide_spines(ax) + return jsonify({'src': fig_to_html(ax.figure)}) + if __name__ == '__main__': port = int(os.environ.get("PORT", 5000)) app.run(host='0.0.0.0', port=port) \ No newline at end of file diff --git a/app/templates/home.html b/app/templates/home.html new file mode 100644 index 0000000..570e927 --- /dev/null +++ b/app/templates/home.html @@ -0,0 +1,51 @@ + + + +{{ head_scripts | safe}} + + + + +
+ Home + Home + Chartist + Matplotlib +
+ +{{ body | safe}} + + + + + + diff --git a/app/templates/matplotlib.html b/app/templates/matplotlib.html new file mode 100644 index 0000000..8580f98 --- /dev/null +++ b/app/templates/matplotlib.html @@ -0,0 +1,21 @@ + +{% from "_render_field.html" import render_field %} + +

Population by Nation


+data from +data.world +

+Created with Flask and matplotlib + + + + +
+ World Population +{{ render_field(form.nation) }} + + + + + + \ No newline at end of file diff --git a/app/templates/matplotlib.js b/app/templates/matplotlib.js new file mode 100644 index 0000000..8d1ce03 --- /dev/null +++ b/app/templates/matplotlib.js @@ -0,0 +1,11 @@ +function updateChartSrc(){ + var nation = $("#nation option:selected").text() + var updatedData = $.get('/mpl/'.concat(nation)); + updatedData.done(function(results){ + $("img[name=population]").attr("src", results.src) + }); +} + + + +$("#nation").on('change', updateChartSrc); diff --git a/notebooks/data exploration.ipynb b/notebooks/data exploration.ipynb index d11d311..3d5d5be 100644 --- a/notebooks/data exploration.ipynb +++ b/notebooks/data exploration.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "metadata": { "collapsed": true, "scrolled": true @@ -19,18 +19,33 @@ "source": [ "import os\n", "import pandas as pd\n", - "import settings" + "import settings\n", + "\n", + "% matplotlib inline" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -84,7 +99,7 @@ "4 Georgia 1980 --" ] }, - "execution_count": 21, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -218,6 +233,321 @@ "source": [ "f'labels:{df2.index.astype(int).tolist()}, series: [{df2[nation].astype(float).tolist()}]'" ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(os.path.join(settings.data_dir, 'pop_by_country_long_form.csv'))\n", + "df['Year'] = df['Year'].str[4:].astype(int)\n", + "df2 = df.groupby(['Year', 'Nation']).sum().unstack()\n", + "df2.columns = df2.columns.droplevel()\n", + "nations = df2.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "df2[nations[12]].astype(float).plot(ax=ax);" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "items = ['mpl/' + nation for nation in df2.columns]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('mpl/Afghanistan', 'mpl/Afghanistan'),\n", + " ('mpl/Africa', 'mpl/Africa'),\n", + " ('mpl/Albania', 'mpl/Albania'),\n", + " ('mpl/Algeria', 'mpl/Algeria'),\n", + " ('mpl/American Samoa', 'mpl/American Samoa'),\n", + " ('mpl/Angola', 'mpl/Angola'),\n", + " ('mpl/Antarctica', 'mpl/Antarctica'),\n", + " ('mpl/Antigua and Barbuda', 'mpl/Antigua and Barbuda'),\n", + " ('mpl/Argentina', 'mpl/Argentina'),\n", + " ('mpl/Armenia', 'mpl/Armenia'),\n", + " ('mpl/Aruba', 'mpl/Aruba'),\n", + " ('mpl/Asia & Oceania', 'mpl/Asia & Oceania'),\n", + " ('mpl/Australia', 'mpl/Australia'),\n", + " ('mpl/Austria', 'mpl/Austria'),\n", + " ('mpl/Azerbaijan', 'mpl/Azerbaijan'),\n", + " ('mpl/Bahamas, The', 'mpl/Bahamas, The'),\n", + " ('mpl/Bahrain', 'mpl/Bahrain'),\n", + " ('mpl/Bangladesh', 'mpl/Bangladesh'),\n", + " ('mpl/Barbados', 'mpl/Barbados'),\n", + " ('mpl/Belarus', 'mpl/Belarus'),\n", + " ('mpl/Belgium', 'mpl/Belgium'),\n", + " ('mpl/Belize', 'mpl/Belize'),\n", + " ('mpl/Benin', 'mpl/Benin'),\n", + " ('mpl/Bermuda', 'mpl/Bermuda'),\n", + " ('mpl/Bhutan', 'mpl/Bhutan'),\n", + " ('mpl/Bolivia', 'mpl/Bolivia'),\n", + " ('mpl/Bosnia and Herzegovina', 'mpl/Bosnia and Herzegovina'),\n", + " ('mpl/Botswana', 'mpl/Botswana'),\n", + " ('mpl/Brazil', 'mpl/Brazil'),\n", + " ('mpl/Brunei', 'mpl/Brunei'),\n", + " ('mpl/Bulgaria', 'mpl/Bulgaria'),\n", + " ('mpl/Burkina Faso', 'mpl/Burkina Faso'),\n", + " ('mpl/Burma (Myanmar)', 'mpl/Burma (Myanmar)'),\n", + " ('mpl/Burundi', 'mpl/Burundi'),\n", + " ('mpl/Cambodia', 'mpl/Cambodia'),\n", + " ('mpl/Cameroon', 'mpl/Cameroon'),\n", + " ('mpl/Canada', 'mpl/Canada'),\n", + " ('mpl/Cape Verde', 'mpl/Cape Verde'),\n", + " ('mpl/Cayman Islands', 'mpl/Cayman Islands'),\n", + " ('mpl/Central & South America', 'mpl/Central & South America'),\n", + " ('mpl/Central African Republic', 'mpl/Central African Republic'),\n", + " ('mpl/Chad', 'mpl/Chad'),\n", + " ('mpl/Chile', 'mpl/Chile'),\n", + " ('mpl/China', 'mpl/China'),\n", + " ('mpl/Colombia', 'mpl/Colombia'),\n", + " ('mpl/Comoros', 'mpl/Comoros'),\n", + " ('mpl/Congo (Brazzaville)', 'mpl/Congo (Brazzaville)'),\n", + " ('mpl/Congo (Kinshasa)', 'mpl/Congo (Kinshasa)'),\n", + " ('mpl/Cook Islands', 'mpl/Cook Islands'),\n", + " ('mpl/Costa Rica', 'mpl/Costa Rica'),\n", + " ('mpl/Cote dIvoire (IvoryCoast)', 'mpl/Cote dIvoire (IvoryCoast)'),\n", + " ('mpl/Croatia', 'mpl/Croatia'),\n", + " ('mpl/Cuba', 'mpl/Cuba'),\n", + " ('mpl/Cyprus', 'mpl/Cyprus'),\n", + " ('mpl/Czech Republic', 'mpl/Czech Republic'),\n", + " ('mpl/Denmark', 'mpl/Denmark'),\n", + " ('mpl/Djibouti', 'mpl/Djibouti'),\n", + " ('mpl/Dominica', 'mpl/Dominica'),\n", + " ('mpl/Dominican Republic', 'mpl/Dominican Republic'),\n", + " ('mpl/Ecuador', 'mpl/Ecuador'),\n", + " ('mpl/Egypt', 'mpl/Egypt'),\n", + " ('mpl/El Salvador', 'mpl/El Salvador'),\n", + " ('mpl/Equatorial Guinea', 'mpl/Equatorial Guinea'),\n", + " ('mpl/Eritrea', 'mpl/Eritrea'),\n", + " ('mpl/Estonia', 'mpl/Estonia'),\n", + " ('mpl/Ethiopia', 'mpl/Ethiopia'),\n", + " ('mpl/Eurasia', 'mpl/Eurasia'),\n", + " ('mpl/Europe', 'mpl/Europe'),\n", + " ('mpl/Falkland Islands (Islas Malvinas)',\n", + " 'mpl/Falkland Islands (Islas Malvinas)'),\n", + " ('mpl/Faroe Islands', 'mpl/Faroe Islands'),\n", + " ('mpl/Fiji', 'mpl/Fiji'),\n", + " ('mpl/Finland', 'mpl/Finland'),\n", + " ('mpl/Former Czechoslovakia', 'mpl/Former Czechoslovakia'),\n", + " ('mpl/Former Serbia and Montenegro', 'mpl/Former Serbia and Montenegro'),\n", + " ('mpl/Former U.S.S.R.', 'mpl/Former U.S.S.R.'),\n", + " ('mpl/Former Yugoslavia', 'mpl/Former Yugoslavia'),\n", + " ('mpl/France', 'mpl/France'),\n", + " ('mpl/French Guiana', 'mpl/French Guiana'),\n", + " ('mpl/French Polynesia', 'mpl/French Polynesia'),\n", + " ('mpl/Gabon', 'mpl/Gabon'),\n", + " ('mpl/Gambia, The', 'mpl/Gambia, The'),\n", + " ('mpl/Georgia', 'mpl/Georgia'),\n", + " ('mpl/Germany', 'mpl/Germany'),\n", + " ('mpl/Germany, East', 'mpl/Germany, East'),\n", + " ('mpl/Germany, West', 'mpl/Germany, West'),\n", + " ('mpl/Ghana', 'mpl/Ghana'),\n", + " ('mpl/Gibraltar', 'mpl/Gibraltar'),\n", + " ('mpl/Greece', 'mpl/Greece'),\n", + " ('mpl/Greenland', 'mpl/Greenland'),\n", + " ('mpl/Grenada', 'mpl/Grenada'),\n", + " ('mpl/Guadeloupe', 'mpl/Guadeloupe'),\n", + " ('mpl/Guam', 'mpl/Guam'),\n", + " ('mpl/Guatemala', 'mpl/Guatemala'),\n", + " ('mpl/Guinea', 'mpl/Guinea'),\n", + " ('mpl/Guinea-Bissau', 'mpl/Guinea-Bissau'),\n", + " ('mpl/Guyana', 'mpl/Guyana'),\n", + " ('mpl/Haiti', 'mpl/Haiti'),\n", + " ('mpl/Hawaiian Trade Zone', 'mpl/Hawaiian Trade Zone'),\n", + " ('mpl/Honduras', 'mpl/Honduras'),\n", + " ('mpl/Hong Kong', 'mpl/Hong Kong'),\n", + " ('mpl/Hungary', 'mpl/Hungary'),\n", + " ('mpl/Iceland', 'mpl/Iceland'),\n", + " ('mpl/India', 'mpl/India'),\n", + " ('mpl/Indonesia', 'mpl/Indonesia'),\n", + " ('mpl/Iran', 'mpl/Iran'),\n", + " ('mpl/Iraq', 'mpl/Iraq'),\n", + " ('mpl/Ireland', 'mpl/Ireland'),\n", + " ('mpl/Israel', 'mpl/Israel'),\n", + " ('mpl/Italy', 'mpl/Italy'),\n", + " ('mpl/Jamaica', 'mpl/Jamaica'),\n", + " ('mpl/Japan', 'mpl/Japan'),\n", + " ('mpl/Jordan', 'mpl/Jordan'),\n", + " ('mpl/Kazakhstan', 'mpl/Kazakhstan'),\n", + " ('mpl/Kenya', 'mpl/Kenya'),\n", + " ('mpl/Kiribati', 'mpl/Kiribati'),\n", + " ('mpl/Korea, North', 'mpl/Korea, North'),\n", + " ('mpl/Korea, South', 'mpl/Korea, South'),\n", + " ('mpl/Kuwait', 'mpl/Kuwait'),\n", + " ('mpl/Kyrgyzstan', 'mpl/Kyrgyzstan'),\n", + " ('mpl/Laos', 'mpl/Laos'),\n", + " ('mpl/Latvia', 'mpl/Latvia'),\n", + " ('mpl/Lebanon', 'mpl/Lebanon'),\n", + " ('mpl/Lesotho', 'mpl/Lesotho'),\n", + " ('mpl/Liberia', 'mpl/Liberia'),\n", + " ('mpl/Libya', 'mpl/Libya'),\n", + " ('mpl/Lithuania', 'mpl/Lithuania'),\n", + " ('mpl/Luxembourg', 'mpl/Luxembourg'),\n", + " ('mpl/Macau', 'mpl/Macau'),\n", + " ('mpl/Macedonia', 'mpl/Macedonia'),\n", + " ('mpl/Madagascar', 'mpl/Madagascar'),\n", + " ('mpl/Malawi', 'mpl/Malawi'),\n", + " ('mpl/Malaysia', 'mpl/Malaysia'),\n", + " ('mpl/Maldives', 'mpl/Maldives'),\n", + " ('mpl/Mali', 'mpl/Mali'),\n", + " ('mpl/Malta', 'mpl/Malta'),\n", + " ('mpl/Martinique', 'mpl/Martinique'),\n", + " ('mpl/Mauritania', 'mpl/Mauritania'),\n", + " ('mpl/Mauritius', 'mpl/Mauritius'),\n", + " ('mpl/Mexico', 'mpl/Mexico'),\n", + " ('mpl/Middle East', 'mpl/Middle East'),\n", + " ('mpl/Moldova', 'mpl/Moldova'),\n", + " ('mpl/Mongolia', 'mpl/Mongolia'),\n", + " ('mpl/Montenegro', 'mpl/Montenegro'),\n", + " ('mpl/Montserrat', 'mpl/Montserrat'),\n", + " ('mpl/Morocco', 'mpl/Morocco'),\n", + " ('mpl/Mozambique', 'mpl/Mozambique'),\n", + " ('mpl/Namibia', 'mpl/Namibia'),\n", + " ('mpl/Nauru', 'mpl/Nauru'),\n", + " ('mpl/Nepal', 'mpl/Nepal'),\n", + " ('mpl/Netherlands', 'mpl/Netherlands'),\n", + " ('mpl/Netherlands Antilles', 'mpl/Netherlands Antilles'),\n", + " ('mpl/New Caledonia', 'mpl/New Caledonia'),\n", + " ('mpl/New Zealand', 'mpl/New Zealand'),\n", + " ('mpl/Nicaragua', 'mpl/Nicaragua'),\n", + " ('mpl/Niger', 'mpl/Niger'),\n", + " ('mpl/Nigeria', 'mpl/Nigeria'),\n", + " ('mpl/Niue', 'mpl/Niue'),\n", + " ('mpl/North America', 'mpl/North America'),\n", + " ('mpl/Norway', 'mpl/Norway'),\n", + " ('mpl/Oman', 'mpl/Oman'),\n", + " ('mpl/Pakistan', 'mpl/Pakistan'),\n", + " ('mpl/Palestine', 'mpl/Palestine'),\n", + " ('mpl/Panama', 'mpl/Panama'),\n", + " ('mpl/Papua New Guinea', 'mpl/Papua New Guinea'),\n", + " ('mpl/Paraguay', 'mpl/Paraguay'),\n", + " ('mpl/Peru', 'mpl/Peru'),\n", + " ('mpl/Philippines', 'mpl/Philippines'),\n", + " ('mpl/Poland', 'mpl/Poland'),\n", + " ('mpl/Portugal', 'mpl/Portugal'),\n", + " ('mpl/Puerto Rico', 'mpl/Puerto Rico'),\n", + " ('mpl/Qatar', 'mpl/Qatar'),\n", + " ('mpl/Reunion', 'mpl/Reunion'),\n", + " ('mpl/Romania', 'mpl/Romania'),\n", + " ('mpl/Russia', 'mpl/Russia'),\n", + " ('mpl/Rwanda', 'mpl/Rwanda'),\n", + " ('mpl/Saint Helena', 'mpl/Saint Helena'),\n", + " ('mpl/Saint Kitts and Nevis', 'mpl/Saint Kitts and Nevis'),\n", + " ('mpl/Saint Lucia', 'mpl/Saint Lucia'),\n", + " ('mpl/Saint Pierre and Miquelon', 'mpl/Saint Pierre and Miquelon'),\n", + " ('mpl/Saint Vincent/Grenadines', 'mpl/Saint Vincent/Grenadines'),\n", + " ('mpl/Samoa', 'mpl/Samoa'),\n", + " ('mpl/Sao Tome and Principe', 'mpl/Sao Tome and Principe'),\n", + " ('mpl/Saudi Arabia', 'mpl/Saudi Arabia'),\n", + " ('mpl/Senegal', 'mpl/Senegal'),\n", + " ('mpl/Serbia', 'mpl/Serbia'),\n", + " ('mpl/Seychelles', 'mpl/Seychelles'),\n", + " ('mpl/Sierra Leone', 'mpl/Sierra Leone'),\n", + " ('mpl/Singapore', 'mpl/Singapore'),\n", + " ('mpl/Slovakia', 'mpl/Slovakia'),\n", + " ('mpl/Slovenia', 'mpl/Slovenia'),\n", + " ('mpl/Solomon Islands', 'mpl/Solomon Islands'),\n", + " ('mpl/Somalia', 'mpl/Somalia'),\n", + " ('mpl/South Africa', 'mpl/South Africa'),\n", + " ('mpl/Spain', 'mpl/Spain'),\n", + " ('mpl/Sri Lanka', 'mpl/Sri Lanka'),\n", + " ('mpl/Sudan', 'mpl/Sudan'),\n", + " ('mpl/Suriname', 'mpl/Suriname'),\n", + " ('mpl/Swaziland', 'mpl/Swaziland'),\n", + " ('mpl/Sweden', 'mpl/Sweden'),\n", + " ('mpl/Switzerland', 'mpl/Switzerland'),\n", + " ('mpl/Syria', 'mpl/Syria'),\n", + " ('mpl/Taiwan', 'mpl/Taiwan'),\n", + " ('mpl/Tajikistan', 'mpl/Tajikistan'),\n", + " ('mpl/Tanzania', 'mpl/Tanzania'),\n", + " ('mpl/Thailand', 'mpl/Thailand'),\n", + " ('mpl/Timor-Leste (East Timor)', 'mpl/Timor-Leste (East Timor)'),\n", + " ('mpl/Togo', 'mpl/Togo'),\n", + " ('mpl/Tonga', 'mpl/Tonga'),\n", + " ('mpl/Trinidad and Tobago', 'mpl/Trinidad and Tobago'),\n", + " ('mpl/Tunisia', 'mpl/Tunisia'),\n", + " ('mpl/Turkey', 'mpl/Turkey'),\n", + " ('mpl/Turkmenistan', 'mpl/Turkmenistan'),\n", + " ('mpl/Turks and Caicos Islands', 'mpl/Turks and Caicos Islands'),\n", + " ('mpl/U.S. Pacific Islands', 'mpl/U.S. Pacific Islands'),\n", + " ('mpl/Uganda', 'mpl/Uganda'),\n", + " ('mpl/Ukraine', 'mpl/Ukraine'),\n", + " ('mpl/United Arab Emirates', 'mpl/United Arab Emirates'),\n", + " ('mpl/United Kingdom', 'mpl/United Kingdom'),\n", + " ('mpl/United States', 'mpl/United States'),\n", + " ('mpl/Uruguay', 'mpl/Uruguay'),\n", + " ('mpl/Uzbekistan', 'mpl/Uzbekistan'),\n", + " ('mpl/Vanuatu', 'mpl/Vanuatu'),\n", + " ('mpl/Venezuela', 'mpl/Venezuela'),\n", + " ('mpl/Vietnam', 'mpl/Vietnam'),\n", + " ('mpl/Virgin Islands, U.S.', 'mpl/Virgin Islands, U.S.'),\n", + " ('mpl/Virgin Islands, British', 'mpl/Virgin Islands, British'),\n", + " ('mpl/Wake Island', 'mpl/Wake Island'),\n", + " ('mpl/Western Sahara', 'mpl/Western Sahara'),\n", + " ('mpl/World', 'mpl/World'),\n", + " ('mpl/Yemen', 'mpl/Yemen'),\n", + " ('mpl/Zambia', 'mpl/Zambia'),\n", + " ('mpl/Zimbabwe', 'mpl/Zimbabwe')]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(zip(items, items))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": {