Last active
March 16, 2017 14:51
-
-
Save jazzido/bfd9482059baf2af103a86b1cc707f74 to your computer and use it in GitHub Desktop.
US Visas Issued to Argentines
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Nonimmigrant Visa Issuances by Visa Class and by Nationality\n", | |
"\n", | |
"Thanks to [Jeremy Singer-Vine](https://twitter.com/jsvine)'s fantastic [Data is Plural](https://tinyletter.com/data-is-plural/letters/data-is-plural-2017-03-15-edition) newsletter for the link to this dataset." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
" <script>\n", | |
" \n", | |
" function vct_load_lib(url, callback){\n", | |
" if(typeof d3 !== 'undefined' &&\n", | |
" url === 'http://d3js.org/d3.v3.min.js'){\n", | |
" callback()\n", | |
" }\n", | |
" var s = document.createElement('script');\n", | |
" s.src = url;\n", | |
" s.async = true;\n", | |
" s.onreadystatechange = s.onload = callback;\n", | |
" s.onerror = function(){\n", | |
" console.warn(\"failed to load library \" + url);\n", | |
" };\n", | |
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n", | |
" };\n", | |
" var vincent_event = new CustomEvent(\n", | |
" \"vincent_libs_loaded\",\n", | |
" {bubbles: true, cancelable: true}\n", | |
" );\n", | |
" \n", | |
" function load_all_libs(){\n", | |
" console.log('Loading Vincent libs...')\n", | |
" vct_load_lib('http://d3js.org/d3.v3.min.js', function(){\n", | |
" vct_load_lib('http://d3js.org/d3.geo.projection.v0.min.js', function(){\n", | |
" vct_load_lib('http://wrobstory.github.io/d3-cloud/d3.layout.cloud.js', function(){\n", | |
" vct_load_lib('http://wrobstory.github.io/vega/vega.v1.3.3.js', function(){\n", | |
" window.dispatchEvent(vincent_event);\n", | |
" });\n", | |
" });\n", | |
" });\n", | |
" });\n", | |
" };\n", | |
" if(typeof define === \"function\" && define.amd){\n", | |
" if (window['d3'] === undefined ||\n", | |
" window['topojson'] === undefined){\n", | |
" require.config(\n", | |
" {paths: {\n", | |
" d3: 'http://d3js.org/d3.v3.min',\n", | |
" topojson: 'http://d3js.org/topojson.v1.min'\n", | |
" }\n", | |
" }\n", | |
" );\n", | |
" require([\"d3\"], function(d3){\n", | |
" console.log('Loading Vincent from require.js...')\n", | |
" window.d3 = d3;\n", | |
" require([\"topojson\"], function(topojson){\n", | |
" window.topojson = topojson;\n", | |
" load_all_libs();\n", | |
" });\n", | |
" });\n", | |
" } else {\n", | |
" load_all_libs();\n", | |
" };\n", | |
" }else{\n", | |
" console.log('Require.js not found, loading manually...')\n", | |
" load_all_libs();\n", | |
" };\n", | |
"\n", | |
" </script>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import pandas as pd\n", | |
"import vincent\n", | |
"vincent.core.initialize_notebook()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"data = pd.read_excel(\"https://travel.state.gov/content/dam/visas/Statistics/Non-Immigrant-Statistics/NIVDetailTables/FYs97-16_NIVDetailTable.xls\", sheetname=None)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"COUNTRY = 'Argentina'\n", | |
"rv = pd.DataFrame()\n", | |
"for s in data.keys():\n", | |
" df = data[s]\n", | |
" year = df.columns[0][-4:]\n", | |
" x = df[df[df.columns[0]] == COUNTRY]\n", | |
" x.loc[:,'year'] = year\n", | |
" rv = rv.append(x)\n", | |
"\n", | |
"rv.sort_values('year', inplace=True)\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Draw chart" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div id=\"vis2419c405d4e5464ab1dffa039a1ac239\"></div>\n", | |
"<script>\n", | |
" ( function() {\n", | |
" var _do_plot = function() {\n", | |
" if (typeof vg === 'undefined') {\n", | |
" window.addEventListener('vincent_libs_loaded', _do_plot)\n", | |
" return;\n", | |
" }\n", | |
" vg.parse.spec({\"axes\": [{\"scale\": \"x\", \"title\": \"A\\u00f1o\", \"type\": \"x\"}, {\"scale\": \"y\", \"title\": \"Cantidad\", \"type\": \"y\"}], \"data\": [{\"name\": \"table\", \"values\": [{\"col\": \"F-1\", \"idx\": \"1997\", \"val\": 3040.0}, {\"col\": \"F-1\", \"idx\": \"1998\", \"val\": 3108.0}, {\"col\": \"F-1\", \"idx\": \"1999\", \"val\": 3446.0}, {\"col\": \"F-1\", \"idx\": \"2000\", \"val\": 3208.0}, {\"col\": \"F-1\", \"idx\": \"2001\", \"val\": 3170.0}, {\"col\": \"F-1\", \"idx\": \"2002\", \"val\": 1885.0}, {\"col\": \"F-1\", \"idx\": \"2003\", \"val\": 1350.0}, {\"col\": \"F-1\", \"idx\": \"2004\", \"val\": 1153.0}, {\"col\": \"F-1\", \"idx\": \"2005\", \"val\": 1075.0}, {\"col\": \"F-1\", \"idx\": \"2006\", \"val\": 1115.0}, {\"col\": \"F-1\", \"idx\": \"2007\", \"val\": 1061.0}, {\"col\": \"F-1\", \"idx\": \"2008\", \"val\": 1117.0}, {\"col\": \"F-1\", \"idx\": \"2009\", \"val\": 1076.0}, {\"col\": \"F-1\", \"idx\": \"2010\", \"val\": 1103.0}, {\"col\": \"F-1\", \"idx\": \"2011\", \"val\": 1156.0}, {\"col\": \"F-1\", \"idx\": \"2012\", \"val\": 1155.0}, {\"col\": \"F-1\", \"idx\": \"2013\", \"val\": 1248.0}, {\"col\": \"F-1\", \"idx\": \"2014\", \"val\": 1293.0}, {\"col\": \"F-1\", \"idx\": \"2015\", \"val\": 1450.0}, {\"col\": \"F-1\", \"idx\": \"2016\", \"val\": 1482.0}, {\"col\": \"H-1B\", \"idx\": \"1997\", \"val\": 535.0}, {\"col\": \"H-1B\", \"idx\": \"1998\", \"val\": 560.0}, {\"col\": \"H-1B\", \"idx\": \"1999\", \"val\": 627.0}, {\"col\": \"H-1B\", \"idx\": \"2000\", \"val\": 817.0}, {\"col\": \"H-1B\", \"idx\": \"2001\", \"val\": 1106.0}, {\"col\": \"H-1B\", \"idx\": \"2002\", \"val\": 1644.0}, {\"col\": \"H-1B\", \"idx\": \"2003\", \"val\": 1517.0}, {\"col\": \"H-1B\", \"idx\": \"2004\", \"val\": 1507.0}, {\"col\": \"H-1B\", \"idx\": \"2005\", \"val\": 1517.0}, {\"col\": \"H-1B\", \"idx\": \"2006\", \"val\": 1406.0}, {\"col\": \"H-1B\", \"idx\": \"2007\", \"val\": 1185.0}, {\"col\": \"H-1B\", \"idx\": \"2008\", \"val\": 859.0}, {\"col\": \"H-1B\", \"idx\": \"2009\", \"val\": 753.0}, {\"col\": \"H-1B\", \"idx\": \"2010\", \"val\": 727.0}, {\"col\": \"H-1B\", \"idx\": \"2011\", \"val\": 675.0}, {\"col\": \"H-1B\", \"idx\": \"2012\", \"val\": 525.0}, {\"col\": \"H-1B\", \"idx\": \"2013\", \"val\": 487.0}, {\"col\": \"H-1B\", \"idx\": \"2014\", \"val\": 434.0}, {\"col\": \"H-1B\", \"idx\": \"2015\", \"val\": 399.0}, {\"col\": \"H-1B\", \"idx\": \"2016\", \"val\": 336.0}, {\"col\": \"J-1\", \"idx\": \"1997\", \"val\": 1233.0}, {\"col\": \"J-1\", \"idx\": \"1998\", \"val\": 1514.0}, {\"col\": \"J-1\", \"idx\": \"1999\", \"val\": 1695.0}, {\"col\": \"J-1\", \"idx\": \"2000\", \"val\": 2063.0}, {\"col\": \"J-1\", \"idx\": \"2001\", \"val\": 2534.0}, {\"col\": \"J-1\", \"idx\": \"2002\", \"val\": 2209.0}, {\"col\": \"J-1\", \"idx\": \"2003\", \"val\": 2818.0}, {\"col\": \"J-1\", \"idx\": \"2004\", \"val\": 3031.0}, {\"col\": \"J-1\", \"idx\": \"2005\", \"val\": 3645.0}, {\"col\": \"J-1\", \"idx\": \"2006\", \"val\": 3933.0}, {\"col\": \"J-1\", \"idx\": \"2007\", \"val\": 4746.0}, {\"col\": \"J-1\", \"idx\": \"2008\", \"val\": 4603.0}, {\"col\": \"J-1\", \"idx\": \"2009\", \"val\": 4947.0}, {\"col\": \"J-1\", \"idx\": \"2010\", \"val\": 3369.0}, {\"col\": \"J-1\", \"idx\": \"2011\", \"val\": 3989.0}, {\"col\": \"J-1\", \"idx\": \"2012\", \"val\": 3435.0}, {\"col\": \"J-1\", \"idx\": \"2013\", \"val\": 3333.0}, {\"col\": \"J-1\", \"idx\": \"2014\", \"val\": 3836.0}, {\"col\": \"J-1\", \"idx\": \"2015\", \"val\": 3729.0}, {\"col\": \"J-1\", \"idx\": \"2016\", \"val\": 4393.0}]}, {\"name\": \"stats\", \"source\": \"table\", \"transform\": [{\"keys\": [\"data.idx\"], \"type\": \"facet\"}, {\"type\": \"stats\", \"value\": \"data.val\"}]}], \"height\": 500, \"legends\": [{\"fill\": \"color\", \"offset\": 0, \"properties\": {}, \"title\": \"Categories\"}], \"marks\": [{\"from\": {\"data\": \"table\", \"transform\": [{\"keys\": [\"data.col\"], \"type\": \"facet\"}, {\"height\": \"data.val\", \"point\": \"data.idx\", \"type\": \"stack\"}]}, \"marks\": [{\"properties\": {\"enter\": {\"fill\": {\"field\": \"data.col\", \"scale\": \"color\"}, \"width\": {\"band\": true, \"offset\": -1, \"scale\": \"x\"}, \"x\": {\"field\": \"data.idx\", \"scale\": \"x\"}, \"y\": {\"field\": \"y\", \"scale\": \"y\"}, \"y2\": {\"field\": \"y2\", \"scale\": \"y\"}}}, \"type\": \"rect\"}], \"type\": \"group\"}], \"padding\": \"auto\", \"scales\": [{\"domain\": {\"data\": \"table\", \"field\": \"data.idx\"}, \"name\": \"x\", \"range\": \"width\", \"type\": \"ordinal\", \"zero\": false}, {\"domain\": {\"data\": \"stats\", \"field\": \"sum\"}, \"name\": \"y\", \"nice\": true, \"range\": \"height\"}, {\"domain\": {\"data\": \"table\", \"field\": \"data.col\"}, \"name\": \"color\", \"range\": \"category20\", \"type\": \"ordinal\"}], \"width\": 960}, function(chart) {\n", | |
" chart({el: \"#vis2419c405d4e5464ab1dffa039a1ac239\"}).update();\n", | |
" });\n", | |
" };\n", | |
" _do_plot();\n", | |
" })();\n", | |
"</script>\n", | |
"<style>.vega canvas {width: 100%;}</style>\n", | |
" " | |
], | |
"text/plain": [ | |
"<vincent.charts.Bar at 0x10b8acbd0>" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"CATEGORIES = ['J-1', 'F-1', 'H-1B']\n", | |
"\n", | |
"chart_data = {c: list(rv[c]) for c in CATEGORIES}\n", | |
"chart_data['year'] = list(rv['year'])\n", | |
"\n", | |
"stacked = vincent.StackedBar(chart_data, iter_idx='year')\n", | |
"stacked.axis_titles(x='Año', y='Cantidad')\n", | |
"stacked.legend(title='Categories')" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment