Skip to content

Instantly share code, notes, and snippets.

@GabsGear
Created August 15, 2018 13:39
Show Gist options
  • Save GabsGear/dc9f910cd31ce29e5d30723eb6a95cca to your computer and use it in GitHub Desktop.
Save GabsGear/dc9f910cd31ce29e5d30723eb6a95cca to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Aula 1 \n",
"\n",
"### Jupyter Notebook \n",
"\n",
"\"Jupyter Notebooks é uma aplicação web que pode ajudar a entender e visualizar dados e resultados de análises, juntamente com o código! Facilita a experimentação, colaboração e publicação online. Anteriormente conhecido como IPython notebooks, hoje permite o uso de outras linguagens, sendo Python o default.\"\n",
"\n",
"Guia: https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook\n",
"\n",
"\n",
"#### Instalação:\n",
"\n",
"Após o Python e o pip instalado execute:\n",
"\n",
"***No Windows:***\n",
"```\n",
" python -m pip install -U pip setuptools\n",
"```\n",
"***No Linux***\n",
"```\n",
" pip install -U pip setuptools\n",
"```\n",
"E instale o jupyter:\n",
"\n",
"***Python2***\n",
"```\n",
" pip install jupyter\n",
"```\n",
"***Python 3***\n",
"```\n",
" pip3 install jupyter\n",
"```\n",
"\n",
"Para usar abra o terminal/bash na pasta do seu projeto e escreva jupyter-notebook.\n",
"O aplicativo rodará em seu broswer.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As caixas de texto são ***células***, cada uma delas pode ser executada separadamente, nelas podemos escrever códigos em python, markdown além de outras linguagens. Com o passar do tempo aprenderemos a trabalhar com elas.\n",
"\n",
"Podemos escrever no formato markdown:\n",
"\n",
"# Este é um título H1\n",
"## Este é um título H2\n",
"### Este é um título H3...\n",
"\n",
"***Assim escrevemos em negrito***\n",
"\n",
"* Agora \n",
"* Alguns\n",
"* Bullets\n",
"\n",
"***Aprenda mais sobre markdown [clique aqui](https://guides.github.com/features/mastering-markdown/)***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Podemos colocar fórmulas matemáticas no formato latec usando $c\n",
"\n",
"$c = \\sqrt{a^2 + b^2}$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotando gráficos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plotar gráficos com a matplotlib é muito fácil, tendo uma série de números basta chamar o método plot\n",
"\n",
"Veja a documentação completa da matplotlib ***[AQUI](https://matplotlib.org/)***\n",
"\n",
"No código abaixo importamos o pacote da biblioteca matplotlib e criamos um vetor com os pontos que desejamos plotar:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydB1QW17qGXzqioCKCiogNwV5AQRQr1sSosUWNNdZoLElMbDnRE2tMYomx9xZ7SYwaxYqACNgLFiyIFRui9HLXTKL3xKj8sP868/5rZa17j/Pt8ux3/F7nm9nbLDs7Oxv8kQAJkAAJkAAJkAAJqIaAGQ2gataaEyUBEiABEiABEiABmQANIIVAAiRAAiRAAiRAAiojQAOosgXndEmABEiABEiABEiABpAaIAESIAESIAESIAGVEaABVNmCc7okQAIkQAIkQAIkQANIDZAACZAACZAACZCAygjQAKpswTldEiABEiABEiABEqABpAZIgARIgARIgARIQGUEaABVtuCcLgmQAAmQAAmQAAnQAFIDJEACJEACJEACJKAyAjSAKltwTpcESIAESIAESIAEaACpARIgARIgARIgARJQGQEaQJUtOKdLAiRAAiRAAiRAAjSA1AAJkAAJkAAJkAAJqIwADaDKFpzTJQESIAESIAESIAEaQGqABEiABEiABEiABFRGgAZQZQvO6ZIACZAACZAACZAADSA1QAIkQAIkQAIkQAIqI0ADqLIF53RJgARIgARIgARIgAaQGiABEiABEiABEiABlRGgAVTZgnO6JEACJEACJEACJEADSA2QAAmQAAmQAAmQgMoI0ACqbME5XRIgARIgARIgARKgAaQGSIAESIAESIAESEBlBGgAVbbgnC4JkAAJkAAJkAAJ0ABSAyRAAiRAAiRAAiSgMgI0gCpbcE6XBEiABEiABEiABGgAqQESIAESIAESIAESUBkBGkCVLTinSwIkQAIkQAIkQAI0gNQACZAACZAACZAACaiMAA2gyhac0yUBEiABEiABEiABGkBqgARIgARIgARIgARURoAGUGULzumSAAmQAAmQAAmQAA0gNUACJEACJEACJEACKiNAA6iyBed0SYAESIAESIAESIAGkBogARIgARIgARIgAZURoAFU2YJzuiRAAiRAAiRAAiRAA0gNkAAJkAAJkAAJkIDKCNAAqmzBOV0SIAESIAESIAESoAGkBkiABEiABEiABEhAZQRoAFW24JwuCZAACZAACZAACdAAUgMkQAIkQAIkQAIkoDICNIAqW3BOlwRIgARIgARIgARoAKkBEiABEiABEiAB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AggggAACCCDgRIAC0IkS+yCAAAIIIIAAAgESoAAMUGcSCgIIIIAAAggg4ESAAtCJEvsggAACCCCAAAIBEqAADFBnEgoCCCCAAAIIIOBEgALQiRL7IIAAAggggAACARKgAAxQZxIKAggggAACCCDgRIAC0IkS+yCAAAIIIIAAAgESoAAMUGcSCgIIIIAAAggg4ESAAtCJEvsggAACCCCAAAIBEqAADFBnEgoCCCCAAAIIIOBEgALQiRL7IIAAAggggAACARKgAAxQZxIKAggggAACCCDgRIAC0IkS+yCAAAIIIIAAAgESoAAMUGcSCgIIIIAAAggg4ESAAtCJEvsggAACCCCAAAIBEqAADFBnEgoCCCCAAAIIIOBEgALQiRL7IIAAAggggAACARKgAAxQZxIKAggggAACCCDgRIAC0IkS+yCAAAIIIIAAAgESoAAMUGcSCgIIIIAAAggg4ESAAtCJEvsggAACCCCAAAIBEqAADFBnEgoCCCCAAAIIIOBEgALQiRL7IIAAAggggAACARKgAAxQZxIKAggggAACCCDgRIAC0IkS+yCAAAIIIIAAAgESoAAMUGcSCgIIIIAAAggg4ETgf/Vzlouqn+EqAAAAAElFTkSuQmCC\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1d5fa5feba8>]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib notebook\n",
"entradas = [1, -1, 3, 8, -3]\n",
"plt.plot(entradas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para saber mais use o comando help. Esse comando é seu maior aliado."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"plt.plot?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Então podemos alterar os parâmetros para fazer criar um gráfico mais legível:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1d5fa587470>]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(entradas, color=\"red\", linestyle=\"dashed\", marker = 'o', markerfacecolor=\"yellow\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Podemos plotar funções matemáticas:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"x = np.linspace(0, 2, 100)\n",
"plt.plot(x, x, label='linear')\n",
"plt.plot(x, x**2, label='quadratico')\n",
"plt.plot(x, x**3, label='cubico')\n",
"plt.xlabel('Eixo X')\n",
"plt.ylabel('Eixo Y')\n",
"plt.title(\"Funções\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.arange(0, 10, 0.2)\n",
"y = np.sin(x)\n",
"fig, ax = plt.subplots()\n",
"ax.plot(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Seaborn \n",
"Outra ferramenta muito boa para plotar gráficos é o Seaborn:\n",
"\n",
"Conheça [aqui](https://seaborn.pydata.org)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"________________________________________________________________________________________________________________________________\n",
"# Datasets\n",
"\n",
"Dataset ou conjunto de dados são arquivos que contém milhares de informações sobre determinados assuntos, esses arquivos podem vir no formado XLS, XLSX, EXCEL, HTML, JSON, XML entre outros. Datasets são nada mais do que planilhas, com linhas e colunas. Por exemplo se quisermos guardar em um dataset o nome e idade de um milhão de pessoas, teremos um arquivo com um milhão de linhas e duas colunas.\n",
"\n",
"#### Onde encontrar Datasets:\n",
"\n",
"* [Kaggle](https://www.kaggle.com/datasets) O Kaggle é uma ótima ferramenta para encontrar desafios e se conectar com outros cientistas de dados do mundo todo, vai ser uma ótima ferramenta para aumentar seu portifolio, lá eles possuem vários datasets legais.\n",
"\n",
"* [Dados.gov.br](http://dados.gov.br/) O portal brasileiro de dados abertos. Lá você vai encontrar datasets sobre diferentes áreas e setores do Brasil, de transportes a saúde ***Lembrando que com grandes poderes vem grandes responsabilidades***.\n",
"\n",
"* [IBGE-sidra](https://sidra.ibge.gov.br/home/primpec/brasil) O site do IBGE fornece seus datasets pela plataforma sidra.\n",
"\n",
"* [FiveThirtyEight](https://github.com/fivethirtyeight/data) Esse é um site que contém notícias e esportes, lá no git deles temos muitos datasets.\n",
"* ***Esse aqui nem vou falar nada só use: https://github.com/awesomedata/awesome-public-datasets*** \n",
"\n",
"Você também pode montar seu Dataset utilizando técnicas de Data Mining que serão abordadas a frente.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas\n",
"Para trabalhar com os datasets no python ultilizamos a biblioteca [pandas](https://pandas.pydata.org/).\n",
"Pandas é uma biblioteca open source BSD-licensed que garante alta performance e facilidade de uso com ferramentas de estrutura de dados para análise de dados."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para abrir um dataset em csv no pandas ultilize o método 'read_csv' com o nome do arquivo, para visualizar chame escrevendo o nome da variável atribuida:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Vamos aprender pandas com Pokemons"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>Name</th>\n",
" <th>Type 1</th>\n",
" <th>Type 2</th>\n",
" <th>Total</th>\n",
" <th>HP</th>\n",
" <th>Attack</th>\n",
" <th>Defense</th>\n",
" <th>Sp. Atk</th>\n",
" <th>Sp. Def</th>\n",
" <th>Speed</th>\n",
" <th>Generation</th>\n",
" <th>Legendary</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Bulbasaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>318</td>\n",
" <td>45</td>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>45</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Ivysaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>405</td>\n",
" <td>60</td>\n",
" <td>62</td>\n",
" <td>63</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>60</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>525</td>\n",
" <td>80</td>\n",
" <td>82</td>\n",
" <td>83</td>\n",
" <td>100</td>\n",
" <td>100</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>VenusaurMega Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>625</td>\n",
" <td>80</td>\n",
" <td>100</td>\n",
" <td>123</td>\n",
" <td>122</td>\n",
" <td>120</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>Charmander</td>\n",
" <td>Fire</td>\n",
" <td>NaN</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>Charmeleon</td>\n",
" <td>Fire</td>\n",
" <td>NaN</td>\n",
" <td>405</td>\n",
" <td>58</td>\n",
" <td>64</td>\n",
" <td>58</td>\n",
" <td>80</td>\n",
" <td>65</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>Charizard</td>\n",
" <td>Fire</td>\n",
" <td>Flying</td>\n",
" <td>534</td>\n",
" <td>78</td>\n",
" <td>84</td>\n",
" <td>78</td>\n",
" <td>109</td>\n",
" <td>85</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>6</td>\n",
" <td>CharizardMega Charizard X</td>\n",
" <td>Fire</td>\n",
" <td>Dragon</td>\n",
" <td>634</td>\n",
" <td>78</td>\n",
" <td>130</td>\n",
" <td>111</td>\n",
" <td>130</td>\n",
" <td>85</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>6</td>\n",
" <td>CharizardMega Charizard Y</td>\n",
" <td>Fire</td>\n",
" <td>Flying</td>\n",
" <td>634</td>\n",
" <td>78</td>\n",
" <td>104</td>\n",
" <td>78</td>\n",
" <td>159</td>\n",
" <td>115</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>7</td>\n",
" <td>Squirtle</td>\n",
" <td>Water</td>\n",
" <td>NaN</td>\n",
" <td>314</td>\n",
" <td>44</td>\n",
" <td>48</td>\n",
" <td>65</td>\n",
" <td>50</td>\n",
" <td>64</td>\n",
" <td>43</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>8</td>\n",
" <td>Wartortle</td>\n",
" <td>Water</td>\n",
" <td>NaN</td>\n",
" <td>405</td>\n",
" <td>59</td>\n",
" <td>63</td>\n",
" <td>80</td>\n",
" <td>65</td>\n",
" <td>80</td>\n",
" <td>58</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>9</td>\n",
" <td>Blastoise</td>\n",
" <td>Water</td>\n",
" <td>NaN</td>\n",
" <td>530</td>\n",
" <td>79</td>\n",
" <td>83</td>\n",
" <td>100</td>\n",
" <td>85</td>\n",
" <td>105</td>\n",
" <td>78</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>9</td>\n",
" <td>BlastoiseMega Blastoise</td>\n",
" <td>Water</td>\n",
" <td>NaN</td>\n",
" <td>630</td>\n",
" <td>79</td>\n",
" <td>103</td>\n",
" <td>120</td>\n",
" <td>135</td>\n",
" <td>115</td>\n",
" <td>78</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>10</td>\n",
" <td>Caterpie</td>\n",
" <td>Bug</td>\n",
" <td>NaN</td>\n",
" <td>195</td>\n",
" <td>45</td>\n",
" <td>30</td>\n",
" <td>35</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>45</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>11</td>\n",
" <td>Metapod</td>\n",
" <td>Bug</td>\n",
" <td>NaN</td>\n",
" <td>205</td>\n",
" <td>50</td>\n",
" <td>20</td>\n",
" <td>55</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>12</td>\n",
" <td>Butterfree</td>\n",
" <td>Bug</td>\n",
" <td>Flying</td>\n",
" <td>395</td>\n",
" <td>60</td>\n",
" <td>45</td>\n",
" <td>50</td>\n",
" <td>90</td>\n",
" <td>80</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>13</td>\n",
" <td>Weedle</td>\n",
" <td>Bug</td>\n",
" <td>Poison</td>\n",
" <td>195</td>\n",
" <td>40</td>\n",
" <td>35</td>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>50</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>14</td>\n",
" <td>Kakuna</td>\n",
" <td>Bug</td>\n",
" <td>Poison</td>\n",
" <td>205</td>\n",
" <td>45</td>\n",
" <td>25</td>\n",
" <td>50</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>15</td>\n",
" <td>Beedrill</td>\n",
" <td>Bug</td>\n",
" <td>Poison</td>\n",
" <td>395</td>\n",
" <td>65</td>\n",
" <td>90</td>\n",
" <td>40</td>\n",
" <td>45</td>\n",
" <td>80</td>\n",
" <td>75</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>15</td>\n",
" <td>BeedrillMega Beedrill</td>\n",
" <td>Bug</td>\n",
" <td>Poison</td>\n",
" <td>495</td>\n",
" <td>65</td>\n",
" <td>150</td>\n",
" <td>40</td>\n",
" <td>15</td>\n",
" <td>80</td>\n",
" <td>145</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>16</td>\n",
" <td>Pidgey</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>251</td>\n",
" <td>40</td>\n",
" <td>45</td>\n",
" <td>40</td>\n",
" <td>35</td>\n",
" <td>35</td>\n",
" <td>56</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>17</td>\n",
" <td>Pidgeotto</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>349</td>\n",
" <td>63</td>\n",
" <td>60</td>\n",
" <td>55</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>71</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>18</td>\n",
" <td>Pidgeot</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>479</td>\n",
" <td>83</td>\n",
" <td>80</td>\n",
" <td>75</td>\n",
" <td>70</td>\n",
" <td>70</td>\n",
" <td>101</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>18</td>\n",
" <td>PidgeotMega Pidgeot</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>579</td>\n",
" <td>83</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>135</td>\n",
" <td>80</td>\n",
" <td>121</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>19</td>\n",
" <td>Rattata</td>\n",
" <td>Normal</td>\n",
" <td>NaN</td>\n",
" <td>253</td>\n",
" <td>30</td>\n",
" <td>56</td>\n",
" <td>35</td>\n",
" <td>25</td>\n",
" <td>35</td>\n",
" <td>72</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>20</td>\n",
" <td>Raticate</td>\n",
" <td>Normal</td>\n",
" <td>NaN</td>\n",
" <td>413</td>\n",
" <td>55</td>\n",
" <td>81</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>70</td>\n",
" <td>97</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>21</td>\n",
" <td>Spearow</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>262</td>\n",
" <td>40</td>\n",
" <td>60</td>\n",
" <td>30</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>22</td>\n",
" <td>Fearow</td>\n",
" <td>Normal</td>\n",
" <td>Flying</td>\n",
" <td>442</td>\n",
" <td>65</td>\n",
" <td>90</td>\n",
" <td>65</td>\n",
" <td>61</td>\n",
" <td>61</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>23</td>\n",
" <td>Ekans</td>\n",
" <td>Poison</td>\n",
" <td>NaN</td>\n",
" <td>288</td>\n",
" <td>35</td>\n",
" <td>60</td>\n",
" <td>44</td>\n",
" <td>40</td>\n",
" <td>54</td>\n",
" <td>55</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>24</td>\n",
" <td>Arbok</td>\n",
" <td>Poison</td>\n",
" <td>NaN</td>\n",
" <td>438</td>\n",
" <td>60</td>\n",
" <td>85</td>\n",
" <td>69</td>\n",
" <td>65</td>\n",
" <td>79</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>770</th>\n",
" <td>700</td>\n",
" <td>Sylveon</td>\n",
" <td>Fairy</td>\n",
" <td>NaN</td>\n",
" <td>525</td>\n",
" <td>95</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>110</td>\n",
" <td>130</td>\n",
" <td>60</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>771</th>\n",
" <td>701</td>\n",
" <td>Hawlucha</td>\n",
" <td>Fighting</td>\n",
" <td>Flying</td>\n",
" <td>500</td>\n",
" <td>78</td>\n",
" <td>92</td>\n",
" <td>75</td>\n",
" <td>74</td>\n",
" <td>63</td>\n",
" <td>118</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>772</th>\n",
" <td>702</td>\n",
" <td>Dedenne</td>\n",
" <td>Electric</td>\n",
" <td>Fairy</td>\n",
" <td>431</td>\n",
" <td>67</td>\n",
" <td>58</td>\n",
" <td>57</td>\n",
" <td>81</td>\n",
" <td>67</td>\n",
" <td>101</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>773</th>\n",
" <td>703</td>\n",
" <td>Carbink</td>\n",
" <td>Rock</td>\n",
" <td>Fairy</td>\n",
" <td>500</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>150</td>\n",
" <td>50</td>\n",
" <td>150</td>\n",
" <td>50</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>774</th>\n",
" <td>704</td>\n",
" <td>Goomy</td>\n",
" <td>Dragon</td>\n",
" <td>NaN</td>\n",
" <td>300</td>\n",
" <td>45</td>\n",
" <td>50</td>\n",
" <td>35</td>\n",
" <td>55</td>\n",
" <td>75</td>\n",
" <td>40</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>775</th>\n",
" <td>705</td>\n",
" <td>Sliggoo</td>\n",
" <td>Dragon</td>\n",
" <td>NaN</td>\n",
" <td>452</td>\n",
" <td>68</td>\n",
" <td>75</td>\n",
" <td>53</td>\n",
" <td>83</td>\n",
" <td>113</td>\n",
" <td>60</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>776</th>\n",
" <td>706</td>\n",
" <td>Goodra</td>\n",
" <td>Dragon</td>\n",
" <td>NaN</td>\n",
" <td>600</td>\n",
" <td>90</td>\n",
" <td>100</td>\n",
" <td>70</td>\n",
" <td>110</td>\n",
" <td>150</td>\n",
" <td>80</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>777</th>\n",
" <td>707</td>\n",
" <td>Klefki</td>\n",
" <td>Steel</td>\n",
" <td>Fairy</td>\n",
" <td>470</td>\n",
" <td>57</td>\n",
" <td>80</td>\n",
" <td>91</td>\n",
" <td>80</td>\n",
" <td>87</td>\n",
" <td>75</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>778</th>\n",
" <td>708</td>\n",
" <td>Phantump</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>309</td>\n",
" <td>43</td>\n",
" <td>70</td>\n",
" <td>48</td>\n",
" <td>50</td>\n",
" <td>60</td>\n",
" <td>38</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>779</th>\n",
" <td>709</td>\n",
" <td>Trevenant</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>474</td>\n",
" <td>85</td>\n",
" <td>110</td>\n",
" <td>76</td>\n",
" <td>65</td>\n",
" <td>82</td>\n",
" <td>56</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>780</th>\n",
" <td>710</td>\n",
" <td>PumpkabooAverage Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>335</td>\n",
" <td>49</td>\n",
" <td>66</td>\n",
" <td>70</td>\n",
" <td>44</td>\n",
" <td>55</td>\n",
" <td>51</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>781</th>\n",
" <td>710</td>\n",
" <td>PumpkabooSmall Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>335</td>\n",
" <td>44</td>\n",
" <td>66</td>\n",
" <td>70</td>\n",
" <td>44</td>\n",
" <td>55</td>\n",
" <td>56</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>782</th>\n",
" <td>710</td>\n",
" <td>PumpkabooLarge Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>335</td>\n",
" <td>54</td>\n",
" <td>66</td>\n",
" <td>70</td>\n",
" <td>44</td>\n",
" <td>55</td>\n",
" <td>46</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>783</th>\n",
" <td>710</td>\n",
" <td>PumpkabooSuper Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>335</td>\n",
" <td>59</td>\n",
" <td>66</td>\n",
" <td>70</td>\n",
" <td>44</td>\n",
" <td>55</td>\n",
" <td>41</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>784</th>\n",
" <td>711</td>\n",
" <td>GourgeistAverage Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>494</td>\n",
" <td>65</td>\n",
" <td>90</td>\n",
" <td>122</td>\n",
" <td>58</td>\n",
" <td>75</td>\n",
" <td>84</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>785</th>\n",
" <td>711</td>\n",
" <td>GourgeistSmall Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>494</td>\n",
" <td>55</td>\n",
" <td>85</td>\n",
" <td>122</td>\n",
" <td>58</td>\n",
" <td>75</td>\n",
" <td>99</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>786</th>\n",
" <td>711</td>\n",
" <td>GourgeistLarge Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>494</td>\n",
" <td>75</td>\n",
" <td>95</td>\n",
" <td>122</td>\n",
" <td>58</td>\n",
" <td>75</td>\n",
" <td>69</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>787</th>\n",
" <td>711</td>\n",
" <td>GourgeistSuper Size</td>\n",
" <td>Ghost</td>\n",
" <td>Grass</td>\n",
" <td>494</td>\n",
" <td>85</td>\n",
" <td>100</td>\n",
" <td>122</td>\n",
" <td>58</td>\n",
" <td>75</td>\n",
" <td>54</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>788</th>\n",
" <td>712</td>\n",
" <td>Bergmite</td>\n",
" <td>Ice</td>\n",
" <td>NaN</td>\n",
" <td>304</td>\n",
" <td>55</td>\n",
" <td>69</td>\n",
" <td>85</td>\n",
" <td>32</td>\n",
" <td>35</td>\n",
" <td>28</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>789</th>\n",
" <td>713</td>\n",
" <td>Avalugg</td>\n",
" <td>Ice</td>\n",
" <td>NaN</td>\n",
" <td>514</td>\n",
" <td>95</td>\n",
" <td>117</td>\n",
" <td>184</td>\n",
" <td>44</td>\n",
" <td>46</td>\n",
" <td>28</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>790</th>\n",
" <td>714</td>\n",
" <td>Noibat</td>\n",
" <td>Flying</td>\n",
" <td>Dragon</td>\n",
" <td>245</td>\n",
" <td>40</td>\n",
" <td>30</td>\n",
" <td>35</td>\n",
" <td>45</td>\n",
" <td>40</td>\n",
" <td>55</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>791</th>\n",
" <td>715</td>\n",
" <td>Noivern</td>\n",
" <td>Flying</td>\n",
" <td>Dragon</td>\n",
" <td>535</td>\n",
" <td>85</td>\n",
" <td>70</td>\n",
" <td>80</td>\n",
" <td>97</td>\n",
" <td>80</td>\n",
" <td>123</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>792</th>\n",
" <td>716</td>\n",
" <td>Xerneas</td>\n",
" <td>Fairy</td>\n",
" <td>NaN</td>\n",
" <td>680</td>\n",
" <td>126</td>\n",
" <td>131</td>\n",
" <td>95</td>\n",
" <td>131</td>\n",
" <td>98</td>\n",
" <td>99</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>793</th>\n",
" <td>717</td>\n",
" <td>Yveltal</td>\n",
" <td>Dark</td>\n",
" <td>Flying</td>\n",
" <td>680</td>\n",
" <td>126</td>\n",
" <td>131</td>\n",
" <td>95</td>\n",
" <td>131</td>\n",
" <td>98</td>\n",
" <td>99</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>794</th>\n",
" <td>718</td>\n",
" <td>Zygarde50% Forme</td>\n",
" <td>Dragon</td>\n",
" <td>Ground</td>\n",
" <td>600</td>\n",
" <td>108</td>\n",
" <td>100</td>\n",
" <td>121</td>\n",
" <td>81</td>\n",
" <td>95</td>\n",
" <td>95</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>719</td>\n",
" <td>Diancie</td>\n",
" <td>Rock</td>\n",
" <td>Fairy</td>\n",
" <td>600</td>\n",
" <td>50</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>50</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>796</th>\n",
" <td>719</td>\n",
" <td>DiancieMega Diancie</td>\n",
" <td>Rock</td>\n",
" <td>Fairy</td>\n",
" <td>700</td>\n",
" <td>50</td>\n",
" <td>160</td>\n",
" <td>110</td>\n",
" <td>160</td>\n",
" <td>110</td>\n",
" <td>110</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>797</th>\n",
" <td>720</td>\n",
" <td>HoopaHoopa Confined</td>\n",
" <td>Psychic</td>\n",
" <td>Ghost</td>\n",
" <td>600</td>\n",
" <td>80</td>\n",
" <td>110</td>\n",
" <td>60</td>\n",
" <td>150</td>\n",
" <td>130</td>\n",
" <td>70</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>798</th>\n",
" <td>720</td>\n",
" <td>HoopaHoopa Unbound</td>\n",
" <td>Psychic</td>\n",
" <td>Dark</td>\n",
" <td>680</td>\n",
" <td>80</td>\n",
" <td>160</td>\n",
" <td>60</td>\n",
" <td>170</td>\n",
" <td>130</td>\n",
" <td>80</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>799</th>\n",
" <td>721</td>\n",
" <td>Volcanion</td>\n",
" <td>Fire</td>\n",
" <td>Water</td>\n",
" <td>600</td>\n",
" <td>80</td>\n",
" <td>110</td>\n",
" <td>120</td>\n",
" <td>130</td>\n",
" <td>90</td>\n",
" <td>70</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>800 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" # Name Type 1 Type 2 Total HP Attack \\\n",
"0 1 Bulbasaur Grass Poison 318 45 49 \n",
"1 2 Ivysaur Grass Poison 405 60 62 \n",
"2 3 Venusaur Grass Poison 525 80 82 \n",
"3 3 VenusaurMega Venusaur Grass Poison 625 80 100 \n",
"4 4 Charmander Fire NaN 309 39 52 \n",
"5 5 Charmeleon Fire NaN 405 58 64 \n",
"6 6 Charizard Fire Flying 534 78 84 \n",
"7 6 CharizardMega Charizard X Fire Dragon 634 78 130 \n",
"8 6 CharizardMega Charizard Y Fire Flying 634 78 104 \n",
"9 7 Squirtle Water NaN 314 44 48 \n",
"10 8 Wartortle Water NaN 405 59 63 \n",
"11 9 Blastoise Water NaN 530 79 83 \n",
"12 9 BlastoiseMega Blastoise Water NaN 630 79 103 \n",
"13 10 Caterpie Bug NaN 195 45 30 \n",
"14 11 Metapod Bug NaN 205 50 20 \n",
"15 12 Butterfree Bug Flying 395 60 45 \n",
"16 13 Weedle Bug Poison 195 40 35 \n",
"17 14 Kakuna Bug Poison 205 45 25 \n",
"18 15 Beedrill Bug Poison 395 65 90 \n",
"19 15 BeedrillMega Beedrill Bug Poison 495 65 150 \n",
"20 16 Pidgey Normal Flying 251 40 45 \n",
"21 17 Pidgeotto Normal Flying 349 63 60 \n",
"22 18 Pidgeot Normal Flying 479 83 80 \n",
"23 18 PidgeotMega Pidgeot Normal Flying 579 83 80 \n",
"24 19 Rattata Normal NaN 253 30 56 \n",
"25 20 Raticate Normal NaN 413 55 81 \n",
"26 21 Spearow Normal Flying 262 40 60 \n",
"27 22 Fearow Normal Flying 442 65 90 \n",
"28 23 Ekans Poison NaN 288 35 60 \n",
"29 24 Arbok Poison NaN 438 60 85 \n",
".. ... ... ... ... ... ... ... \n",
"770 700 Sylveon Fairy NaN 525 95 65 \n",
"771 701 Hawlucha Fighting Flying 500 78 92 \n",
"772 702 Dedenne Electric Fairy 431 67 58 \n",
"773 703 Carbink Rock Fairy 500 50 50 \n",
"774 704 Goomy Dragon NaN 300 45 50 \n",
"775 705 Sliggoo Dragon NaN 452 68 75 \n",
"776 706 Goodra Dragon NaN 600 90 100 \n",
"777 707 Klefki Steel Fairy 470 57 80 \n",
"778 708 Phantump Ghost Grass 309 43 70 \n",
"779 709 Trevenant Ghost Grass 474 85 110 \n",
"780 710 PumpkabooAverage Size Ghost Grass 335 49 66 \n",
"781 710 PumpkabooSmall Size Ghost Grass 335 44 66 \n",
"782 710 PumpkabooLarge Size Ghost Grass 335 54 66 \n",
"783 710 PumpkabooSuper Size Ghost Grass 335 59 66 \n",
"784 711 GourgeistAverage Size Ghost Grass 494 65 90 \n",
"785 711 GourgeistSmall Size Ghost Grass 494 55 85 \n",
"786 711 GourgeistLarge Size Ghost Grass 494 75 95 \n",
"787 711 GourgeistSuper Size Ghost Grass 494 85 100 \n",
"788 712 Bergmite Ice NaN 304 55 69 \n",
"789 713 Avalugg Ice NaN 514 95 117 \n",
"790 714 Noibat Flying Dragon 245 40 30 \n",
"791 715 Noivern Flying Dragon 535 85 70 \n",
"792 716 Xerneas Fairy NaN 680 126 131 \n",
"793 717 Yveltal Dark Flying 680 126 131 \n",
"794 718 Zygarde50% Forme Dragon Ground 600 108 100 \n",
"795 719 Diancie Rock Fairy 600 50 100 \n",
"796 719 DiancieMega Diancie Rock Fairy 700 50 160 \n",
"797 720 HoopaHoopa Confined Psychic Ghost 600 80 110 \n",
"798 720 HoopaHoopa Unbound Psychic Dark 680 80 160 \n",
"799 721 Volcanion Fire Water 600 80 110 \n",
"\n",
" Defense Sp. Atk Sp. Def Speed Generation Legendary \n",
"0 49 65 65 45 1 False \n",
"1 63 80 80 60 1 False \n",
"2 83 100 100 80 1 False \n",
"3 123 122 120 80 1 False \n",
"4 43 60 50 65 1 False \n",
"5 58 80 65 80 1 False \n",
"6 78 109 85 100 1 False \n",
"7 111 130 85 100 1 False \n",
"8 78 159 115 100 1 False \n",
"9 65 50 64 43 1 False \n",
"10 80 65 80 58 1 False \n",
"11 100 85 105 78 1 False \n",
"12 120 135 115 78 1 False \n",
"13 35 20 20 45 1 False \n",
"14 55 25 25 30 1 False \n",
"15 50 90 80 70 1 False \n",
"16 30 20 20 50 1 False \n",
"17 50 25 25 35 1 False \n",
"18 40 45 80 75 1 False \n",
"19 40 15 80 145 1 False \n",
"20 40 35 35 56 1 False \n",
"21 55 50 50 71 1 False \n",
"22 75 70 70 101 1 False \n",
"23 80 135 80 121 1 False \n",
"24 35 25 35 72 1 False \n",
"25 60 50 70 97 1 False \n",
"26 30 31 31 70 1 False \n",
"27 65 61 61 100 1 False \n",
"28 44 40 54 55 1 False \n",
"29 69 65 79 80 1 False \n",
".. ... ... ... ... ... ... \n",
"770 65 110 130 60 6 False \n",
"771 75 74 63 118 6 False \n",
"772 57 81 67 101 6 False \n",
"773 150 50 150 50 6 False \n",
"774 35 55 75 40 6 False \n",
"775 53 83 113 60 6 False \n",
"776 70 110 150 80 6 False \n",
"777 91 80 87 75 6 False \n",
"778 48 50 60 38 6 False \n",
"779 76 65 82 56 6 False \n",
"780 70 44 55 51 6 False \n",
"781 70 44 55 56 6 False \n",
"782 70 44 55 46 6 False \n",
"783 70 44 55 41 6 False \n",
"784 122 58 75 84 6 False \n",
"785 122 58 75 99 6 False \n",
"786 122 58 75 69 6 False \n",
"787 122 58 75 54 6 False \n",
"788 85 32 35 28 6 False \n",
"789 184 44 46 28 6 False \n",
"790 35 45 40 55 6 False \n",
"791 80 97 80 123 6 False \n",
"792 95 131 98 99 6 True \n",
"793 95 131 98 99 6 True \n",
"794 121 81 95 95 6 True \n",
"795 150 100 150 50 6 True \n",
"796 110 160 110 110 6 True \n",
"797 60 150 130 70 6 True \n",
"798 60 170 130 80 6 True \n",
"799 120 130 90 70 6 True \n",
"\n",
"[800 rows x 13 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"ds = pd.read_csv('Pokemon.csv')\n",
"ds"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Como os datasets normalmente são grandes ultilizamos os metodos head e tail do pandas para ver o início e fim do arquivo"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>Name</th>\n",
" <th>Type 1</th>\n",
" <th>Type 2</th>\n",
" <th>Total</th>\n",
" <th>HP</th>\n",
" <th>Attack</th>\n",
" <th>Defense</th>\n",
" <th>Sp. Atk</th>\n",
" <th>Sp. Def</th>\n",
" <th>Speed</th>\n",
" <th>Generation</th>\n",
" <th>Legendary</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Bulbasaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>318</td>\n",
" <td>45</td>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>45</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Ivysaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>405</td>\n",
" <td>60</td>\n",
" <td>62</td>\n",
" <td>63</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>60</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>525</td>\n",
" <td>80</td>\n",
" <td>82</td>\n",
" <td>83</td>\n",
" <td>100</td>\n",
" <td>100</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>VenusaurMega Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>625</td>\n",
" <td>80</td>\n",
" <td>100</td>\n",
" <td>123</td>\n",
" <td>122</td>\n",
" <td>120</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>Charmander</td>\n",
" <td>Fire</td>\n",
" <td>NaN</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # Name Type 1 Type 2 Total HP Attack Defense \\\n",
"0 1 Bulbasaur Grass Poison 318 45 49 49 \n",
"1 2 Ivysaur Grass Poison 405 60 62 63 \n",
"2 3 Venusaur Grass Poison 525 80 82 83 \n",
"3 3 VenusaurMega Venusaur Grass Poison 625 80 100 123 \n",
"4 4 Charmander Fire NaN 309 39 52 43 \n",
"\n",
" Sp. Atk Sp. Def Speed Generation Legendary \n",
"0 65 65 45 1 False \n",
"1 80 80 60 1 False \n",
"2 100 100 80 1 False \n",
"3 122 120 80 1 False \n",
"4 60 50 65 1 False "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>Name</th>\n",
" <th>Type 1</th>\n",
" <th>Type 2</th>\n",
" <th>Total</th>\n",
" <th>HP</th>\n",
" <th>Attack</th>\n",
" <th>Defense</th>\n",
" <th>Sp. Atk</th>\n",
" <th>Sp. Def</th>\n",
" <th>Speed</th>\n",
" <th>Generation</th>\n",
" <th>Legendary</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>719</td>\n",
" <td>Diancie</td>\n",
" <td>Rock</td>\n",
" <td>Fairy</td>\n",
" <td>600</td>\n",
" <td>50</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>50</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>796</th>\n",
" <td>719</td>\n",
" <td>DiancieMega Diancie</td>\n",
" <td>Rock</td>\n",
" <td>Fairy</td>\n",
" <td>700</td>\n",
" <td>50</td>\n",
" <td>160</td>\n",
" <td>110</td>\n",
" <td>160</td>\n",
" <td>110</td>\n",
" <td>110</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>797</th>\n",
" <td>720</td>\n",
" <td>HoopaHoopa Confined</td>\n",
" <td>Psychic</td>\n",
" <td>Ghost</td>\n",
" <td>600</td>\n",
" <td>80</td>\n",
" <td>110</td>\n",
" <td>60</td>\n",
" <td>150</td>\n",
" <td>130</td>\n",
" <td>70</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>798</th>\n",
" <td>720</td>\n",
" <td>HoopaHoopa Unbound</td>\n",
" <td>Psychic</td>\n",
" <td>Dark</td>\n",
" <td>680</td>\n",
" <td>80</td>\n",
" <td>160</td>\n",
" <td>60</td>\n",
" <td>170</td>\n",
" <td>130</td>\n",
" <td>80</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>799</th>\n",
" <td>721</td>\n",
" <td>Volcanion</td>\n",
" <td>Fire</td>\n",
" <td>Water</td>\n",
" <td>600</td>\n",
" <td>80</td>\n",
" <td>110</td>\n",
" <td>120</td>\n",
" <td>130</td>\n",
" <td>90</td>\n",
" <td>70</td>\n",
" <td>6</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # Name Type 1 Type 2 Total HP Attack Defense \\\n",
"795 719 Diancie Rock Fairy 600 50 100 150 \n",
"796 719 DiancieMega Diancie Rock Fairy 700 50 160 110 \n",
"797 720 HoopaHoopa Confined Psychic Ghost 600 80 110 60 \n",
"798 720 HoopaHoopa Unbound Psychic Dark 680 80 160 60 \n",
"799 721 Volcanion Fire Water 600 80 110 120 \n",
"\n",
" Sp. Atk Sp. Def Speed Generation Legendary \n",
"795 100 150 50 6 True \n",
"796 160 110 110 6 True \n",
"797 150 130 70 6 True \n",
"798 170 130 80 6 True \n",
"799 130 90 70 6 True "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Para melhorar a visualização vamos passar os cabeçalhos para maiúsculo"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>NAME</th>\n",
" <th>TYPE 1</th>\n",
" <th>TYPE 2</th>\n",
" <th>TOTAL</th>\n",
" <th>HP</th>\n",
" <th>ATTACK</th>\n",
" <th>DEFENSE</th>\n",
" <th>SP. ATK</th>\n",
" <th>SP. DEF</th>\n",
" <th>SPEED</th>\n",
" <th>GENERATION</th>\n",
" <th>LEGENDARY</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Bulbasaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>318</td>\n",
" <td>45</td>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>45</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Ivysaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>405</td>\n",
" <td>60</td>\n",
" <td>62</td>\n",
" <td>63</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>60</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>525</td>\n",
" <td>80</td>\n",
" <td>82</td>\n",
" <td>83</td>\n",
" <td>100</td>\n",
" <td>100</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>VenusaurMega Venusaur</td>\n",
" <td>Grass</td>\n",
" <td>Poison</td>\n",
" <td>625</td>\n",
" <td>80</td>\n",
" <td>100</td>\n",
" <td>123</td>\n",
" <td>122</td>\n",
" <td>120</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>Charmander</td>\n",
" <td>Fire</td>\n",
" <td>NaN</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # NAME TYPE 1 TYPE 2 TOTAL HP ATTACK DEFENSE \\\n",
"0 1 Bulbasaur Grass Poison 318 45 49 49 \n",
"1 2 Ivysaur Grass Poison 405 60 62 63 \n",
"2 3 Venusaur Grass Poison 525 80 82 83 \n",
"3 3 VenusaurMega Venusaur Grass Poison 625 80 100 123 \n",
"4 4 Charmander Fire NaN 309 39 52 43 \n",
"\n",
" SP. ATK SP. DEF SPEED GENERATION LEGENDARY \n",
"0 65 65 45 1 False \n",
"1 80 80 60 1 False \n",
"2 100 100 80 1 False \n",
"3 122 120 80 1 False \n",
"4 60 50 65 1 False "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.columns = ds.columns.str.upper().str.replace('_', '') \n",
"ds.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Para ver o número de linhas e colunas use o método shape."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(800, 13)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### O comando columns retorna o nome das colunas."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['#', 'NAME', 'TYPE 1', 'TYPE 2', 'TOTAL', 'HP', 'ATTACK', 'DEFENSE',\n",
" 'SP. ATK', 'SP. DEF', 'SPEED', 'GENERATION', 'LEGENDARY'],\n",
" dtype='object')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Iniciando as análises"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"O pandas nos dá muitas ferramentas estatísticas prontas, para aprender vamos estudar um pouco sobre pokemons.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTRo-QyGWQ9mTlBLZH_RfzyS1GLhb08b8rZmdi25oWb60dFFD36\" width=\"100\" height=\"100\" />\n",
"\n",
"No pandas cada coluna é uma variável e são acessadas com ponto. Vamos por exemplo listar o nome de todos os pokemons do dataset."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 Bulbasaur\n",
"1 Ivysaur\n",
"2 Venusaur\n",
"3 VenusaurMega Venusaur\n",
"4 Charmander\n",
"5 Charmeleon\n",
"6 Charizard\n",
"7 CharizardMega Charizard X\n",
"8 CharizardMega Charizard Y\n",
"9 Squirtle\n",
"10 Wartortle\n",
"11 Blastoise\n",
"12 BlastoiseMega Blastoise\n",
"13 Caterpie\n",
"14 Metapod\n",
"15 Butterfree\n",
"16 Weedle\n",
"17 Kakuna\n",
"18 Beedrill\n",
"19 BeedrillMega Beedrill\n",
"20 Pidgey\n",
"21 Pidgeotto\n",
"22 Pidgeot\n",
"23 PidgeotMega Pidgeot\n",
"24 Rattata\n",
"25 Raticate\n",
"26 Spearow\n",
"27 Fearow\n",
"28 Ekans\n",
"29 Arbok\n",
" ... \n",
"770 Sylveon\n",
"771 Hawlucha\n",
"772 Dedenne\n",
"773 Carbink\n",
"774 Goomy\n",
"775 Sliggoo\n",
"776 Goodra\n",
"777 Klefki\n",
"778 Phantump\n",
"779 Trevenant\n",
"780 PumpkabooAverage Size\n",
"781 PumpkabooSmall Size\n",
"782 PumpkabooLarge Size\n",
"783 PumpkabooSuper Size\n",
"784 GourgeistAverage Size\n",
"785 GourgeistSmall Size\n",
"786 GourgeistLarge Size\n",
"787 GourgeistSuper Size\n",
"788 Bergmite\n",
"789 Avalugg\n",
"790 Noibat\n",
"791 Noivern\n",
"792 Xerneas\n",
"793 Yveltal\n",
"794 Zygarde50% Forme\n",
"795 Diancie\n",
"796 DiancieMega Diancie\n",
"797 HoopaHoopa Confined\n",
"798 HoopaHoopa Unbound\n",
"799 Volcanion\n",
"Name: NAME, Length: 800, dtype: object"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.NAME"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### O método describe nos mostra um resumo estatístico da coluna estatística. Por exemplo seleciona-se as estatísticas de ataque dos pokemons:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 800.000000\n",
"mean 79.001250\n",
"std 32.457366\n",
"min 5.000000\n",
"25% 55.000000\n",
"50% 75.000000\n",
"75% 100.000000\n",
"max 190.000000\n",
"Name: ATTACK, dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.ATTACK.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Interpretando describe:\n",
"* count indica o número de linhas (pokemons)\n",
"* mean indica a média aritimética de ataque dos pokemons\n",
"* std Desvio padrão\n",
"* min o pokemon com o menor ataque\n",
"* 25% indica que 25% dos pokemons tem 55 de ataque\n",
"* max indica o pokemon com maior ataque\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### É muito ultil isolar essas informações por exemplo como capturar somente a média de ataque."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A média de ataque dos pokemons é 79.00125\n"
]
}
],
"source": [
"print(\"A média de ataque dos pokemons é \" + str(ds.ATTACK.mean()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Podemos ver as infos de um único pokemon, obviamente escolhemos o melhor de todos o Charmander\n",
"\n",
"<img src=\"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRNHHfoobz73wfwm5NQFrrQ2RgMyese0BXYDazTVL-8aIkMNYglrw\" width=\"100\" height=\"100\" />\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>NAME</th>\n",
" <th>TYPE 1</th>\n",
" <th>TYPE 2</th>\n",
" <th>TOTAL</th>\n",
" <th>HP</th>\n",
" <th>ATTACK</th>\n",
" <th>DEFENSE</th>\n",
" <th>SP. ATK</th>\n",
" <th>SP. DEF</th>\n",
" <th>SPEED</th>\n",
" <th>GENERATION</th>\n",
" <th>LEGENDARY</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>Charmander</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # NAME TYPE 1 TYPE 2 TOTAL HP ATTACK DEFENSE SP. ATK SP. DEF \\\n",
"4 4 Charmander Fire Fire 309 39 52 43 60 50 \n",
"\n",
" SPEED GENERATION LEGENDARY \n",
"4 65 1 False "
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds[ds['NAME'] == 'Charmander']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Para dificultar eu gostaria de saber todos pokemons dragões ou de fogo"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>NAME</th>\n",
" <th>TYPE 1</th>\n",
" <th>TYPE 2</th>\n",
" <th>TOTAL</th>\n",
" <th>HP</th>\n",
" <th>ATTACK</th>\n",
" <th>DEFENSE</th>\n",
" <th>SP. ATK</th>\n",
" <th>SP. DEF</th>\n",
" <th>SPEED</th>\n",
" <th>GENERATION</th>\n",
" <th>LEGENDARY</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>Charmander</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>Charmeleon</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>405</td>\n",
" <td>58</td>\n",
" <td>64</td>\n",
" <td>58</td>\n",
" <td>80</td>\n",
" <td>65</td>\n",
" <td>80</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>6</td>\n",
" <td>CharizardMega Charizard X</td>\n",
" <td>Fire</td>\n",
" <td>Dragon</td>\n",
" <td>634</td>\n",
" <td>78</td>\n",
" <td>130</td>\n",
" <td>111</td>\n",
" <td>130</td>\n",
" <td>85</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>37</td>\n",
" <td>Vulpix</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>299</td>\n",
" <td>38</td>\n",
" <td>41</td>\n",
" <td>40</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>38</td>\n",
" <td>Ninetales</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>505</td>\n",
" <td>73</td>\n",
" <td>76</td>\n",
" <td>75</td>\n",
" <td>81</td>\n",
" <td>100</td>\n",
" <td>100</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>58</td>\n",
" <td>Growlithe</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>350</td>\n",
" <td>55</td>\n",
" <td>70</td>\n",
" <td>45</td>\n",
" <td>70</td>\n",
" <td>50</td>\n",
" <td>60</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>59</td>\n",
" <td>Arcanine</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>555</td>\n",
" <td>90</td>\n",
" <td>110</td>\n",
" <td>80</td>\n",
" <td>100</td>\n",
" <td>80</td>\n",
" <td>95</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>77</td>\n",
" <td>Ponyta</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>410</td>\n",
" <td>50</td>\n",
" <td>85</td>\n",
" <td>55</td>\n",
" <td>65</td>\n",
" <td>65</td>\n",
" <td>90</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>78</td>\n",
" <td>Rapidash</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>500</td>\n",
" <td>65</td>\n",
" <td>100</td>\n",
" <td>70</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>105</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>126</td>\n",
" <td>Magmar</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>495</td>\n",
" <td>65</td>\n",
" <td>95</td>\n",
" <td>57</td>\n",
" <td>100</td>\n",
" <td>85</td>\n",
" <td>93</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>136</td>\n",
" <td>Flareon</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>525</td>\n",
" <td>65</td>\n",
" <td>130</td>\n",
" <td>60</td>\n",
" <td>95</td>\n",
" <td>110</td>\n",
" <td>65</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>159</th>\n",
" <td>147</td>\n",
" <td>Dratini</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>300</td>\n",
" <td>41</td>\n",
" <td>64</td>\n",
" <td>45</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>160</th>\n",
" <td>148</td>\n",
" <td>Dragonair</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>420</td>\n",
" <td>61</td>\n",
" <td>84</td>\n",
" <td>65</td>\n",
" <td>70</td>\n",
" <td>70</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>169</th>\n",
" <td>155</td>\n",
" <td>Cyndaquil</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>309</td>\n",
" <td>39</td>\n",
" <td>52</td>\n",
" <td>43</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>170</th>\n",
" <td>156</td>\n",
" <td>Quilava</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>405</td>\n",
" <td>58</td>\n",
" <td>64</td>\n",
" <td>58</td>\n",
" <td>80</td>\n",
" <td>65</td>\n",
" <td>80</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>171</th>\n",
" <td>157</td>\n",
" <td>Typhlosion</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>534</td>\n",
" <td>78</td>\n",
" <td>84</td>\n",
" <td>78</td>\n",
" <td>109</td>\n",
" <td>85</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>236</th>\n",
" <td>218</td>\n",
" <td>Slugma</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>250</td>\n",
" <td>40</td>\n",
" <td>40</td>\n",
" <td>40</td>\n",
" <td>70</td>\n",
" <td>40</td>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>259</th>\n",
" <td>240</td>\n",
" <td>Magby</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>365</td>\n",
" <td>45</td>\n",
" <td>75</td>\n",
" <td>37</td>\n",
" <td>70</td>\n",
" <td>55</td>\n",
" <td>83</td>\n",
" <td>2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>263</th>\n",
" <td>244</td>\n",
" <td>Entei</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>580</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>85</td>\n",
" <td>90</td>\n",
" <td>75</td>\n",
" <td>100</td>\n",
" <td>2</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>276</th>\n",
" <td>255</td>\n",
" <td>Torchic</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>310</td>\n",
" <td>45</td>\n",
" <td>60</td>\n",
" <td>40</td>\n",
" <td>70</td>\n",
" <td>50</td>\n",
" <td>45</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>355</th>\n",
" <td>324</td>\n",
" <td>Torkoal</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>470</td>\n",
" <td>70</td>\n",
" <td>85</td>\n",
" <td>140</td>\n",
" <td>85</td>\n",
" <td>70</td>\n",
" <td>20</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>406</th>\n",
" <td>371</td>\n",
" <td>Bagon</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>300</td>\n",
" <td>45</td>\n",
" <td>75</td>\n",
" <td>60</td>\n",
" <td>40</td>\n",
" <td>30</td>\n",
" <td>50</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>407</th>\n",
" <td>372</td>\n",
" <td>Shelgon</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>420</td>\n",
" <td>65</td>\n",
" <td>95</td>\n",
" <td>100</td>\n",
" <td>60</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>435</th>\n",
" <td>390</td>\n",
" <td>Chimchar</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>309</td>\n",
" <td>44</td>\n",
" <td>58</td>\n",
" <td>44</td>\n",
" <td>58</td>\n",
" <td>44</td>\n",
" <td>61</td>\n",
" <td>4</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>518</th>\n",
" <td>467</td>\n",
" <td>Magmortar</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>540</td>\n",
" <td>75</td>\n",
" <td>95</td>\n",
" <td>67</td>\n",
" <td>125</td>\n",
" <td>95</td>\n",
" <td>83</td>\n",
" <td>4</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>557</th>\n",
" <td>498</td>\n",
" <td>Tepig</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>308</td>\n",
" <td>65</td>\n",
" <td>63</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>572</th>\n",
" <td>513</td>\n",
" <td>Pansear</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>316</td>\n",
" <td>50</td>\n",
" <td>53</td>\n",
" <td>48</td>\n",
" <td>53</td>\n",
" <td>48</td>\n",
" <td>64</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>573</th>\n",
" <td>514</td>\n",
" <td>Simisear</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>498</td>\n",
" <td>75</td>\n",
" <td>98</td>\n",
" <td>63</td>\n",
" <td>98</td>\n",
" <td>63</td>\n",
" <td>101</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>614</th>\n",
" <td>554</td>\n",
" <td>Darumaka</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>315</td>\n",
" <td>70</td>\n",
" <td>90</td>\n",
" <td>45</td>\n",
" <td>15</td>\n",
" <td>45</td>\n",
" <td>50</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>615</th>\n",
" <td>555</td>\n",
" <td>DarmanitanStandard Mode</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>480</td>\n",
" <td>105</td>\n",
" <td>140</td>\n",
" <td>55</td>\n",
" <td>30</td>\n",
" <td>55</td>\n",
" <td>95</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>671</th>\n",
" <td>610</td>\n",
" <td>Axew</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>320</td>\n",
" <td>46</td>\n",
" <td>87</td>\n",
" <td>60</td>\n",
" <td>30</td>\n",
" <td>40</td>\n",
" <td>57</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>672</th>\n",
" <td>611</td>\n",
" <td>Fraxure</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>410</td>\n",
" <td>66</td>\n",
" <td>117</td>\n",
" <td>70</td>\n",
" <td>40</td>\n",
" <td>50</td>\n",
" <td>67</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>673</th>\n",
" <td>612</td>\n",
" <td>Haxorus</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>540</td>\n",
" <td>76</td>\n",
" <td>147</td>\n",
" <td>90</td>\n",
" <td>60</td>\n",
" <td>70</td>\n",
" <td>97</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>682</th>\n",
" <td>621</td>\n",
" <td>Druddigon</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>485</td>\n",
" <td>77</td>\n",
" <td>120</td>\n",
" <td>90</td>\n",
" <td>60</td>\n",
" <td>90</td>\n",
" <td>48</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>692</th>\n",
" <td>631</td>\n",
" <td>Heatmor</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>484</td>\n",
" <td>85</td>\n",
" <td>97</td>\n",
" <td>66</td>\n",
" <td>105</td>\n",
" <td>66</td>\n",
" <td>65</td>\n",
" <td>5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>706</th>\n",
" <td>643</td>\n",
" <td>Reshiram</td>\n",
" <td>Dragon</td>\n",
" <td>Fire</td>\n",
" <td>680</td>\n",
" <td>100</td>\n",
" <td>120</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>120</td>\n",
" <td>90</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>721</th>\n",
" <td>653</td>\n",
" <td>Fennekin</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>307</td>\n",
" <td>40</td>\n",
" <td>45</td>\n",
" <td>40</td>\n",
" <td>62</td>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>722</th>\n",
" <td>654</td>\n",
" <td>Braixen</td>\n",
" <td>Fire</td>\n",
" <td>Fire</td>\n",
" <td>409</td>\n",
" <td>59</td>\n",
" <td>59</td>\n",
" <td>58</td>\n",
" <td>90</td>\n",
" <td>70</td>\n",
" <td>73</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>774</th>\n",
" <td>704</td>\n",
" <td>Goomy</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>300</td>\n",
" <td>45</td>\n",
" <td>50</td>\n",
" <td>35</td>\n",
" <td>55</td>\n",
" <td>75</td>\n",
" <td>40</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>775</th>\n",
" <td>705</td>\n",
" <td>Sliggoo</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>452</td>\n",
" <td>68</td>\n",
" <td>75</td>\n",
" <td>53</td>\n",
" <td>83</td>\n",
" <td>113</td>\n",
" <td>60</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>776</th>\n",
" <td>706</td>\n",
" <td>Goodra</td>\n",
" <td>Dragon</td>\n",
" <td>Dragon</td>\n",
" <td>600</td>\n",
" <td>90</td>\n",
" <td>100</td>\n",
" <td>70</td>\n",
" <td>110</td>\n",
" <td>150</td>\n",
" <td>80</td>\n",
" <td>6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # NAME TYPE 1 TYPE 2 TOTAL HP ATTACK \\\n",
"4 4 Charmander Fire Fire 309 39 52 \n",
"5 5 Charmeleon Fire Fire 405 58 64 \n",
"7 6 CharizardMega Charizard X Fire Dragon 634 78 130 \n",
"42 37 Vulpix Fire Fire 299 38 41 \n",
"43 38 Ninetales Fire Fire 505 73 76 \n",
"63 58 Growlithe Fire Fire 350 55 70 \n",
"64 59 Arcanine Fire Fire 555 90 110 \n",
"83 77 Ponyta Fire Fire 410 50 85 \n",
"84 78 Rapidash Fire Fire 500 65 100 \n",
"135 126 Magmar Fire Fire 495 65 95 \n",
"147 136 Flareon Fire Fire 525 65 130 \n",
"159 147 Dratini Dragon Dragon 300 41 64 \n",
"160 148 Dragonair Dragon Dragon 420 61 84 \n",
"169 155 Cyndaquil Fire Fire 309 39 52 \n",
"170 156 Quilava Fire Fire 405 58 64 \n",
"171 157 Typhlosion Fire Fire 534 78 84 \n",
"236 218 Slugma Fire Fire 250 40 40 \n",
"259 240 Magby Fire Fire 365 45 75 \n",
"263 244 Entei Fire Fire 580 115 115 \n",
"276 255 Torchic Fire Fire 310 45 60 \n",
"355 324 Torkoal Fire Fire 470 70 85 \n",
"406 371 Bagon Dragon Dragon 300 45 75 \n",
"407 372 Shelgon Dragon Dragon 420 65 95 \n",
"435 390 Chimchar Fire Fire 309 44 58 \n",
"518 467 Magmortar Fire Fire 540 75 95 \n",
"557 498 Tepig Fire Fire 308 65 63 \n",
"572 513 Pansear Fire Fire 316 50 53 \n",
"573 514 Simisear Fire Fire 498 75 98 \n",
"614 554 Darumaka Fire Fire 315 70 90 \n",
"615 555 DarmanitanStandard Mode Fire Fire 480 105 140 \n",
"671 610 Axew Dragon Dragon 320 46 87 \n",
"672 611 Fraxure Dragon Dragon 410 66 117 \n",
"673 612 Haxorus Dragon Dragon 540 76 147 \n",
"682 621 Druddigon Dragon Dragon 485 77 120 \n",
"692 631 Heatmor Fire Fire 484 85 97 \n",
"706 643 Reshiram Dragon Fire 680 100 120 \n",
"721 653 Fennekin Fire Fire 307 40 45 \n",
"722 654 Braixen Fire Fire 409 59 59 \n",
"774 704 Goomy Dragon Dragon 300 45 50 \n",
"775 705 Sliggoo Dragon Dragon 452 68 75 \n",
"776 706 Goodra Dragon Dragon 600 90 100 \n",
"\n",
" DEFENSE SP. ATK SP. DEF SPEED GENERATION LEGENDARY \n",
"4 43 60 50 65 1 False \n",
"5 58 80 65 80 1 False \n",
"7 111 130 85 100 1 False \n",
"42 40 50 65 65 1 False \n",
"43 75 81 100 100 1 False \n",
"63 45 70 50 60 1 False \n",
"64 80 100 80 95 1 False \n",
"83 55 65 65 90 1 False \n",
"84 70 80 80 105 1 False \n",
"135 57 100 85 93 1 False \n",
"147 60 95 110 65 1 False \n",
"159 45 50 50 50 1 False \n",
"160 65 70 70 70 1 False \n",
"169 43 60 50 65 2 False \n",
"170 58 80 65 80 2 False \n",
"171 78 109 85 100 2 False \n",
"236 40 70 40 20 2 False \n",
"259 37 70 55 83 2 False \n",
"263 85 90 75 100 2 True \n",
"276 40 70 50 45 3 False \n",
"355 140 85 70 20 3 False \n",
"406 60 40 30 50 3 False \n",
"407 100 60 50 50 3 False \n",
"435 44 58 44 61 4 False \n",
"518 67 125 95 83 4 False \n",
"557 45 45 45 45 5 False \n",
"572 48 53 48 64 5 False \n",
"573 63 98 63 101 5 False \n",
"614 45 15 45 50 5 False \n",
"615 55 30 55 95 5 False \n",
"671 60 30 40 57 5 False \n",
"672 70 40 50 67 5 False \n",
"673 90 60 70 97 5 False \n",
"682 90 60 90 48 5 False \n",
"692 66 105 66 65 5 False \n",
"706 100 150 120 90 5 True \n",
"721 40 62 60 60 6 False \n",
"722 58 90 70 73 6 False \n",
"774 35 55 75 40 6 False \n",
"775 53 83 113 60 6 False \n",
"776 70 110 150 80 6 False "
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds[((ds['TYPE 1']=='Fire') | (ds['TYPE 1']=='Dragon')) & ((ds['TYPE 2']=='Dragon') | (ds['TYPE 2']=='Fire'))]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Vamos mostrar os 10 pokemons com maior quantidade de indivíduos."
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>#</th>\n",
" <th>NAME</th>\n",
" <th>TYPE 1</th>\n",
" <th>TYPE 2</th>\n",
" <th>TOTAL</th>\n",
" <th>HP</th>\n",
" <th>ATTACK</th>\n",
" <th>DEFENSE</th>\n",
" <th>SP. ATK</th>\n",
" <th>SP. DEF</th>\n",
" <th>SPEED</th>\n",
" <th>GENERATION</th>\n",
" <th>LEGENDARY</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>426</th>\n",
" <td>384</td>\n",
" <td>RayquazaMega Rayquaza</td>\n",
" <td>Dragon</td>\n",
" <td>Flying</td>\n",
" <td>780</td>\n",
" <td>105</td>\n",
" <td>180</td>\n",
" <td>100</td>\n",
" <td>180</td>\n",
" <td>100</td>\n",
" <td>115</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>164</th>\n",
" <td>150</td>\n",
" <td>MewtwoMega Mewtwo Y</td>\n",
" <td>Psychic</td>\n",
" <td>Psychic</td>\n",
" <td>780</td>\n",
" <td>106</td>\n",
" <td>150</td>\n",
" <td>70</td>\n",
" <td>194</td>\n",
" <td>120</td>\n",
" <td>140</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>163</th>\n",
" <td>150</td>\n",
" <td>MewtwoMega Mewtwo X</td>\n",
" <td>Psychic</td>\n",
" <td>Fighting</td>\n",
" <td>780</td>\n",
" <td>106</td>\n",
" <td>190</td>\n",
" <td>100</td>\n",
" <td>154</td>\n",
" <td>100</td>\n",
" <td>130</td>\n",
" <td>1</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>422</th>\n",
" <td>382</td>\n",
" <td>KyogrePrimal Kyogre</td>\n",
" <td>Water</td>\n",
" <td>Water</td>\n",
" <td>770</td>\n",
" <td>100</td>\n",
" <td>150</td>\n",
" <td>90</td>\n",
" <td>180</td>\n",
" <td>160</td>\n",
" <td>90</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>424</th>\n",
" <td>383</td>\n",
" <td>GroudonPrimal Groudon</td>\n",
" <td>Ground</td>\n",
" <td>Fire</td>\n",
" <td>770</td>\n",
" <td>100</td>\n",
" <td>180</td>\n",
" <td>160</td>\n",
" <td>150</td>\n",
" <td>90</td>\n",
" <td>90</td>\n",
" <td>3</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>552</th>\n",
" <td>493</td>\n",
" <td>Arceus</td>\n",
" <td>Normal</td>\n",
" <td>Normal</td>\n",
" <td>720</td>\n",
" <td>120</td>\n",
" <td>120</td>\n",
" <td>120</td>\n",
" <td>120</td>\n",
" <td>120</td>\n",
" <td>120</td>\n",
" <td>4</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>712</th>\n",
" <td>646</td>\n",
" <td>KyuremWhite Kyurem</td>\n",
" <td>Dragon</td>\n",
" <td>Ice</td>\n",
" <td>700</td>\n",
" <td>125</td>\n",
" <td>120</td>\n",
" <td>90</td>\n",
" <td>170</td>\n",
" <td>100</td>\n",
" <td>95</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>711</th>\n",
" <td>646</td>\n",
" <td>KyuremBlack Kyurem</td>\n",
" <td>Dragon</td>\n",
" <td>Ice</td>\n",
" <td>700</td>\n",
" <td>125</td>\n",
" <td>170</td>\n",
" <td>100</td>\n",
" <td>120</td>\n",
" <td>90</td>\n",
" <td>95</td>\n",
" <td>5</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>409</th>\n",
" <td>373</td>\n",
" <td>SalamenceMega Salamence</td>\n",
" <td>Dragon</td>\n",
" <td>Flying</td>\n",
" <td>700</td>\n",
" <td>95</td>\n",
" <td>145</td>\n",
" <td>130</td>\n",
" <td>120</td>\n",
" <td>90</td>\n",
" <td>120</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>413</th>\n",
" <td>376</td>\n",
" <td>MetagrossMega Metagross</td>\n",
" <td>Steel</td>\n",
" <td>Psychic</td>\n",
" <td>700</td>\n",
" <td>80</td>\n",
" <td>145</td>\n",
" <td>150</td>\n",
" <td>105</td>\n",
" <td>110</td>\n",
" <td>110</td>\n",
" <td>3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" # NAME TYPE 1 TYPE 2 TOTAL HP ATTACK \\\n",
"426 384 RayquazaMega Rayquaza Dragon Flying 780 105 180 \n",
"164 150 MewtwoMega Mewtwo Y Psychic Psychic 780 106 150 \n",
"163 150 MewtwoMega Mewtwo X Psychic Fighting 780 106 190 \n",
"422 382 KyogrePrimal Kyogre Water Water 770 100 150 \n",
"424 383 GroudonPrimal Groudon Ground Fire 770 100 180 \n",
"552 493 Arceus Normal Normal 720 120 120 \n",
"712 646 KyuremWhite Kyurem Dragon Ice 700 125 120 \n",
"711 646 KyuremBlack Kyurem Dragon Ice 700 125 170 \n",
"409 373 SalamenceMega Salamence Dragon Flying 700 95 145 \n",
"413 376 MetagrossMega Metagross Steel Psychic 700 80 145 \n",
"\n",
" DEFENSE SP. ATK SP. DEF SPEED GENERATION LEGENDARY \n",
"426 100 180 100 115 3 True \n",
"164 70 194 120 140 1 True \n",
"163 100 154 100 130 1 True \n",
"422 90 180 160 90 3 True \n",
"424 160 150 90 90 3 True \n",
"552 120 120 120 120 4 True \n",
"712 90 170 100 95 5 True \n",
"711 100 120 90 95 5 True \n",
"409 130 120 90 120 3 False \n",
"413 150 105 110 110 3 False "
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ds.sort_values('TOTAL',ascending=False).head(10)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Contando e agrupando os pokemons de cada tipo:"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Water 112\n",
"Normal 98\n",
"Grass 70\n",
"Bug 69\n",
"Psychic 57\n",
"Fire 52\n",
"Electric 44\n",
"Rock 44\n",
"Ghost 32\n",
"Ground 32\n",
"Dragon 32\n",
"Dark 31\n",
"Poison 28\n",
"Steel 27\n",
"Fighting 27\n",
"Ice 24\n",
"Fairy 17\n",
"Flying 4\n",
"Name: TYPE 1, dtype: int64 \n",
" Flying 99\n",
"Water 73\n",
"Psychic 71\n",
"Normal 65\n",
"Grass 58\n",
"Poison 49\n",
"Ground 48\n",
"Fighting 46\n",
"Fire 40\n",
"Fairy 38\n",
"Electric 33\n",
"Dark 30\n",
"Dragon 29\n",
"Ice 27\n",
"Steel 27\n",
"Ghost 24\n",
"Rock 23\n",
"Bug 20\n",
"Name: TYPE 2, dtype: int64\n"
]
},
{
"data": {
"text/plain": [
"69"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(ds['TYPE 1'].value_counts(), '\\n' ,ds['TYPE 2'].value_counts())\n",
"ds.groupby(['TYPE 1']).size() \n",
"(ds['TYPE 1']=='Bug').sum() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Pode-se criar facilmente gráficos do matplotlib:\n",
"Plotando o valor de ataque de todos os pokemons marcando a média:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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svgXc5Alm2/Iq+Ac46Z7CECgZgIIIAJYc0rWswcBssLnTWME0JtSeHciPAjau5JwQhBIhADzNwJoFSQCZIXPm8YIoDel8O5EEEDvSsIJQSARAszfCKBVkAiQFT5vGiOAbkuhr4L7r9cXmoP8c8+teBWcW9z0DgEIRCDA/I0ARohJ9bsQICt83jRGAN2WgptA3PKldwhAID4B5m8EMH5qKrUgQFb4vGmMALotBQLoli+9QwAC8QkwfyOA8VODAFox87ExAui2KgigW770DgEIxCeAACKA8VODAFox87ExAui2KgigW770DgEIxCeAACKA8VODAFox87ExAui2KgigW770DgEIxCeAACKA8VODAFox87ExAui2KgigW770DgEIxCeAACKA8VODAFox87ExAui2KgigW770DgEIxCeAACKA8VODAFox87ExAui2KiWry2WzRT+Zg3zbvIGU1ylxe8AEe+dB0AnCpCsIeEQAAUQAreJIgKzwedMYAfSmFN6dCALoXUk4IQgkQoD5O6MCOGXKFBk5cqRMmzZNFi5cKBMmTJC+fftWhKK8vFxGjBgho0ePlu+//1523313ufXWW2XHHXes2Ef//pxzzpF//OMf5u8OP/xwufnmm6VJkyaRw0WAIqPyekcE0Ovy1OrJIYC1ip+DQ8AZAebvjArgpEmT5NVXX5Vu3bpJv3791hHA6667Tq666ioZN26cdOzYUa688kpRafzoo4+kYcOGJlC9e/eWL7/80kiibqeccoq0adNGHn/88ciBI0CRUXm9IwLotjz6Krgd3v7aHGRm92a8Cs4tbnqHAAQiEGD+zqgAVq5tSUnJGgKoq38tWrSQc889V4YOHWp2Xb58uTRv3lxUDE899VT58MMPZYcddpCpU6ea1UHd9L/33HNPmTVrlmy33XYR4iNCgCJh8n4nBNBtibgJxC1feocABOITYP7OoQB++umn0r59e5k+fbp07dq1IhV9+vQxl3fvvvtuueuuu+S8886TJUuWrJEa/fcbb7xRTjzxxEhpIkCRMHm/EwLotkRZFkC3ZNz0zmVrN1zpNV8EmL9zKICvvfaa7L333jJ//nyzEljY9BLv3Llz5emnn5arr77aXB7++OOP10i0Xi5W+Rs2bFiVSdeVRP1T2DRArVq1kqVLl0qjRo3y9ekIaDQIoNtiI4Bu+a7dOwKYLm+O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7gIubDvssIP06dMn0k0gUQsT4oeKMTNJRv18ZG0/sk22s5bZqOcbYrajssnjfkELYOExMHfccYe5DDx69Gi58847ZcaMGdK6devE6h3ih4oxM0km9gHyrCOyTbY9i2RipxNithODl8GOghZArZeu/l1//fXmQdA77bST3HjjjdKjR49ES6l3DutjZYYNGyb169dPtG9fO2PM1NnXbNqeF9km27YZ8rV9iNn2tRZpnFfwApgGZI4BAQhAAAIQgAAEfCKAAPpUDc4FAhCAAAQgAAEIpEAAAUwBMoeAAAQgAAEIQAACPhFAAH2qBucCAQhAAAIQgAAEUiCAAKYAmUNAAAIQgAAEIAABnwgggClUQ+80HjlypLnTeMcdd5SbbrpJ9tlnnxSO7PYQemfzI488Yt6astFGG5lX6l133XWy3XbbVRx4v/32W+e9ysccc4w88MADbk/OUe9VvQ6wefPm8tVXX5kj6tPl9XWB+kih77//3jxr8tZbbzV1z+rWpk0bmTt37jqnf8YZZ5ix5aHGU6ZMMZ/RadOmmc/phAkTpG/fvhVjjlJXrfc555wj//jHP0y7ww8/XG6++WZp0qSJl6Vf35hXrlwpf/jDH+TJJ5+UTz/91Lwr9YADDpBrr73WvDmhsFWVjaFDh5r9fNxqqvPAgQPNq0Arb/oZnjp1asVf6Z2yF1xwgdx///3y888/y/7772+eJuHr68RqGnN1b7HSp2MMGTLEjDtrdfYxez6eEwLouCqFZw3qD4i9995bRo0aJWPGjJGZM2fKNtts4/jobrv/zW9+I8cee6zsuuuuUlZWJpdccom8//77Zmwbb7yxObjKQceOHeXyyy+vOBmVxay+fFsF8O9//7s899xzFeMpLS2VLbbYwvx/FWB9neC4cePMuK+88krRH8D6bumGDRu6LYij3r/55htZtWpVRe8ffPCB9OrVS1588UVT3zzUeNKkSea94N26dZN+/fqtI4BR6tq7d2/58ssvjfzrdsopp5iJ8/HHH3dUGbtu1zdmfbPLUUcdJYMGDZLOnTubX2bOPfdc8zl/++231xDAk046yexX2DbZZBPRPz5uNdVZBXDRokUyduzYitOvV6+eNG3atOL/n3766aam+hnX14Cef/755pWg+suD/izwbatpzIVfXgvnrftrTWfPni3t2rWrEMAs1dm3Gvh6Pgig48rob486qdx+++0VR9p+++3N6oKuoOVpU1Fo1qyZWfErPEtR5aBLly5m1TMPmwrgo48+Ku++++46w9FVIl0d0YlSV0F009UCXSFUgTj11FPzgMCMb+LEifLJJ5+Yd2DnrcY6psorgFHq+uGHH4q+RUhXivQzr5v+tz5gXlfIK6+K+xiCtcdc1Tm+9dZbsttuu5nV4MIvryq4mgf9k7WtqjGrAC5ZssR8xqvaVIz1lz19X7xeydBtwYIF0qpVK7NaetBBB3mNIUqddW7Sd+Q+//zzFWPJcp29LkgtnxwC6LAAab5v2OEwInetvzF26NDBrALqQ7V1UznQN6voJKoipKskl112WWZXw1QA9VKhrmDqQ711sr/66qvNb8p6qax9+/Yyffp06dq1awU3fbWgXgZc+9JSZLAe7aiZVsk977zz5OKLL85ljdeeJKPU9a677jJMVB4qb1p3fbj8iSee6FEV1z2VKGKgq94HHnigGWPhvc8qBvpLjuZCJah///7msqGumvm+VSeAKn96/lq7fffd16zo6y+2ur3wwgvmkq+u+G266aYVQ9RVUhUn/fqHz1tNddbVT72UrT+rjjvuuDUEMKt19rketX1uCKDDCuhvhltvvbW5tKTfjytsKgz6AdPLgnnZVPBUdPRS0csvv1wxLH21Xtu2bWXLLbcUvXSob0PZdttt5dlnn83k0PXyyE8//WQu7+oPS73Eqys8KrlaT73MP3/+/DW+J6WXAnXV5Omnn87kmCuf9IMPPmgmhi+++KJijHmr8dqT5GuvvVZjXfUzrZcEP/744zVqrDlR+dPc+7zVJAa//PKL/OpXv5JOnTrJvffeWzEUlVu9wqEy9Oabb5px6s8B/ZqL71tVY9av7Ojla30V6GeffSaXXnqpueytl3f1F77x48ebeqoMVd5UjPXnnH7Fx+etpjrr9/70+5s6d2244Ya5qLPP9ajtc0MAHVagIIA6geiloMKmv1HqJQQVh7xsZ555pjzxxBPyyiuvrPfL0PqDtHv37uYHqk4cWd9+/PFHs+p34YUXyh577GFEQeu+1VZbVQxNvx81b948eeqpp7I+XHOJS1dH1ve9tqzXuDoBXF9dq/ulTlfE9btTF110kde1X58Y6A0hurKn0j958uSK1b+qBvTwww+b7w4uXrzYfD/O560mGdJz1xuCVAb1prUjjzyyWgHU78TqzwF9r7zPW01jVsHXsejNS+vbslRnn+tR2+eGADqsQCiXgM8++2zznRm92UF/C17fpiuF+pt05e/QOCxBKl3rD0xd1dRLX3m+BKyrmHqpW+/81lWe6ras15hLwP+prMrf0Ucfbb7eoJc/a5I6Xf3WS4iVvwuZyoewiIPUJEOFLlXiTz75ZPO93jxfAtYrN/rdbf1+s17SXt+WpToXEY1gmiCAjkut3xHbZZddzGMCCpt+WVwn0KzfBKITvcqffmFeVwb0B2VNm14G3nnnnde4UaSmNj7/u14KUunTy7x6uUi/Hzd48GCzIqib/hKg3x/Kw00g+v1HvcSlq5l169attixZr3F1N4Gsr66Fm0DeeOMNc6OEbvrfuiqc1ZtACvKnN/voHd+FO93X93nUm4MOO+ywNW4U8fXzG0UAv/32W/M1Hr2z+4QTTpDCTSB6GVzFWDddJVTpzfpNIHoDjH52K9/lXV3tslRnX/Pnw3khgI6rUHgMjF4a0MvA+oNEvzOl3xnTSwtZ3vQ5cPqdmMcee2yNuxz1Bgl91MucOXPkvvvuk4MPPlg233xz83gYfWSC/pveUejjIxNqqoc+/0snOL0L8uuvvzbfAdS7nvXGF62nip6KvT5GQoVYLw2qHGf5MTDKZPXq1WZ197e//e0az3jLS42XLVtmHnuhm97Ac8MNN0jPnj3N4z+01lHqqjc46WXiwvfA9JcCzYSvj4FZ35j1Fxl9HI7e0KSTvd7AVdiUiX4N4PXXXzcrfcpJP/P6mVZJ1q946M8EH7f1jVnHpb/k6Lj1Kxyff/65udFJL32r4Bce46SPgVEm+p1PbaM/E1QUfX0MTE3Z1jr961//MmP+05/+JKeddtoapctinX3Mno/nhACmUBVd/dMv1+pvinp3rH5xuvCYlBQO7+wQ1T1AVOVHf5vUlaLjjz/e/FapP4T0LsFDDjnE3AVc+blazk7QQcf63EO91K3fcdIVEV3hueKKK8wjQHQrPDBYJaDyg6ALd0U7OKVUunzmmWfM9/9UZPXGhsKWlxqrpKvIrL0NGDDATPRR6qp3hq79IOhbbrnF2wdBr2/MKkLVfZ2j8PxHlUP9JVBXOHUlXGVXPx+6+t2gQYNUchn3IOsbsz6qS+/kfeedd8ydzipEmgn9fOvPrsKmN8To1z30l9/KD4KuvE/c83K5f03Z1mPrwoQ+ykfnqLWf0ZrFOrvkmae+EcA8VZOxQAACEIAABCAAgQgEEMAIkNgFAhCAAAQgAAEI5IkAApinajIWCEAAAhCAAAQgEIEAAhgBErtAAAIQgAAEIACBPBFAAPNUTcYCAQhAAAIQgAAEIhBAACNAYhcIQAACEIAABCCQJwIIYJ6qyVggAAEIQAACEIBABAIIYARI7AIBCEAAAhCAAATyRAABzFM1GQsEIAABCEAAAhCIQAABjACJXSAAAb8JvPbaa7LPPvtIr1695Kmnnqo42cJbEPStLE2aNPF7EJwdBCAAgRQJIIApwuZQEICAGwInn3yybLLJJjJmzBjzzml9f69uCKAb3vQKAQhknwACmP0aMgIIBE3gxx9/NO9tfeutt8x7pvW9zH/84x/l888/X+d9toV3++oq4ZVXXmneU11aWip77rmn/PnPf5b27dtXsHzzzTfl1FNPlQ8//NC8w/uSSy6RI4880rwrtkuXLuYdwfr+VH1vbGF79NFH5YgjjjDvDi5sjz/+uOi7dWfMmCEtWrQQPQftq27dukHXjcFDAAK1SwABrF3+HB0CELAkcNddd8ntt99uBHDixIly9tlny6effiqrV6+Wxx57TPr16ycfffSRNGrUSDbaaCPzsvuHH35YSkpKZOeddxYVyIIwvvvuu1KnTh3zd23btpVf//rXcumll8pnn30mv//9702/cQTw6aeflqOPPlr+8pe/mEvUc+bMkVNOOUUGDhxoZJUNAhCAQG0RQABrizzHhQAEEiGw9957G8lSQSsrKzOrgffff78ccMABkS8Bf/PNN9KsWTN5//33zWrf6NGjZdiwYTJv3jxp0KCBOc877rhDTj/99FgC2KNHD+ndu7fpq7Dde++9cuGFF8qCBQsSGT+dQAACECiGAAJYDDXaQAACXhDQlT0Vti+//FKaN29uzumss86S7777TsaPH1+tAOpKnK7sTZ06VRYvXmxWC3XV74knnpCDDz5YBg8eLO+995688MILFePU/6+XfuOsAG688camb73MXNhWrVolv/zyizleQS69gMlJQAACQRFAAIMqN4OFQL4I6ErayJEj1xAs/f7dBhtsIAsXLjQS17NnT1n7LmD9nmCrVq3MSpx+L08lTUVywoQJ0rdvX/Pdvn/+85/rFcC//vWv5nLz0qVLK6A+9NBDZjWy8B1AveQ8YsQI893Btbd27dqZy81sEIAABGqDAAJYG9Q5JgQgYE1AL/e2bNnSSNyBBx64Rn/6vT+Vs27duoleItZVvs0228zs8+2338rmm28uU6ZMMd/L0+2VV14x/10QwMIlYF1ZVInTbdSoUXLaaadVrABOmjRJDjnkEPnhhx9EV/p005s7rr766goB1GN36tRJ/u///s96vHQAAQhAIEkCCGCSNOkLAhBIjYDecXvMMcfI119/bW7sqLypiD355JPmphBd6Rs7dqy5tKsyp5dd9ft++t08vRHjiy++kIsuusjcRFIQwGXLlpmbQPS5gn/4wx/MHcX6HcPZs2dXCKBeZtbHzZx00klGNvWu4SFDhpjv9hVWAPUmkEMPPdSIYf/+/c2Kn64s6ncN9S5kNghAAAK1RQABrC3yHBcCELAicNhhh5lLt/q9vbW36dOnyy677CLTpk0z/37bbbfJokWL5IQTTjCPb3nuuefknHPOMXf1brfdduYu3f32269CALU//X6grvjpY2D0krF+Z1BXFgvfAdR9VEJV+nSlUG86Ofzww81dvpUfA6MSePnll5t2emlaVwT1uYWDBg2yGj+NIQABCNgQQABt6NEWAhAIhkDhuYKVBTCYwTNQCEAgdwQQwNyVlAFBAAIuCCCALqjSJwQgUFsEEMDaIs9xIQCBTBFAADNVLk4WAhCogQACSEQgAAEIQAACEIBAYAQQwMAKznAhAAEIQAACEIAAAkgGIAABCEAAAhCAQGAEEMDACs5wIQABCEAAAhCAAAJIBiAAAQhAAAIQgEBgBBDAwArOcCEAAQhAAAIQgAACSAYgAAEIQAACEIBAYAQQwMAKznAhAAEIQAACEIAAAkgGIAABCEAAAhCAQGAEEMDACs5wIQABCEAAAhCAwP8DVPueXod9Kb8AAAAASUVORK5CYII=\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(ds[\"ATTACK\"]) \n",
"plt.xlabel('Ataque') \n",
"plt.ylabel('Valor') \n",
"plt.plot()\n",
"plt.axvline(ds['ATTACK'].mean(),linestyle='dashed',color='purple') \n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plotando pokemons pelo tipo"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAAK8CAYAAAANumxDAAAgAElEQVR4XuydB3RVVdOG33vTewhJgEBIIEAooRdp1k+s+Im/qCgWVERB+ChSAoiAgqKAgBQbiFKkKFVARUBUmvSOht47CSUQUv81J9yQhARuctsp71krS0zOnj3zzA68Z+7sfUxZWVlZ4EUCJEACJEACJEACJEACOiVgouDVaWYZFgmQAAmQAAmQAAmQgEKAgpcLgQRIgARIgARIgARIQNcEKHh1nV4GRwIkQAIkQAIkQAIkQMHLNUACJEACJEACJEACJKBrAhS8uk4vgyMBEiABEiABEiABEqDg5RogARIgARIgARIgARLQNQEKXl2nl8GRAAmQAAmQAAmQAAlQ8HINkAAJkAAJkAAJkAAJ6JoABa+u08vgSIAESIAESIAESIAEKHi5BkiABEiABEiABEiABHRNgIJX1+llcCRAAiRAAiRAAiRAAhS8XAMkQAIkQAIkQAIkQAK6JkDBq+v0MjgSIAESIAESIAESIAEKXq4BEiABEiABEiABEiABXROg4NV1ehkcCZAACZAACZAACZAABS/XAAmQAAmQAAmQAAmQgK4JUPDqOr0MjgRIgARIgARIgARIgIKXa4AESIAESIAESIAESEDXBCh4dZ1eBkcCJEACJEACJEACJEDByzVAAiRAAiRAAiRAAiSgawIUvLpOL4MjARIgARIgARIgARKg4OUaIAESIAESIAESIAES0DUBCl5dp5fBkQAJkAAJkAAJkAAJUPByDZAACZAACZAACZAACeiaAAWvrtPL4EiABEiABEiABEiABCh4uQZIgARIgARIgARIgAR0TYCCV9fpZXAkQAIkQAIkQAIkQAIUvFwDJEACJEACJEACJEACuiZAwavr9DI4EiABEiABEiABEiABCl6uARIgARIgARIgARIgAV0ToODVdXoZHAmQAAmQAAmQAAmQAAUv1wAJkAAJkAAJkAAJkICuCVDw6jq9DI4ESIAESIAESIAESICCl2uABEiABEiABEiABEhA1wQoeHWdXgZHAiRAAiRAAiRAAiRAwcs1QAIkQAIkQAIkQAIkoGsCFLy6Ti+DIwESIAESIAESIAESoODlGiABEiABEiABEiABEtA1AQpeXaeXwZEACZAACZAACZAACVDwcg2QAAmQAAmQAAmQAAnomgAF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dejW6H8XtJjI7bffjhkzZpxlau/evWjbljl/tWBMG81PgIK3+ZlzRCcnkJOfj59++w2/btyI4tJStImMhHsjRWsNgL+8vVWZ4izG99rszsofORI+eXk2G58DN57AB5dG4qG+KY030IArjTAqkdvfoz88XDxQUlqC/Uf2w9fLF8MGDMOwfsN0kVdXBG96ejo+++yz02YXEhLS6CdTDcDEriRgFQIUvFbBSqMkcH4Ckrd316FDqjTx1r174ePpiejQ0EYVrJCRJI3Znz4+SvjmNqLEMder8QSkylrlpZfCpdr+Knc1ftaOc2WlAQid4IMcFFh1UgmuCRjsORiBxkDI3/8jaUdQUFiA7gndce3l1yKuZZxVx2+IcRG8ubm5+PHHH8+6rKysDE8//TS++uor5Ofno0ePHnj77bfRs2fPk33nzp2LJ598EkePHkViYiLEnrxycnLg7++v+n333Xd4/vnnsW/fPkRERODhhx9W17CRgLUIUPBaiyztkoAFBMrKy7Fi82bMWbUKqceOISYsDP5NSEFWBWCzry9WBgaioJGp0Cxwm11OIdAmPR37briBTOyYwNjbY/FxS+scXosyRmGo51DEuMYoQrn5uTicchhhIWEYOXgkBvUeBLPOns6cT/A++uijmD17NqZOnYrY2Fi89tprEIErwjUwMBBJSUlo164dpN/dd9+NzZs346mnnkJycvJJwbtx40b06tULL7zwAq6//nqsWbMGDzzwAD788EMljNlIwBoEKHitQZU2SaCBBNKzs/HDihVYtXUrqqur0SoiQh1ua2yTjA5/+Prit4AAFFH4NhajRdcN27oV8x97zKK+7KRPAoeCPdD2oXJUQr4yatNamFqgv3t/xJmP79wWlxSrVGNuZjf06dYHI4eMRGRYpDaDaWxFROfMmTPh7u5+0vKwYcMwffp0BAQEqPcbb7xRfSaH7Vq2bInHHntM7fyOGzcO8+bNw7Zt205e+9xzz+G///3vScF70003ITMzE4sWLTrZ55///Ke6bvv27RrPhuZI4DgBCl7eCSSgEwLymHPznj34bvlylbs32M+v0ZXaaqdUYTBgvZ8f1gQEoIQJ662y0g8uXoz3X3nFKrZptPkIDHoiGst9m37wsKWpJfp59ENr19YnBWFSShIqKyrRtUNXDB80HJ3adbLpobT6qIrglR3ZyZMnn+zq5eWl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\" width=\"700\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"labels = 'Agua', 'Normal', 'Metal', 'Inseto', 'Psiquico', 'Fogo', 'Eletrico', 'Rocha', 'Outros'\n",
"sizes = [112, 98, 70, 69, 57, 52, 44, 44, 175]\n",
"colors = ['Y', 'B', '#00ff00', 'C', 'R', 'G', 'silver', 'white', 'M']\n",
"explode = (0, 0, 0, 0, 0, 0, 0, 0, 0) \n",
"plt.pie(sizes, explode=explode, labels=labels, colors=colors,\n",
" autopct='%1.1f%%', shadow=True, startangle=90)\n",
"plt.axis('equal')\n",
"plt.title(\"Dividindo os pokemons pelo tipo\")\n",
"plt.plot()\n",
"fig=plt.gcf()\n",
"fig.set_size_inches(7,7)\n",
"plt.show()"
]
},
{
"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.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment