{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CategoricalColumnTransformer\n", "\n", "CategoricalColumnTransformer is a function for converting data frames containing one or more categorical columns which you would like to use to represent your data into variable length lists of tokens. This format is far more conducive the the various vectorization techniques contained within this library (or other libraries). This is often used as a preprocessing step to make a pandas data frame more palatable to downstream vectorizers such as our [NgramVectorizer](https://vectorizers.readthedocs.io/en/latest/generated/vectorizers.NgramVectorizer.html) or sklearn's [CountVectorizer](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html). Both these vectorizers expect data in the form of a variable length sequence of tokens. In CountVectorizers case they typically expect these variable sequence to be joined together into a single large string that needs to be parsed. Both these techniques convert from variable length sequences of tokens into a **[one hot encoding](https://en.wikipedia.org/wiki/One-hot#Natural_language_processing)** representation of our data. That is to build a new column for each categorical variable name and value and then place a one in that new column if that particular value was present within a particular row. More generally, that is a vector composed of 1's and 0's where the 1's are in positions representing the tokens present in a given sequence. These vectors will by definition have length equal to the the number of unique tokens which exist within your corpus. Because the vast majority of these vectors will be 0's (the vast majority of your tokens aren't present in any given sequence) sparse representations are particularly useful for this sort of data. Sparse representation are those which only record the position of positive values and store the zero values implicitly.\n", "\n", "There are other techniques for directly constructing these one hot representation. Two of the most common are pandas' [get_dummies](https://pandas.pydata.org/pandas-docs/version/0.23.3/generated/pandas.get_dummies.html) function or scikit-learn's [OneHotEncoder](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html). Both are fine functions, but for large amounts of data (particulary if some of your columns have many values) you really want to ensure that you keep good track of your column names and maintain a sparse matrix representation. A sparse matrix representation is one where you never actually write down any of the zero values. This is important in a one-hot encoded representation because you have one column for every single categorical value in your data set. If, for example, one of your columns contained a name or phone number then you could easily have added hundreds of thousands of (mostly zero) columns to every row within your data matrix. For even medium sized data sets this can quickly exceed your computers memory limit. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import Some libraries¶" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " const el = document.getElementById(\"1002\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) {\n", " if (callback != null)\n", " callback();\n", " });\n", " } finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(css_urls, js_urls, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", " run_callbacks()\n", " }\n", " }\n", "\n", " function on_error(url) {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (let i = 0; i < css_urls.length; i++) {\n", " const url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.rel = \"stylesheet\";\n", " element.type = \"text/css\";\n", " element.href = url;\n", " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", " document.body.appendChild(element);\n", " }\n", "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.async = false;\n", " element.src = url;\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " };\n", "\n", " function inject_raw_css(css) {\n", " const element = document.createElement(\"style\");\n", " element.appendChild(document.createTextNode(css));\n", " document.body.appendChild(element);\n", " }\n", "\n", " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.14.4/dist/panel.min.js\"];\n", " const css_urls = [];\n", "\n", " const inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " if (root.Bokeh !== undefined || force === true) {\n", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", "if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(css_urls, js_urls, function() {\n", " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.14.4/dist/panel.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "from sklearn.datasets import fetch_openml\n", "from vectorizers.transformers import CategoricalColumnTransformer\n", "from vectorizers import NgramVectorizer\n", "from vectorizers.utils import summarize_embedding\n", "import umap\n", "import umap.plot\n", "umap.plot.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Let’s fetch some data¶\n", "\n", "To demonstrate how to use our CategoricalColumnTransformer we will need an interesting data set with a number of categorical features. The wine reviews data set is an excllent example of such a thing. It consists of 150,930 wine reviews along with the winery that made the wine, it's country, province, regions, wine variety and a few other variables. This plethora of categorical values will allow us to demonstrate a typical use case for transformer." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/jchealy/mambaforge/envs/vectorizers_build/lib/python3.10/site-packages/sklearn/datasets/_openml.py:968: FutureWarning: The default value of `parser` will change from `'liac-arff'` to `'auto'` in 1.4. You can set `parser='auto'` to silence this warning. Therefore, an `ImportError` will be raised from 1.4 if the dataset is dense and pandas is not installed. Note that the pandas parser may return different data types. See the Notes Section in fetch_openml's API doc for details.\n", " warn(\n" ] } ], "source": [ "from sklearn.datasets import fetch_openml\n", "data_openml = fetch_openml('wine_reviews')\n", "data = pd.DataFrame(data_openml.data)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countuniquetopfreqmeanstdmin25%50%75%max
country15092548US62397NaNNaNNaNNaNNaNNaNNaN
description15093097821A little bit funky and unsettled when you pop ...6NaNNaNNaNNaNNaNNaNNaN
designation10519530621Reserve2752NaNNaNNaNNaNNaNNaNNaN
points150930.0NaNNaNNaN87.8884183.22239280.086.088.090.0100.0
price137235.0NaNNaNNaN33.13148236.3225364.016.024.040.02300.0
province150925455California44508NaNNaNNaNNaNNaNNaNNaN
region_11258701236Napa Valley6209NaNNaNNaNNaNNaNNaNNaN
region_26095318Central Coast13057NaNNaNNaNNaNNaNNaNNaN
variety150930632Chardonnay14482NaNNaNNaNNaNNaNNaNNaN
winery15093014810Williams Selyem374NaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " count unique \n", "country 150925 48 \\\n", "description 150930 97821 \n", "designation 105195 30621 \n", "points 150930.0 NaN \n", "price 137235.0 NaN \n", "province 150925 455 \n", "region_1 125870 1236 \n", "region_2 60953 18 \n", "variety 150930 632 \n", "winery 150930 14810 \n", "\n", " top freq \n", "country US 62397 \\\n", "description A little bit funky and unsettled when you pop ... 6 \n", "designation Reserve 2752 \n", "points NaN NaN \n", "price NaN NaN \n", "province California 44508 \n", "region_1 Napa Valley 6209 \n", "region_2 Central Coast 13057 \n", "variety Chardonnay 14482 \n", "winery Williams Selyem 374 \n", "\n", " mean std min 25% 50% 75% max \n", "country NaN NaN NaN NaN NaN NaN NaN \n", "description NaN NaN NaN NaN NaN NaN NaN \n", "designation NaN NaN NaN NaN NaN NaN NaN \n", "points 87.888418 3.222392 80.0 86.0 88.0 90.0 100.0 \n", "price 33.131482 36.322536 4.0 16.0 24.0 40.0 2300.0 \n", "province NaN NaN NaN NaN NaN NaN NaN \n", "region_1 NaN NaN NaN NaN NaN NaN NaN \n", "region_2 NaN NaN NaN NaN NaN NaN NaN \n", "variety NaN NaN NaN NaN NaN NaN NaN \n", "winery NaN NaN NaN NaN NaN NaN NaN " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe(include='all').T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Restructure our Data\n", "### CategoricalColumnTransformer\n", "\n", "The first thing we need to do when embedding any data is decide what the object we are going to be interested in embedding. Given a dataset with many categorical values this isn't necessarily the rows of our data frame. In this case we could certainly vectorizer and embed our wine reviews. That would be straight forward with many existing techniques. On the other hand, one could be equally interested in examining wine varieties or wineries. In our CategoricalColumnTransformer the column that you are interested in treating as your object to examined should be specified by the parameter object_column_name. For our example we will be interested in exploring the objects defined by our variety variable. These are wine types such as Chardonnay, Pinot Noir, etc... \n", "\n", "Next we need to decide which labels should be used to describe our objects of interest. The parameter in question would be descriptor_column_name. This is either a single string representing a column name or a list of string representing a collection of column names. In this example we will describe our wine varieties by the regions in which they are made. We won't use the country variable so that we can save it for visualization. In summary, we wish to described our wine varities by a cagorical vector of the regions in which they are made. \n", "\n", "Our next parameter of interesting is the boolean include_column_name. This parameter controls whether each column name is appended before each column value or not. When dealing with multiple columns which might contain identical tokens then one should likely include the column names in order to disambiguate between these tokens. Of course there are many cases where there is no ambiguity and as such including such names just makes for cumbersome column names. \n", "\n", "Lastly, we have the boolean parameter unique_values. Setting this to true uniques our list of tokens before returning it. In this case we set it equal to True since we are looking at reviews of wines we would likely to eliminate any biases generated from the number of reviews a wine has received. \n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "transformer = CategoricalColumnTransformer(object_column_name='variety',descriptor_column_name=['province','region_1','region_2'], include_column_name=True, unique_values=True)\n", "variety_by_location_list = transformer.fit_transform(data)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "variety\n", "Agiorgitiko [province:Nemea, province:Peloponnese, provinc...\n", "Aglianico [province:California, province:Southern Italy,...\n", "Aidani [province:Cyclades]\n", "Airen [province:Central Spain, region_1:Vino de la T...\n", "Albana [province:Alentejano, province:Central Italy, ...\n", " ... \n", "Zierfandler-Rotgipfler [province:Thermenregion]\n", "Zinfandel [province:California, province:Washington, pro...\n", "Zlahtina [province:Krk, province:Hrvatsko Primorje]\n", "Zweigelt [province:Carnuntum, province:Burgenland, prov...\n", "Žilavka [province:Tikves]\n", "Length: 632, dtype: object" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "variety_by_location_list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "variety_by_location_list is now a pandas Series with an index that is the variety and a value that is a list of the unique tokens which describe the varioius geographic areas that manufuacture that variety." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vectorize our data\n", "Now that we've converted our data to sequences of tokens we can convert them into a our sparse one hot encoding format. We can do this quite efficiently by using our [NgramVectorizer](https://vectorizers.readthedocs.io/en/latest/generated/vectorizers.NgramVectorizer.html). This will convert from a series of of token lists into a one hot encoded sparse matrix format." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<632x1709 sparse matrix of type ''\n", "\twith 11459 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vectorizer = NgramVectorizer()\n", "variety_matrix = vectorizer.fit_transform(variety_by_location_list)\n", "variety_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "variety_matrix is now a 632 by 1709 dimensional sparse matrix. Each row represents one of our varieties and each column represents the presence or absence of one of our categorical values. From the dimension we can see that there were 1709 unique categorical values across our columns of interest: ('province','region_1','region_2').\n", "\n", "The column names can be accessed via the dictionaries: \n", "vectorizer.column_label_dictionary_ or it's reversed dictionary vectorizer.column_index_dictionary_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Look at your data\n", "\n", "We will use our UMAP algorithm along with a few data enrichments to explore what this representation shows up about our wine varieties. In order to move from a representation to an embedding we will also need to define a distance measure overtop of our vectors. For the purposes of this notebook we will choose cosine distance. It tends to perform fairly well in these high dimensional sparse spaces. \n", "\n", "More categorical distance measures such as jaccard or dice might have also been appropriate and might reveal subtly differnt structure within our data.\n", "\n", "Now that we have a representation and a distance function we will use UMAP to embed our data into two dimensions for visualization." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" ] } ], "source": [ "reducer = umap.UMAP(n_neighbors=10, metric='cosine', random_state=17).fit(variety_matrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's enrich our data with some labels and extra data for exploring our embedding. To do this we'll both make use of some basic pandas functionality but also introduce our summarize_embedding function. summarize_embedding takes a matrix and a dictionary of column names and returns a label that consists of column names associated with the top k (defaults to 3) values in each row. \n", "\n", "We will colour our vertices by the country which contains the most wineries which produce that variety." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Associate each variety with the country containing the most wineries which make that style\n", "country_map = data[['variety','winery','country']].drop_duplicates().groupby('variety').country.agg(lambda x:x.value_counts().index[0])\n", "variety_labels = pd.Series(variety_by_location_list.index)\n", "location_tags = summarize_embedding(variety_matrix, vectorizer.column_index_dictionary_, return_type='string')\n", "hover_df = pd.DataFrame({'variety': variety_labels, 'location': location_tags, 'main_country':variety_labels.map(country_map) })" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"edd58a3a-e969-4c70-84b6-47b067a7fe21\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"black\",\"below\":[{\"id\":\"1013\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1041\"}],\"title\":{\"id\":\"1043\"},\"toolbar\":{\"id\":\"1029\"},\"x_range\":{\"id\":\"1005\"},\"x_scale\":{\"id\":\"1009\"},\"y_range\":{\"id\":\"1007\"},\"y_scale\":{\"id\":\"1011\"}},\"id\":\"1004\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1049\"},\"group\":null,\"major_label_policy\":{\"id\":\"1050\"},\"ticker\":{\"id\":\"1014\"},\"visible\":false},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"alpha\":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],\"color\":[\"#6efebe\",\"#a2f9a0\",\"#6efebe\",\"#ff4d27\",\"#a2f9a0\",\"#ff4d27\",\"#a2f9a0\",\"#ff4d27\",\"#a2f9a0\",\"#e6cd73\",\"#a2f9a0\",\"#e6cd73\",\"#3ae8d6\",\"#3ae8d6\",\"#3ae8d6\",\"#ff190d\",\"#e6cd73\",\"#e6cd73\",\"#ff190d\",\"#a2f9a0\",\"#e6cd73\",\"#1996f3\",\"#e6cd73\",\"#e6cd73\",\"#90feab\",\"#e6cd73\",\"#a2f9a0\",\"#a2f9a0\",\"#6efebe\",\"#6efebe\",\"#6efebe\",\"#4e4dfc\",\"#4e4dfc\",\"#3ae8d6\",\"#e6cd73\",\"#e6cd73\",\"#ff190d\",\"#e6cd73\",\"#e6cd73\",\"#a2f9a0\",\"#e6cd73\",\"#e6cd73\",\"#ff190d\",\"#ff190d\",\"#3c68f9\",\"#4e4dfc\",\"#4e4dfc\",\"#4e4dfc\",\"#ff4d27\",\"#a2f9a0\",\"#7019ff\",\"#3ae8d6\",\"#3ae8d6\",\"#a2f9a0\",\"#ff351b\",\"#a2f9a0\",\"#3ae8d6\",\"#e6cd73\",\"#ff7e41\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#90feab\",\"#09a9ee\",\"#ff190d\",\"#ff190d\",\"#ff4d27\",\"#ff190d\",\"#2adddd\",\"#ff190d\",\"#ff190d\",\"#d4dd80\",\"#e6cd73\",\"#ff190d\",\"#09a9ee\",\"#7019ff\",\"#ff190d\",\"#ff7e41\",\"#a2f9a0\",\"#5e35fe\",\"#ff190d\",\"#ff4d27\",\"#5e35fe\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#09a9ee\",\"#ff4d27\",\"#3ae8d6\",\"#ff190d\",\"#a2f9a0\",\"#ff4d27\",\"#ff4d27\",\"#09a9ee\",\"#09a9ee\",\"#09a9ee\",\"#5e35fe\",\"#a2f9a0\",\"#a2f9a0\",\"#e6cd73\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#e6cd73\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#5df9c7\",\"#ff190d\",\"#3ae8d6\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#3ae8d6\",\"#ff190d\",\"#3ae8d6\",\"#3ae8d6\",\"#ff7e41\",\"#3ae8d6\",\"#ff7e41\",\"#ff190d\",\"#4df3ce\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#3ae8d6\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#ff4d27\",\"#80ffb4\",\"#e6cd73\",\"#6efebe\",\"#ff190d\",\"#a2f9a0\",\"#ff190d\",\"#ff4d27\",\"#3ae8d6\",\"#a2f9a0\",\"#5e35fe\",\"#ff190d\",\"#5df9c7\",\"#ff351b\",\"#a2f9a0\",\"#e6cd73\",\"#a2f9a0\",\"#e6cd73\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#e6cd73\",\"#f6be68\",\"#f6be68\",\"#f6be68\",\"#a2f9a0\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#5df9c7\",\"#ff190d\",\"#80ffb4\",\"#ff190d\",\"#a2f9a0\",\"#3ae8d6\",\"#ff190d\",\"#a2f9a0\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#4e4dfc\",\"#4e4dfc\",\"#ff190d\",\"#09a9ee\",\"#a2f9a0\",\"#ff4d27\",\"#e6cd73\",\"#ff4d27\",\"#a2f9a0\",\"#4e4dfc\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#3ae8d6\",\"#ff4d27\",\"#ff190d\",\"#5e35fe\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#a2f9a0\",\"#3ae8d6\",\"#3ae8d6\",\"#4e4dfc\",\"#ff4d27\",\"#5df9c7\",\"#80ffb4\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#80ffb4\",\"#ff190d\",\"#3ae8d6\",\"#ff4d27\",\"#ff190d\",\"#80ffb4\",\"#ff351b\",\"#8000ff\",\"#ff351b\",\"#ff351b\",\"#80ffb4\",\"#a2f9a0\",\"#ff351b\",\"#80ffb4\",\"#b2f396\",\"#ff351b\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#ff4d27\",\"#3ae8d6\",\"#e6cd73\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#e6cd73\",\"#ff190d\",\"#a2f9a0\",\"#6efebe\",\"#6efebe\",\"#7019ff\",\"#7019ff\",\"#7019ff\",\"#7019ff\",\"#7019ff\",\"#3ae8d6\",\"#7019ff\",\"#7019ff\",\"#3ae8d6\",\"#7019ff\",\"#e6cd73\",\"#ff4d27\",\"#a2f9a0\",\"#ff190d\",\"#e6cd73\",\"#a2f9a0\",\"#a2f9a0\",\"#ff4d27\",\"#08bee9\",\"#3ae8d6\",\"#6efebe\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#ff4d27\",\"#3ae8d6\",\"#6efebe\",\"#6efebe\",\"#6efebe\",\"#2c7ef7\",\"#ff4d27\",\"#3ae8d6\",\"#ff4d27\",\"#ff6835\",\"#ff190d\",\"#ff190d\",\"#90feab\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#3ae8d6\",\"#7019ff\",\"#ff190d\",\"#ff7e41\",\"#e6cd73\",\"#ff190d\",\"#ff4d27\",\"#ff4d27\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#ffa95b\",\"#4e4dfc\",\"#ff190d\",\"#ff4d27\",\"#a2f9a0\",\"#ff4d27\",\"#e6cd73\",\"#e6cd73\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#6efebe\",\"#6efebe\",\"#ff190d\",\"#4df3ce\",\"#5e35fe\",\"#5e35fe\",\"#3ae8d6\",\"#3ae8d6\",\"#ff190d\",\"#3ae8d6\",\"#ff190d\",\"#5e35fe\",\"#ff190d\",\"#5e35fe\",\"#09a9ee\",\"#4e4dfc\",\"#4e4dfc\",\"#5df9c7\",\"#a2f9a0\",\"#ff351b\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#4e4dfc\",\"#3ae8d6\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#ff351b\",\"#ff190d\",\"#4e4dfc\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#a2f9a0\",\"#09a9ee\",\"#a2f9a0\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#3ae8d6\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#6efebe\",\"#ff4d27\",\"#a2f9a0\",\"#3ae8d6\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#ff964f\",\"#3ae8d6\",\"#a2f9a0\",\"#3ae8d6\",\"#4e4dfc\",\"#3ae8d6\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#ff190d\",\"#ff190d\",\"#ff7e41\",\"#ff7e41\",\"#08bee9\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#ffa95b\",\"#08bee9\",\"#ff4d27\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#ffa95b\",\"#a2f9a0\",\"#3ae8d6\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#e6cd73\",\"#a2f9a0\",\"#ff964f\",\"#ff190d\",\"#a2f9a0\",\"#3ae8d6\",\"#ff190d\",\"#a2f9a0\",\"#5df9c7\",\"#ff190d\",\"#5df9c7\",\"#4df3ce\",\"#6efebe\",\"#6efebe\",\"#3ae8d6\",\"#3ae8d6\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#3ae8d6\",\"#4e4dfc\",\"#4e4dfc\",\"#4e4dfc\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#2c7ef7\",\"#ff4d27\",\"#3ae8d6\",\"#a2f9a0\",\"#a2f9a0\",\"#ff190d\",\"#a2f9a0\",\"#ff190d\",\"#ff190d\",\"#4df3ce\",\"#4df3ce\",\"#f6be68\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#ff7e41\",\"#3ae8d6\",\"#ff190d\",\"#ff4d27\",\"#09a9ee\",\"#ff190d\",\"#ff964f\",\"#5e35fe\",\"#6efebe\",\"#4e4dfc\",\"#a2f9a0\",\"#5df9c7\",\"#3ae8d6\",\"#5e35fe\",\"#ff190d\",\"#e6cd73\",\"#ff190d\",\"#ff4d27\",\"#5e35fe\",\"#5e35fe\",\"#5e35fe\",\"#7019ff\",\"#3ae8d6\",\"#5e35fe\",\"#ff7e41\",\"#ff4d27\",\"#5e35fe\",\"#6efebe\",\"#ff190d\",\"#5df9c7\",\"#5df9c7\",\"#e6cd73\",\"#a2f9a0\",\"#e6cd73\",\"#ff4d27\",\"#5df9c7\",\"#6efebe\",\"#4e4dfc\",\"#ff190d\",\"#ff7e41\",\"#a2f9a0\",\"#3ae8d6\",\"#ff190d\",\"#ff190d\",\"#7019ff\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#3ae8d6\",\"#ff190d\",\"#09a9ee\",\"#7019ff\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#4e4dfc\",\"#ff190d\",\"#a2f9a0\",\"#ffa95b\",\"#ff190d\",\"#3ae8d6\",\"#3ae8d6\",\"#3ae8d6\",\"#ff0000\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff190d\",\"#ff4d27\",\"#ff4d27\",\"#08bee9\",\"#ff190d\",\"#a2f9a0\",\"#3ae8d6\",\"#e6cd73\",\"#ff4d27\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#ff4d27\",\"#a2f9a0\",\"#ff4d27\",\"#ff4d27\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#80ffb4\",\"#5e35fe\",\"#3ae8d6\",\"#a2f9a0\",\"#09a9ee\",\"#7019ff\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#e6cd73\",\"#4e4dfc\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff4d27\",\"#e6cd73\",\"#ff190d\",\"#a2f9a0\",\"#ff190d\",\"#3ae8d6\",\"#a2f9a0\",\"#ff190d\",\"#a2f9a0\",\"#a2f9a0\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#5e35fe\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#a2f9a0\",\"#ff4d27\",\"#1996f3\",\"#ff190d\",\"#ff190d\",\"#6efebe\",\"#e6cd73\",\"#ff190d\",\"#09a9ee\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff190d\",\"#ff964f\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#ff4d27\",\"#c4e88a\",\"#4e4dfc\",\"#4e4dfc\",\"#a2f9a0\",\"#e6cd73\",\"#ff190d\",\"#ff4d27\",\"#18cde4\",\"#6efebe\",\"#18cde4\",\"#ff351b\",\"#ff964f\",\"#a2f9a0\",\"#4e4dfc\",\"#4e4dfc\",\"#ff190d\",\"#08bee9\",\"#4e4dfc\",\"#c4e88a\"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631],\"label\":[\"Greece\",\"Italy\",\"Greece\",\"Spain\",\"Italy\",\"Spain\",\"Italy\",\"Spain\",\"Italy\",\"Portugal\",\"Italy\",\"Portugal\",\"France\",\"France\",\"France\",\"US\",\"Portugal\",\"Portugal\",\"US\",\"Italy\",\"Portugal\",\"Canada\",\"Portugal\",\"Portugal\",\"Israel\",\"Portugal\",\"Italy\",\"Italy\",\"Greece\",\"Greece\",\"Greece\",\"Austria\",\"Austria\",\"France\",\"Portugal\",\"Portugal\",\"US\",\"Portugal\",\"Portugal\",\"Italy\",\"Portugal\",\"Portugal\",\"US\",\"US\",\"Bosnia and Herzegovina\",\"Austria\",\"Austria\",\"Austria\",\"Spain\",\"Italy\",\"Argentina\",\"France\",\"France\",\"Italy\",\"Turkey\",\"Italy\",\"France\",\"Portugal\",\"South Africa\",\"Italy\",\"US\",\"US\",\"Israel\",\"Chile\",\"US\",\"US\",\"Spain\",\"US\",\"Czech Republic\",\"US\",\"US\",\"Morocco\",\"Portugal\",\"US\",\"Chile\",\"Argentina\",\"US\",\"South Africa\",\"Italy\",\"Australia\",\"US\",\"Spain\",\"Australia\",\"US\",\"Italy\",\"Italy\",\"Chile\",\"Spain\",\"France\",\"US\",\"Italy\",\"Spain\",\"Spain\",\"Chile\",\"Chile\",\"Chile\",\"Australia\",\"Italy\",\"Italy\",\"Portugal\",\"Italy\",\"Italy\",\"US\",\"Portugal\",\"Italy\",\"US\",\"France\",\"US\",\"US\",\"US\",\"US\",\"Germany\",\"US\",\"France\",\"Italy\",\"US\",\"France\",\"France\",\"US\",\"France\",\"France\",\"South Africa\",\"France\",\"South Africa\",\"US\",\"Georgia\",\"Italy\",\"US\",\"France\",\"US\",\"Italy\",\"Italy\",\"France\",\"France\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"Spain\",\"Hungary\",\"Portugal\",\"Greece\",\"US\",\"Italy\",\"US\",\"Spain\",\"France\",\"Italy\",\"Australia\",\"US\",\"Germany\",\"Turkey\",\"Italy\",\"Portugal\",\"Italy\",\"Portugal\",\"Italy\",\"Italy\",\"France\",\"Portugal\",\"Romania\",\"Romania\",\"Romania\",\"Italy\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Germany\",\"US\",\"Hungary\",\"US\",\"Italy\",\"France\",\"US\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Austria\",\"Austria\",\"US\",\"Chile\",\"Italy\",\"Spain\",\"Portugal\",\"Spain\",\"Italy\",\"Austria\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"US\",\"US\",\"France\",\"Spain\",\"US\",\"Australia\",\"France\",\"Italy\",\"Italy\",\"France\",\"Italy\",\"France\",\"France\",\"Austria\",\"Spain\",\"Germany\",\"Hungary\",\"Italy\",\"Italy\",\"Italy\",\"Hungary\",\"US\",\"France\",\"Spain\",\"US\",\"Hungary\",\"Turkey\",\"Albania\",\"Turkey\",\"Turkey\",\"Hungary\",\"Italy\",\"Turkey\",\"Hungary\",\"Japan\",\"Turkey\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"Spain\",\"France\",\"Portugal\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Portugal\",\"US\",\"Italy\",\"Greece\",\"Greece\",\"Argentina\",\"Argentina\",\"Argentina\",\"Argentina\",\"Argentina\",\"France\",\"Argentina\",\"Argentina\",\"France\",\"Argentina\",\"Portugal\",\"Spain\",\"Italy\",\"US\",\"Portugal\",\"Italy\",\"Italy\",\"Spain\",\"Croatia\",\"France\",\"Greece\",\"France\",\"Italy\",\"Italy\",\"US\",\"US\",\"US\",\"Italy\",\"US\",\"US\",\"Spain\",\"France\",\"Greece\",\"Greece\",\"Greece\",\"Bulgaria\",\"Spain\",\"France\",\"Spain\",\"South Korea\",\"US\",\"US\",\"Israel\",\"US\",\"US\",\"US\",\"France\",\"Argentina\",\"US\",\"South Africa\",\"Portugal\",\"US\",\"Spain\",\"Spain\",\"France\",\"Italy\",\"Italy\",\"Serbia\",\"Austria\",\"US\",\"Spain\",\"Italy\",\"Spain\",\"Portugal\",\"Portugal\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Greece\",\"Greece\",\"US\",\"Georgia\",\"Australia\",\"Australia\",\"France\",\"France\",\"US\",\"France\",\"US\",\"Australia\",\"US\",\"Australia\",\"Chile\",\"Austria\",\"Austria\",\"Germany\",\"Italy\",\"Turkey\",\"Italy\",\"Italy\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Austria\",\"France\",\"US\",\"Italy\",\"Italy\",\"Turkey\",\"US\",\"Austria\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Italy\",\"Chile\",\"Italy\",\"Spain\",\"Italy\",\"Italy\",\"France\",\"France\",\"US\",\"US\",\"US\",\"US\",\"Greece\",\"Spain\",\"Italy\",\"France\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"France\",\"Slovenia\",\"France\",\"Italy\",\"France\",\"Austria\",\"France\",\"Italy\",\"US\",\"US\",\"US\",\"US\",\"Italy\",\"US\",\"France\",\"US\",\"US\",\"South Africa\",\"South Africa\",\"Croatia\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Serbia\",\"Croatia\",\"Spain\",\"Spain\",\"Italy\",\"Italy\",\"Serbia\",\"Italy\",\"France\",\"France\",\"Italy\",\"Italy\",\"Portugal\",\"Italy\",\"Slovenia\",\"US\",\"Italy\",\"France\",\"US\",\"Italy\",\"Germany\",\"US\",\"Germany\",\"Georgia\",\"Greece\",\"Greece\",\"France\",\"France\",\"Spain\",\"Italy\",\"Italy\",\"France\",\"Austria\",\"Austria\",\"Austria\",\"US\",\"US\",\"US\",\"US\",\"Italy\",\"Italy\",\"Bulgaria\",\"Spain\",\"France\",\"Italy\",\"Italy\",\"US\",\"Italy\",\"US\",\"US\",\"Georgia\",\"Georgia\",\"Romania\",\"Italy\",\"US\",\"France\",\"South Africa\",\"France\",\"US\",\"Spain\",\"Chile\",\"US\",\"Slovenia\",\"Australia\",\"Greece\",\"Austria\",\"Italy\",\"Germany\",\"France\",\"Australia\",\"US\",\"Portugal\",\"US\",\"Spain\",\"Australia\",\"Australia\",\"Australia\",\"Argentina\",\"France\",\"Australia\",\"South Africa\",\"Spain\",\"Australia\",\"Greece\",\"US\",\"Germany\",\"Germany\",\"Portugal\",\"Italy\",\"Portugal\",\"Spain\",\"Germany\",\"Greece\",\"Austria\",\"US\",\"South Africa\",\"Italy\",\"France\",\"US\",\"US\",\"Argentina\",\"US\",\"US\",\"US\",\"France\",\"US\",\"Chile\",\"Argentina\",\"US\",\"US\",\"US\",\"US\",\"US\",\"Austria\",\"US\",\"Italy\",\"Serbia\",\"US\",\"France\",\"France\",\"France\",\"Uruguay\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"US\",\"Spain\",\"Spain\",\"Croatia\",\"US\",\"Italy\",\"France\",\"Portugal\",\"Spain\",\"Portugal\",\"Portugal\",\"Portugal\",\"Spain\",\"Italy\",\"Spain\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Hungary\",\"Australia\",\"France\",\"Italy\",\"Chile\",\"Argentina\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Austria\",\"US\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Portugal\",\"US\",\"Italy\",\"US\",\"France\",\"Italy\",\"US\",\"Italy\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Australia\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Canada\",\"US\",\"US\",\"Greece\",\"Portugal\",\"US\",\"Chile\",\"US\",\"US\",\"US\",\"US\",\"Slovenia\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Macedonia\",\"Austria\",\"Austria\",\"Italy\",\"Portugal\",\"US\",\"Spain\",\"Cyprus\",\"Greece\",\"Cyprus\",\"Turkey\",\"Slovenia\",\"Italy\",\"Austria\",\"Austria\",\"US\",\"Croatia\",\"Austria\",\"Macedonia\"],\"location\":[\"province:Peloponnese,province:Pangeon,province:Nemea\",\"region_2:Sonoma,region_1:Dry Creek Valley,province:Southern Italy\",\"province:Cyclades\",\"region_1:Vino de la Tierra de Castilla,region_1:Valdepe\\u00f1as,province:Central Spain\",\"region_1:Forl\\u00ec,region_1:Albana di Romagna,province:Central Italy\",\"region_2:Southern Oregon,region_2:Sonoma,region_1:Monterey County\",\"region_1:Monferrato,province:Piedmont\",\"region_1:Tierra de Le\\u00f3n,province:Northern Spain\",\"region_2:Sonoma,region_1:Umbria,region_1:Toscana\",\"province:Tejo,province:Lisboa,province:D\\u00e3o\",\"region_1:Maremma Toscana,region_1:Maremma,province:Tuscany\",\"region_2:Sonoma,province:Tejo,province:Alentejo\",\"region_2:Washington Other,region_2:Columbia Valley,region_2:Central Coast\",\"region_1:Alsace,province:Alsace\",\"region_1:Roussette de Savoie,province:France Other\",\"region_2:Central Valley,region_1:Lodi,province:California\",\"province:Vinho Verde,province:Tejo,province:Minho\",\"province:Tejo,province:Lisboa\",\"region_2:Washington Other,region_1:Puget Sound,province:Washington\",\"region_1:Sicilia,region_1:Contessa Entellina,province:Sicily & Sardinia\",\"province:Setubal,province:Pen\\u00ednsula de Set\\u00fabal,province:Lisboa\",\"region_1:Quebec,region_1:Massachusetts,region_1:Canada\",\"province:Lisboa,province:Alentejano\",\"province:Estremadura,province:Alentejo,province:Alentejano\",\"province:Galil\",\"province:Vinho Verde,province:Tejo,province:Lisboa\",\"region_2:Willamette Valley,region_1:Roero,province:Oregon\",\"region_1:Asprinio di Aversa,province:Southern Italy\",\"province:Santorini,province:Pangeon,province:Gerania\",\"province:Santorini,province:Drama\",\"province:Greece\",\"province:\\u00d6sterreichischer Sekt,province:Weinland \\u00d6sterreich,province:Vienna\",\"province:\\u00d6sterreichischer Sekt,province:Wiener Gemischter Satz,province:Vienna\",\"region_2:Willamette Valley,region_1:Ribbon Ridge,region_1:Eola-Amity Hills\",\"province:Vinho Verde\",\"province:Vinho Verde\",\"region_2:Southern Oregon,region_2:New York Other,region_1:Umpqua Valley\",\"province:Vinho Espumante de Qualidade,province:Beiras,province:Beira Atlantico\",\"province:Beiras\",\"region_2:Washington Other,region_1:Chelan County,region_1:Barbera d'Asti Superiore Nizza\",\"province:Duriense,province:Douro\",\"province:Beiras,province:Bairrada\",\"region_2:California Other,region_1:California,province:California\",\"region_2:Sonoma,region_2:Sierra Foothills,region_2:Columbia Valley\",\"province:Mostar\",\"province:Burgenland\",\"province:Vill\\u00e1ny,province:Thermenregion,province:Nieder\\u00f6sterreich\",\"region_2:Washington Other,region_2:Long Island,region_2:Finger Lakes\",\"region_1:Valencia,region_1:Utiel-Requena,region_1:Spain\",\"region_1:Castel del Monte,province:Southern Italy\",\"region_1:Tupungato,region_1:San Juan,region_1:Piedmont\",\"region_2:Willamette Valley,region_1:Atlas Peak,region_1:Buzet\",\"region_2:Sonoma,region_1:Bergerac Sec,region_1:C\\u00f4tes de Duras\",\"region_1:Isola dei Nuraghi,province:Sicily & Sardinia\",\"province:Turkey,province:Aegean\",\"region_1:Piedmont,region_1:Italy,region_1:Brachetto d'Acqui\",\"region_1:Gaillac,province:Southwest France\",\"province:Madeira\",\"province:Cederberg\",\"region_2:Napa,region_2:Columbia Valley,province:Central Italy\",\"region_2:Sonoma,province:Vill\\u00e1ny,province:Puente Alto\",\"region_2:Washington Other,region_1:Calaveras County,region_1:Clare Valley\",\"region_1:Anjou Villages,province:Loire Valley,province:Galilee\",\"province:Maule Valley,province:Colchagua Valley,province:Central Valley\",\"region_2:Southern Oregon,region_1:Rogue Valley,province:Oregon\",\"region_2:Southern Oregon,region_1:Old Mission Peninsula,province:Michigan\",\"region_1:Pla de Bages,province:Catalonia\",\"region_2:Oregon Other,region_2:North Coast,province:California\",\"province:Moravia\",\"region_2:Central Coast,region_1:Cienega Valley,province:California\",\"region_2:Washington Other,region_1:Alexander Valley,province:Vill\\u00e1ny\",\"region_1:Vin de Pays Vignobles de France,province:Zenata,province:France Other\",\"province:Lisboa\",\"region_2:Sonoma,region_2:Napa,province:Curic\\u00f3 Valley\",\"region_2:Sonoma,region_1:Chalk Hill,province:Rapel Valley\",\"region_2:Sonoma,region_2:Columbia Valley,province:Curic\\u00f3 Valley\",\"region_2:Washington Other,province:Other,province:Pangeon\",\"province:Western Cape,province:Galilee\",\"region_2:Napa,region_2:Columbia Valley,region_2:Central Valley\",\"region_2:Central Valley,province:Paarl,province:Victoria\",\"region_2:Washington Other,province:Maule Valley,region_1:California\",\"region_1:Valencia,region_1:Utiel-Requena,region_1:Somontano\",\"region_1:McLaren Vale,province:South Australia\",\"region_2:Washington Other,region_2:Columbia Valley,region_1:Washington\",\"region_1:Romangia,region_1:Isola dei Nuraghi,region_1:Cannonau di Sardegna\",\"region_1:Vesuvio,province:Southern Italy\",\"region_2:Mendocino/Lake Counties,province:Valle de Guadalupe,province:Catalonia\",\"region_2:Columbia Valley,region_1:Priorat,region_1:Montsant\",\"region_1:Corbi\\u00e8res-Boutenac,province:Languedoc-Roussillon\",\"region_2:Sonoma,region_1:Pine Mountain-Cloverdale Peak,province:Catalonia\",\"region_1:Valli di Porto Pino,region_1:Sardinia,region_1:Isola dei Nuraghi\",\"region_1:Cari\\u00f1ena,province:Northern Spain\",\"region_1:Montsant,province:Catalonia\",\"region_2:Washington Other,province:Elqui Valley,province:Maipo Valley\",\"province:Maule Valley,province:Maipo Valley,province:Curic\\u00f3 Valley\",\"province:Elqui Valley,province:Colchagua Valley\",\"region_1:Western Australia,province:Western Australia\",\"region_1:Sicilia,region_1:Etna,province:Sicily & Sardinia\",\"region_1:Terre del Volturno,region_1:Campania,province:Southern Italy\",\"province:Terras do Sado,province:Tejo,province:Setubal\",\"region_1:Catalanesca del Monte Somma,province:Southern Italy\",\"region_1:Terre Siciliane,region_1:Sicilia,region_1:Marsala\",\"region_2:Southern Oregon,region_1:Umpqua Valley,province:Oregon\",\"province:Beiras\",\"region_1:Olevano Romano,region_1:Lazio,region_1:Cesanese del Piglio\",\"region_1:Virginia,region_1:Shenandoah Valley,region_1:Pennsylvania\",\"region_2:North Coast,province:Northeastern Italy,region_1:Champagne\",\"region_2:Sierra Foothills,region_2:North Coast,region_2:Napa\",\"region_1:Missouri,province:Missouri\",\"region_1:Kentucky,province:Kentucky\",\"region_2:Willamette Valley,region_1:Arroyo Grande Valley,region_1:Barossa Valley\",\"province:Pfalz\",\"region_2:Sonoma,region_1:Russian River Valley,province:California\",\"region_1:Marsannay,province:Pfalz,province:Neusiedlersee\",\"region_1:Toscana,province:Tuscany\",\"region_1:Leelanau Peninsula,province:Michigan\",\"region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:Vin de Pays d'Oc,region_1:Vin de Pays Vignobles de France\",\"region_1:Valencia,region_1:C\\u00f4tes de Gascogne,province:Southwest France\",\"region_2:Central Coast,region_1:Mendoza,region_1:Livermore Valley\",\"region_2:Sonoma,region_2:North Coast,province:Central Valley\",\"region_1:Pouilly-sur-Loire,region_1:Okanagan Valley,region_1:Alsace\",\"region_2:Washington Other,region_2:Sonoma,province:Swartland\",\"region_1:Vin de Pays du Jardin de la France,region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:Vin Mousseux\",\"province:Stellenbosch,province:Polkadraai Hills\",\"region_2:Sierra Foothills,region_2:Central Valley,region_2:California Other\",\"province:Georgia\",\"region_1:Toscana,region_1:Maremma,province:Tuscany\",\"region_2:Sonoma,region_1:Lodi,province:Languedoc-Roussillon\",\"region_1:Cr\\u00e9mant de Die,region_1:Clairette de Bellegarde,province:Rh\\u00f4ne Valley\",\"region_2:Southern Oregon,region_1:Rogue Valley,province:Oregon\",\"region_1:Terre di Chieti,province:Central Italy\",\"region_1:Taburno,region_1:Pompeiano,region_1:Lacryma Christi del Vesuvio\",\"region_2:Sonoma,region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:Russian River Valley\",\"region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:C\\u00f4tes de Gascogne,province:Southwest France\",\"region_1:C\\u00f4tes de Gascogne,province:Southwest France\",\"region_1:Toscana,province:Tuscany\",\"region_2:Mendocino/Lake Counties,region_2:Central Coast,region_1:Santa Barbara County\",\"region_1:Veronese,region_1:Veneto,region_1:Valpolicella Classico Superiore Ripasso\",\"region_1:Veneto,region_1:Valpolicella Valpantena Superiore,region_1:Amarone della Valpolicella\",\"region_2:Sonoma,region_2:Columbia Valley,region_2:Central Coast\",\"region_1:Cari\\u00f1ena,province:Northern Spain\",\"province:Neszm\\u00e9ly\",\"province:Douro\",\"province:Crete\",\"region_2:Central Coast,region_1:Sta. Rita Hills,province:North Dalmatia\",\"region_2:Willamette Valley,region_1:Dolcetto d'Alba,region_1:Langhe\",\"region_2:Central Coast,region_1:Sta. Rita Hills,region_1:Santa Lucia Highlands\",\"region_1:Monterrei,province:Galicia\",\"region_1:Gaillac,province:Southwest France\",\"region_1:Monti Lessini,province:Veneto\",\"region_1:South Eastern Australia,region_1:Rutherglen,province:Victoria\",\"region_2:Mendocino/Lake Counties,region_1:Anderson Valley,province:California\",\"province:Mosel\",\"province:Turkey\",\"region_1:Valdadige,province:Veneto\",\"province:D\\u00e3o\",\"region_1:Erbaluce di Caluso,province:Piedmont\",\"province:Vinho Verde\",\"region_1:Taburno,region_1:Sant' Agata dei Goti,region_1:Sannio\",\"region_1:Langhe,province:Piedmont\",\"region_1:Marcillac,province:Southwest France\",\"province:Vinho Licoroso,province:Tejo,province:Ribatejo\",\"province:Murfatlar,province:Moldova,province:Dealu Mare\",\"province:Romania,province:Murfatlar,province:Moldova\",\"province:Viile Timisului,province:Murfatlar,province:Moldova\",\"region_2:Central Coast,region_1:Sicilia,region_1:Santa Clara Valley\",\"region_1:Valencia,province:Levante\",\"region_1:Veneto Orientale,province:Veneto\",\"region_1:Vittoria Frappato,region_1:Vittoria,region_1:Vino Spumante\",\"region_1:Asti,province:Piedmont\",\"region_1:Venezia Giulia,region_1:Lison-Pramaggiore,region_1:Isonzo del Friuli\",\"province:Ahr\",\"region_2:Sonoma,region_1:Paso Robles,province:Casablanca Valley\",\"province:\\u0160tajerska,province:Tokaji,province:Tokaj\",\"region_2:Southern Oregon,region_2:South Coast,region_1:Lirac\",\"region_1:Cir\\u00f2 Classico,region_1:Cir\\u00f2,region_1:Calabria\",\"region_1:Vin de Table Francais,region_1:Chiroubles,province:Burgundy\",\"region_2:Willamette Valley,region_2:Sonoma,region_2:New York Other\",\"region_1:Veronese,region_1:Veneto,region_1:Soave Superiore\",\"region_2:Southern Oregon,region_1:Calaveras County,region_1:La Mancha\",\"region_1:Vino de la Tierra del Bajo Arag\\u00f3n,region_1:Terra Alta,region_1:Somontano\",\"region_1:Campo de Borja,province:Northern Spain\",\"region_1:Valencia,province:Levante\",\"region_1:Cari\\u00f1ena,province:Northern Spain\",\"region_1:Navarra,province:Northern Spain\",\"region_1:Somontano,region_1:Almansa,province:Northern Spain\",\"region_1:Cari\\u00f1ena,region_1:Campo de Borja,province:Northern Spain\",\"region_1:Rioja,region_1:Cari\\u00f1ena,region_1:Campo de Borja\",\"province:Wachau,province:S\\u00fcdsteiermark,province:S\\u00fcdoststeiermark\",\"province:Kremstal\",\"region_2:Willamette Valley,region_1:Arroyo Seco,province:Rheinhessen\",\"region_2:Finger Lakes,region_1:Niagara-On-The-Lake,region_1:Niagara Peninsula\",\"region_1:Veneto,region_1:Valdobbiadene Superiore di Cartizze,region_1:Valdobbiadene Prosecco Superiore\",\"region_1:Valdeorras,region_1:Ribeiro,region_1:Ribeira Sacra\",\"province:Douro\",\"region_2:Sierra Foothills,region_2:Columbia Valley,region_2:Central Valley\",\"region_1:Penisola Sorrentina,province:Southern Italy\",\"province:Wachau,province:S\\u00fcdoststeiermark,province:Rheinhessen\",\"region_1:Sicilia,province:Sicily & Sardinia\",\"region_1:Umbria,region_1:Todi,region_1:Colli Martani\",\"region_1:Taburno,region_1:Sannio,region_1:Lamezia\",\"region_1:Cir\\u00f2,region_1:Calabria,province:Southern Italy\",\"region_2:Washington Other,region_1:Columbia Valley (WA),region_1:Capay Valley\",\"region_2:Sonoma,region_2:Sierra Foothills,province:Catalonia\",\"region_2:Sierra Foothills,region_2:Central Coast,region_1:Paso Robles\",\"region_1:Minervois La Liviniere,province:Languedoc-Roussillon\",\"region_2:Columbia Valley,region_1:Priorat,region_1:Montsant\",\"region_2:Mendocino/Lake Counties,region_2:Central Coast,region_1:Paso Robles\",\"region_2:Columbia Valley,region_1:Yakima Valley,region_1:South Australia\",\"region_2:Sonoma,province:Washington,region_1:Columbia Valley (OR)\",\"region_1:Monferrato,province:Piedmont\",\"region_1:Vino Spumante,region_1:Terre Siciliane,region_1:Sicilia\",\"region_1:Ros\\u00e9 d'Anjou,province:Loire Valley\",\"region_1:Garda Classico,province:Northeastern Italy\",\"region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:Pacherenc du Vic Bilh,region_1:Juran\\u00e7on Sec\",\"region_1:Pacherenc du Vic Bilh,region_1:Juran\\u00e7on Sec,region_1:Juran\\u00e7on\",\"region_2:Willamette Valley,province:Nieder\\u00f6sterreich,province:Weinviertel\",\"region_1:Vino de Mesa,region_1:Spain,region_1:Getariako Txakolina\",\"province:Pfalz\",\"province:Vill\\u00e1ny,province:Neszm\\u00e9ly\",\"region_1:Vigneti delle Dolomiti,province:Northeastern Italy\",\"region_1:Vittoria,region_1:Terre Siciliane,region_1:Sicilia\",\"region_1:Terre Siciliane,region_1:Sicilia,region_1:Menfi\",\"province:M\\u00e1tra\",\"region_1:Texas,province:Texas\",\"region_1:Vin de Savoie,region_1:Savoie,province:France Other\",\"region_1:Ribera del Duero,province:Northern Spain,province:D\\u00e3o\",\"region_2:Long Island,region_2:Finger Lakes,region_2:Columbia Valley\",\"province:Vill\\u00e1ny,province:Szeksz\\u00e1rd\",\"province:Turkey,province:Ankara,province:Aegean\",\"province:Mirdit\\u00eb\",\"province:Turkey\",\"province:Thrace\",\"province:Vill\\u00e1ny,province:Sopron,province:Eger\",\"region_1:Vigneti delle Dolomiti,region_1:Alto Adige Valle Isarco,region_1:Alto Adige\",\"province:Thrace\",\"province:Neszm\\u00e9ly\",\"province:Kyoto\",\"province:Turkey\",\"region_1:Lacrima di Morro d'Alba,province:Central Italy\",\"region_2:Central Coast,region_2:California Other,region_1:Trentino\",\"region_1:Lambrusco di Sorbara,region_1:Lambrusco di Modena,region_1:Lambrusco dell'Emilia\",\"region_1:Lambrusco Grasparossa di Castelvetro,province:Central Italy\",\"region_1:Lambrusco di Sorbara,province:Central Italy\",\"region_2:Washington Other,region_2:Finger Lakes,region_2:Columbia Valley\",\"region_1:Lanzarote,province:Spanish Islands\",\"region_1:Gaillac Doux,region_1:Gaillac,province:Southwest France\",\"province:Vinho Verde,province:Minho\",\"region_1:Yecla,region_1:Jumilla,region_1:Conca de Barber\\u00e0\",\"region_1:Cava,region_1:Catalunya,region_1:Cari\\u00f1ena\",\"region_1:Somontano,province:Northern Spain\",\"region_1:Ucl\\u00e9s,province:Central Spain\",\"region_2:California Other,region_1:California,province:Madeira\",\"region_2:Washington Other,region_1:Puget Sound,province:Washington\",\"region_1:Val di Neto,region_1:Calabria,province:Southern Italy\",\"province:Epanomi,province:Drama,province:Central Greece\",\"province:Halkidiki,province:Florina\",\"region_2:Washington Other,region_1:Cafayate,region_1:Calaveras County\",\"region_1:Mendoza,region_1:Cahors,province:Southwest France\",\"region_1:Mendoza,region_1:Maip\\u00fa,region_1:Argentina\",\"region_1:Mendoza,province:Mendoza Province\",\"region_1:Valle de Uco,region_1:Uco Valley,region_1:Tupungato\",\"region_2:Columbia Valley,region_1:Uco Valley,region_1:Tupungato\",\"region_1:Valle de Uco,province:Mendoza Province\",\"region_2:Central Coast,region_1:Tupungato,region_1:Monterey County\",\"region_2:Southern Oregon,region_1:Southern Oregon,region_1:Cahors\",\"region_1:Uco Valley,region_1:Mendoza,province:Mendoza Province\",\"province:Madeira\",\"region_1:Vinos de Madrid,province:Central Spain\",\"region_1:Toro,region_1:Terra degli Osci,province:Colares\",\"region_2:North Coast,region_2:Napa,province:California\",\"province:D\\u00e3o,province:Douro\",\"region_1:Friuli Isonzo,region_1:Delle Venezie,region_1:Collio\",\"region_1:Salento,region_1:Casorzo,province:Southern Italy\",\"region_1:Rioja,province:Northern Spain\",\"province:Istria\",\"region_1:Coteaux d'Ancenis,province:Loire Valley\",\"province:Greece\",\"region_1:Marcillac,province:Southwest France\",\"region_1:Val di Neto,region_1:Calabria,province:Southern Italy\",\"region_1:Colli Trevigiani,province:Northeastern Italy\",\"region_2:Sonoma,region_1:Mendocino County,region_1:Horse Heaven Hills\",\"region_2:Southern Oregon,region_1:Russian River Valley,province:Languedoc-Roussillon\",\"region_2:Napa,region_2:Central Coast,region_1:Napa Valley\",\"region_1:Trentino,region_1:Garda,region_1:Colli di Conegliano\",\"region_2:Willamette Valley,region_1:Willamette Valley,province:Oregon\",\"region_2:Central Coast,region_1:Contra Costa County,region_1:Barossa Valley\",\"region_1:Rioja,province:Northern Spain\",\"region_1:Gaillac,province:Southwest France\",\"province:Peloponnese,province:Mavrodaphne of Patras\",\"province:Santorini\",\"province:Thraki\",\"province:Thracian Valley,province:Bulgaria\",\"region_1:Rioja,province:Northern Spain\",\"region_2:Willamette Valley,region_1:Yamhill-Carlton District,region_1:Muscadet S\\u00e8vre et Maine Clisson\",\"region_1:Valdeorras,region_1:Ribeira Sacra,region_1:Monterrei\",\"province:Jiri Valley\",\"region_2:Washington Other,region_1:Atlas Peak,region_1:Monterey County\",\"region_2:Washington Other,region_1:Alexander Valley,province:V\\u00e2nju Mare\",\"province:Dan\",\"region_2:Washington Other,region_2:Columbia Valley,region_1:Washington\",\"region_2:Napa,region_2:Finger Lakes,province:California\",\"region_2:Sonoma,region_1:California,province:Western Cape\",\"region_1:Vin de Pays des Coteaux de Murviel,region_1:Vin de Pays de la M\\u00e9diterran\\u00e9e,province:Languedoc-Roussillon\",\"region_2:Sonoma,region_1:Mendoza,region_1:Cuyo\",\"region_1:Monticello,province:Virginia\",\"province:Western Cape,province:Cederberg\",\"region_2:Long Island,region_1:Vin de Pays d'Oc,region_1:North Fork of Long Island\",\"region_2:Sierra Foothills,region_2:Central Coast,region_1:Sta. Rita Hills\",\"region_2:Columbia Valley,region_2:Central Valley,region_1:Yecla\",\"region_1:Yecla,region_1:Jumilla,province:Levante\",\"region_2:Southern Oregon,region_1:Vin de Savoie,region_1:Sicilia\",\"region_1:Romangia,region_1:Monica di Sardegna,province:Sicily & Sardinia\",\"region_2:South Coast,region_1:California,region_1:Lazio\",\"province:Pocerina\",\"province:S\\u00fcdsteiermark,province:S\\u00fcdoststeiermark\",\"region_2:Washington Other,region_2:Columbia Valley,region_1:Yakima Valley\",\"region_1:Somontano,province:Northern Spain\",\"region_1:Moscadello di Montalcino,province:Tuscany\",\"region_1:Valencia,province:Moscatel do Douro,province:Catalonia\",\"province:Tejo\",\"province:Setubal,province:Pen\\u00ednsula de Set\\u00fabal,province:Moscatel de Set\\u00fabal\",\"region_1:Alicante,province:Levante\",\"region_2:Washington Other,region_2:Napa,province:Veneto\",\"region_2:Central Valley,region_1:Umbria,region_1:Trentino\",\"region_1:Sicilia,province:Sicily & Sardinia\",\"province:Peloponnese,province:Mantinia,province:Arcadia\",\"province:Mantinia\",\"region_2:Sonoma,region_1:El Dorado,region_1:Corbi\\u00e8res\",\"province:Kakheti\",\"region_1:Rutherglen,region_1:Bergerac Sec,province:Victoria\",\"region_1:Rutherglen,region_1:Bordeaux Blanc,province:Victoria\",\"region_1:Muscadet S\\u00e8vre et Maine,province:Loire Valley\",\"region_2:Willamette Valley,province:Mendoza Province,region_1:Alsace\",\"region_2:South Coast,region_2:Sonoma,region_2:Sierra Foothills\",\"region_1:Muscat de Saint-Jean de Minervois,region_1:Muscat de Beaumes de Venise,region_1:Barossa Valley\",\"region_2:Washington Other,region_2:Sonoma,province:Texas\",\"region_1:New South Wales,province:New South Wales\",\"region_2:Central Coast,region_1:Muscat de Rivesaltes,region_1:Central Coast\",\"region_1:Victoria,province:Victoria,province:Limnos\",\"province:Valle de Guadalupe,province:Limar\\u00ed Valley\",\"province:Burgenland\",\"region_2:Finger Lakes,region_1:Finger Lakes,province:Tarnave\",\"province:W\\u00fcrttemberg,province:Pfalz\",\"region_2:Willamette Valley,region_2:Southern Oregon,region_1:Willamette Valley\",\"province:Ankara\",\"region_1:Sardinia,region_1:Isola dei Nuraghi,province:Sicily & Sardinia\",\"region_2:Sierra Foothills,region_1:Adelaide Hills,region_1:Ghemme\",\"region_1:Vin de France,region_1:Fronton,province:Southwest France\",\"region_2:Mendocino/Lake Counties,region_1:Salice Salentino,region_1:Salento\",\"region_1:Sicilia,region_1:Etna,province:Sicily & Sardinia\",\"region_1:Vino da Tavola,region_1:Vino Spumante,region_1:Terre Siciliane\",\"region_2:Napa,region_1:Vittoria,region_1:Terre Siciliane\",\"region_1:Puglia,region_1:Murgia,region_1:Castel del Monte\",\"province:Burgenland\",\"region_1:Patrimonio,province:France Other\",\"region_1:Virginia,region_1:Shenandoah Valley,region_1:Missouri\",\"region_1:Vigneti delle Dolomiti,region_1:Trentino,province:Northeastern Italy\",\"region_1:Nuragus di Cagliari,province:Sicily & Sardinia\",\"province:Turkey,province:Elaz\\u0131\\u011f,province:Aegean\",\"region_2:Sierra Foothills,region_2:Mendocino/Lake Counties,region_2:Columbia Valley\",\"province:Vienna\",\"region_1:Terre del Volturno,region_1:Campania,province:Southern Italy\",\"region_1:Terre del Volturno,province:Southern Italy\",\"region_1:Terre del Volturno,province:Southern Italy\",\"region_1:Jerez,province:Andalucia\",\"region_1:Alella,province:Catalonia\",\"region_1:Ribera del Guadiana,province:Central Spain\",\"region_1:Somontano,province:Northern Spain\",\"region_1:Offida Passerina,region_1:Marche,region_1:Colli Aprutini\",\"province:Maule Valley,province:Central Valley\",\"region_1:Terre di Chieti,region_1:Offida Pecorino,region_1:Marche\",\"region_1:Priorat,region_1:M\\u00e1laga,region_1:Montilla-Moriles\",\"region_1:Verduno,province:Piedmont\",\"region_1:Terre Siciliane,region_1:Sicilia,province:Sicily & Sardinia\",\"region_1:Virginia,region_1:Pacherenc du Vic Bilh,region_1:Monticello\",\"region_1:Champagne,province:Champagne\",\"region_2:Washington Other,region_1:El Dorado,region_1:Atlas Peak\",\"region_2:Southern Oregon,region_1:Monterey,region_1:Clarksburg\",\"region_2:Southern Oregon,region_1:Rogue Valley,region_1:Arizona\",\"region_2:Sonoma,province:Virginia,region_1:Lake County\",\"province:Peloponnese\",\"region_1:Pla de Bages,province:Catalonia\",\"region_1:Colli Orientali del Friuli,province:Northeastern Italy\",\"region_2:Columbia Valley,region_1:Yakima Valley,region_1:Picpoul de Pinet\",\"region_1:Vin de Pays du Comt\\u00e9 Tolosan,province:Southwest France\",\"region_1:Taburno,region_1:Sannio,region_1:Pompeiano\",\"region_1:Riviera Ligure di Ponente,province:Northwestern Italy\",\"region_1:Colli Bolognesi,province:Central Italy\",\"region_1:Coteaux du Vend\\u00f4mois,province:Loire Valley\",\"province:Vipavska Dolina\",\"region_2:Willamette Valley,region_1:Ribbon Ridge,region_1:Alsace\",\"region_1:Veneto Orientale,region_1:Trentino,region_1:Toscana\",\"region_2:Willamette Valley,region_1:Mendocino,region_1:Livermore Valley\",\"region_2:Central Coast,region_1:Santa Barbara County,province:California\",\"region_1:Cr\\u00e9mant d'Alsace,province:Alsace\",\"region_2:Willamette Valley,region_1:Central Coast,region_1:Collio\",\"region_2:California Other,region_1:California,province:California\",\"region_2:Finger Lakes,region_1:Finger Lakes,province:New York\",\"region_2:Willamette Valley,province:Pfalz,province:South Australia\",\"region_2:Willamette Valley,region_2:Sonoma,province:Champagne\",\"region_2:Sonoma,region_1:Lago di Corbara,province:Central Italy\",\"region_2:Willamette Valley,region_1:Ben Lomond Mountain,region_1:Alto Valle del R\\u00edo Negro\",\"region_1:Coteaux Bourguignons,region_1:Ch\\u00e2teaumeillant,region_1:Cheverny\",\"region_2:Oregon Other,region_1:Oregon,province:Oregon\",\"region_2:Mendocino/Lake Counties,region_1:Piedmont,region_1:Mendocino County\",\"region_2:Southern Oregon,province:Judean Hills,province:Stellenbosch\",\"province:Polkadraai Hills\",\"province:Peljesac,province:Middle and South Dalmatia,province:Hvar\",\"region_2:Washington Other,region_1:Augusta,region_1:Lodi\",\"province:Vinho da Mesa,province:Obidos,province:Alentejano\",\"province:Vinho Verde,province:Tejo,province:Pen\\u00ednsula de Set\\u00fabal\",\"province:Vinho Verde,province:Vinho Espumante de Qualidade,province:Vinho Espumante\",\"province:Vinho Verde,province:Tr\\u00e1s-os-Montes,province:Alentejo\",\"province:Fru\\u0161ka Gora\",\"province:North Dalmatia,province:Kor\\u010dula,province:Hvar\",\"region_1:Vi de la Terra Mallorca,province:Spanish Islands\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Vino de Calidad de Tierras de Le\\u00f3n,region_1:Vino Tierra de Le\\u00f3n\",\"region_2:Sonoma,region_1:Columbia Valley (OR),region_1:Napa Valley\",\"region_1:Vino Spumante,region_1:Valle d'Aosta,province:Northwestern Italy\",\"province:\\u017dupa\",\"region_1:Veneto,region_1:Prosecco di Valdobbiadene Superiore,region_1:Prosecco di Valdobbiadene\",\"region_1:Les Baux de Provence,region_1:C\\u00f4tes de Provence Sainte-Victoire,region_1:C\\u00f4tes de Provence\",\"region_1:C\\u00f4tes de Provence,region_1:Coteaux d'Aix-en-Provence,region_1:Bandol\",\"region_1:Vino Nobile di Montepulciano,region_1:Vin Santo di Montepulciano,region_1:Rosso di Montepulciano\",\"region_1:Toscana,province:Tuscany\",\"province:Douro\",\"region_1:Veneto Orientale,region_1:Veneto,region_1:Piave\",\"province:Goriska Brda\",\"region_2:Willamette Valley,region_1:Bolgheri Sassicaia,region_1:Biferno Rosso\",\"region_2:California Other,region_1:Venezia Giulia,region_1:Veneto\",\"region_2:Washington Other,region_1:Limoux,region_1:C\\u00f4tes du Rh\\u00f4ne\",\"region_2:Washington Other,region_1:C\\u00f4tes du Luberon,region_1:Condrieu\",\"region_1:Venezia Giulia,region_1:Friuli Venezia Giulia,region_1:Friuli\",\"province:Mosel,province:Franken\",\"region_2:Willamette Valley,province:Texas,province:Waipara Valley\",\"province:Moravia,province:Baden\",\"region_2:Finger Lakes,region_1:Virginia,region_1:Finger Lakes\",\"province:Cephalonia\",\"province:Retsina,province:Pisatis,province:Peloponnese\",\"region_1:C\\u00f4tes de Provence,province:Provence\",\"region_1:Cour-Cheverny,province:Loire Valley\",\"region_1:Vino de la Tierra de Castilla,region_1:Rioja,region_1:Ribera del Duero\",\"region_2:Finger Lakes,region_1:Vino da Tavola,province:New York\",\"region_1:Lazio,province:Central Italy\",\"region_2:Willamette Valley,region_1:Arroyo Grande Valley,region_1:Ballard Canyon\",\"province:S\\u00fcdoststeiermark\",\"province:Wagram-Donauland,province:Wagram,province:Wachau\",\"province:Thermenregion\",\"region_2:Southern Oregon,region_1:Mendocino County,region_1:Luberon\",\"region_2:Central Coast,region_1:Paso Robles,province:California\",\"region_2:Sonoma,region_2:Sierra Foothills,region_2:Columbia Valley\",\"region_2:Sonoma,region_2:Columbia Valley,region_2:Central Coast\",\"region_1:Campania,province:Southern Italy\",\"region_1:Ruch\\u00e9 di Castagnole Monferrato,province:Piedmont\",\"province:Bulgaria\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,province:Northern Spain\",\"region_1:Coteaux Bourguignons,province:Burgundy\",\"region_2:Central Coast,region_1:Umbria,region_1:Santa Barbara County\",\"region_2:Washington Other,region_1:Columbia Valley (WA),region_1:Happy Canyon of Santa Barbara\",\"region_2:Columbia Valley,region_1:Columbia Valley (WA),province:Washington\",\"region_2:Columbia Valley,region_1:Val di Cornia Suvereto,region_1:Toscana\",\"region_2:South Coast,region_2:Mendocino/Lake Counties,region_1:Temecula Valley\",\"region_2:Columbia Valley,region_2:Central Coast,region_1:Walla Walla Valley (WA)\",\"region_2:Finger Lakes,region_1:McLaren Vale,region_1:Finger Lakes\",\"province:Kakheti\",\"province:Dealurile Hu\\u0219ilor\",\"region_1:Yarra Valley,province:Piedmont,region_1:Alto Adige Terlano\",\"region_2:Willamette Valley,province:Texas,province:Southwest France\",\"region_1:Vino de la Tierra de Castilla,region_1:Orange,region_1:Cheverny\",\"province:Stellenbosch\",\"region_1:C\\u00f4tes de Gascogne,province:Southwest France\",\"region_2:Sonoma,province:Washington,region_1:Columbia Valley (WA)\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,province:Northern Spain\",\"region_2:Sonoma,region_1:Chalk Hill,region_1:Bordeaux Blanc\",\"region_2:Mendocino/Lake Counties,region_1:Mendocino,province:California\",\"province:Goriska Brda\",\"region_1:McLaren Vale,region_1:Langhorne Creek,region_1:Arbois\",\"province:Attica\",\"region_2:Napa,region_1:Napa Valley,province:Steiermark\",\"region_1:Alto Adige,province:Northeastern Italy\",\"province:Rheinhessen\",\"region_1:Lot,province:Southwest France\",\"region_2:Washington Other,region_2:Long Island,province:California\",\"region_2:Sonoma,province:Washington,region_1:Granite Belt\",\"province:Madeira\",\"region_2:Southern Oregon,region_2:New York Other,region_1:Virginia\",\"region_2:South Coast,region_1:Manzanilla-Sanl\\u00facar de Barrameda,region_1:Jerez\",\"region_2:South Coast,province:Upper Galilee,region_1:Adelaide Hills\",\"region_2:Central Coast,region_1:Barossa Valley,province:California\",\"region_1:South Eastern Australia,region_1:South Australia,region_1:McLaren Vale\",\"region_1:San Juan,region_1:Mendoza,region_1:Luj\\u00e1n de Cuyo\",\"region_1:Vin de Pays Vignobles de France,province:France Other\",\"region_1:South Australia,region_1:Barossa,province:South Australia\",\"province:Western Cape,province:Coastal Region\",\"region_1:Vino de la Tierra de Castilla,region_1:Valencia,region_1:Tierra de Castilla\",\"region_2:Central Coast,region_1:Yarra Valley,province:California\",\"province:Greece\",\"region_2:Washington Other,region_1:Puget Sound,province:Washington\",\"region_1:Alto Adige,region_1:Alsace,province:Rheinhessen\",\"province:Franken\",\"province:Douro,province:Beira Interior,province:Alentejano\",\"region_1:Campania,province:Southern Italy\",\"province:Estremadura,province:Douro\",\"region_2:Willamette Valley,region_2:Washington Other,region_1:Australia\",\"province:W\\u00fcrttemberg,province:Rheinhessen,province:Rheingau\",\"province:Peloponnese\",\"province:Thermenregion,province:Pfalz,province:Nieder\\u00f6sterreich\",\"region_1:Augusta,province:Missouri\",\"province:Western Cape\",\"region_1:Tarantino,region_1:Salento,region_1:Puglia\",\"region_2:Central Coast,region_1:Santa Barbara County,region_1:Alto Adige Valle Isarco\",\"region_2:California Other,region_1:Cochise County,region_1:California\",\"region_2:Willamette Valley,region_1:Ballard Canyon,region_1:Amador County\",\"region_1:Mendoza,province:Mendoza Province\",\"region_2:South Coast,region_2:Sonoma,province:Colchagua Valley\",\"region_2:Napa,region_1:Napa Valley,province:California\",\"region_2:Columbia Valley,region_2:Central Coast,region_1:Santa Barbara County\",\"region_1:Minervois,province:Languedoc-Roussillon\",\"region_2:Sonoma,region_2:Sierra Foothills,province:Catalonia\",\"province:Cachapoal Valley\",\"region_1:Uco Valley,province:Mendoza Province\",\"region_2:Central Coast,region_1:Santa Barbara County,region_1:C\\u00f4tes de Gascogne\",\"region_2:Central Coast,region_1:Saint-Chinian,region_1:Paso Robles\",\"region_2:Napa,region_2:Mendocino/Lake Counties,region_2:Columbia Valley\",\"region_2:Sonoma,region_2:Sierra Foothills,region_1:Russian River Valley\",\"region_2:Sonoma,region_2:Sierra Foothills,region_2:Central Coast\",\"province:Burgenland\",\"region_2:Washington Other,region_2:Southern Oregon,region_1:Horse Heaven Hills\",\"region_1:Veneto,province:Veneto\",\"province:\\u017dupa\",\"region_2:Southern Oregon,province:San Jose,region_1:Adelaida District\",\"region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:Madiran,province:Southwest France\",\"region_1:Madiran,province:Southwest France\",\"region_1:C\\u00f4tes de Gascogne,province:Southwest France,province:Juanico\",\"province:San Jose\",\"region_2:Willamette Valley,region_1:Napa Valley,region_1:Catalonia\",\"region_1:Rioja,province:Northern Spain\",\"region_2:Sierra Foothills,region_1:Ribera del Duero,province:Catalonia\",\"region_2:Columbia Valley,region_1:Pened\\u00e8s,province:Catalonia\",\"region_1:Vinos de Madrid,region_1:Vino de la Tierra de Castilla,region_1:Toro\",\"region_2:Columbia Valley,region_1:Yakima Valley,province:Washington\",\"region_1:Vino de la Tierra de Castilla,region_1:Ribera del Duero,region_1:Navarra\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Vino de la Tierra de Castilla,region_1:Valencia\",\"province:Kras,province:Istria\",\"region_2:Sierra Foothills,region_2:Central Valley,region_2:Central Coast\",\"region_1:Trentino,province:Northeastern Italy\",\"region_1:Vin de Pays des C\\u00f4tes de Thau,province:Languedoc-Roussillon\",\"province:Douro\",\"region_1:Ribera del Duero,region_1:Cigales,province:Northern Spain\",\"province:Douro\",\"province:Madeira\",\"province:Vinho Espumante de Qualidade,province:Lisboa,province:Douro\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Toro,province:Northern Spain\",\"region_1:Molise,province:Southern Italy\",\"region_1:Vino de la Tierra de Castilla,region_1:Ribera del Duero,province:Northern Spain\",\"region_1:Ribera del Duero,region_1:Cigales,province:Northern Spain\",\"region_1:Lison-Pramaggiore,region_1:Colli Orientali del Friuli,province:Veneto\",\"region_2:Willamette Valley,region_1:Mendocino,province:New York\",\"region_1:Veneto Orientale,province:Veneto\",\"province:Tokaji,province:Tokaj\",\"region_1:Victoria,region_1:Rutherglen,province:Victoria\",\"region_1:Alsace,province:Alsace\",\"region_1:Alghero,province:Sicily & Sardinia\",\"province:Maule Valley\",\"region_2:Sierra Foothills,region_2:Central Valley,province:Mendoza Province\",\"region_2:Central Valley,region_1:Lodi,province:Douro\",\"region_2:Sierra Foothills,region_2:Columbia Valley,province:Bairrada\",\"province:Terras do Sado,province:Tejo,province:Ribatejano\",\"province:Tejo,province:Ribatejo,province:Lisboa\",\"region_2:Sonoma,province:Podunavlje,province:Burgenland\",\"region_2:New York Other,region_2:Finger Lakes,region_1:Virginia\",\"region_1:Vino Spumante,region_1:Veronese,region_1:Umbria\",\"region_1:Lugana,province:Lombardy\",\"region_1:Vin Santo del Chianti Classico,region_1:Colli Etruria Centrale,province:Tuscany\",\"region_1:Conca de Barber\\u00e0,region_1:Cava,province:Catalonia\",\"province:Tejo,province:Ribatejo,province:Ribatejano\",\"region_2:Sonoma,region_1:Russian River Valley,province:California\",\"region_1:Lugana Superiore,region_1:Lugana,province:Lombardy\",\"region_2:Central Coast,region_1:Paso Robles Willow Creek District,province:California\",\"region_1:Vin de Pays des C\\u00f4tes de Gascogne,region_1:C\\u00f4tes de Gascogne,province:Southwest France\",\"region_1:Puglia,region_1:Murgia,region_1:Castel del Monte\",\"region_2:North Coast,region_2:Napa,region_2:Central Coast\",\"region_1:Alto Adige Valle Isarco,province:Northeastern Italy\",\"region_1:Salento,region_1:Puglia,province:Southern Italy\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Vino de la Tierra de Castilla,region_1:Vino Tierra de Le\\u00f3n\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Toledo,region_1:Rueda\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,region_1:Vino de la Tierra de Castilla,region_1:Rueda\",\"region_2:Sierra Foothills,region_1:Hunter Valley,province:Alentejo\",\"region_1:Verdicchio di Matelica,region_1:Verdicchio dei Castelli di Jesi Classico Superiore,region_1:Verdicchio dei Castelli di Jesi Classico\",\"region_1:Venezia Giulia,region_1:Veneto,region_1:Friuli\",\"region_1:Venezia Giulia,region_1:Ramandolo,region_1:Colli Orientali del Friuli\",\"region_2:Southern Oregon,region_1:Applegate Valley,region_1:Lazio\",\"region_1:Toscana,province:Tuscany\",\"region_2:Napa-Sonoma,region_1:Vernaccia di San Gimignano,region_1:Marche\",\"region_1:Breganze,province:Veneto\",\"region_1:Cari\\u00f1ena,province:Northern Spain\",\"region_1:Niagara-On-The-Lake,region_1:Niagara Peninsula,province:Ontario\",\"region_2:New York Other,region_2:Finger Lakes,province:Missouri\",\"region_2:Finger Lakes,region_1:Vermont,region_1:Missouri\",\"province:Crete\",\"province:Vinho Verde\",\"region_2:Willamette Valley,region_1:Cochise County,region_1:Clarksburg\",\"region_2:California Other,region_1:Vin de Pays Var,region_1:California\",\"region_2:Central Coast,region_1:Paso Robles,province:Western Cape\",\"region_2:Southern Oregon,region_2:Central Coast,region_1:Rogue Valley\",\"region_2:Sierra Foothills,region_2:Oregon Other,region_2:Mendocino/Lake Counties\",\"region_2:Central Valley,region_1:Madera,province:California\",\"province:Kras\",\"region_1:Vino de la Tierra de Castilla,region_1:Tierra de Castilla,region_1:Tierra Manchuela\",\"region_1:Rioja,region_1:Navarra,region_1:Cari\\u00f1ena\",\"region_1:Vino de la Tierra de Castilla y Le\\u00f3n,province:Northern Spain\",\"region_1:Rioja,province:Northern Spain\",\"province:Tikves,province:Mostar,province:Lake Skadar Valley\",\"province:Wagram-Donauland,province:Wagram,province:Wachau\",\"province:\\u0160tajerska,province:\\u00d6sterreichischer Sekt,province:S\\u00fcdsteiermark\",\"region_2:Willamette Valley,region_1:Apremont,province:Vinho Verde\",\"province:Port,province:Douro\",\"region_2:Sonoma,region_2:Napa,province:Galilee\",\"region_1:Pened\\u00e8s,region_1:Cava,region_1:Catalunya\",\"province:Lemesos,province:Commandaria\",\"province:Vin de Pays de Velvendo,province:Naoussa,province:Macedonia\",\"province:Pafos\",\"province:Thrace\",\"province:Vipavska Dolina\",\"region_1:Terre Siciliane,region_1:Sicilia,region_1:Passito di Pantelleria\",\"province:Thermenregion\",\"province:Thermenregion\",\"region_2:Washington Other,region_1:Howell Mountain,region_1:Contra Costa County\",\"province:Krk,province:Hrvatsko Primorje\",\"region_2:Finger Lakes,region_2:Columbia Valley,province:Carnuntum\",\"province:Tikves\"],\"main_country\":[\"Greece\",\"Italy\",\"Greece\",\"Spain\",\"Italy\",\"Spain\",\"Italy\",\"Spain\",\"Italy\",\"Portugal\",\"Italy\",\"Portugal\",\"France\",\"France\",\"France\",\"US\",\"Portugal\",\"Portugal\",\"US\",\"Italy\",\"Portugal\",\"Canada\",\"Portugal\",\"Portugal\",\"Israel\",\"Portugal\",\"Italy\",\"Italy\",\"Greece\",\"Greece\",\"Greece\",\"Austria\",\"Austria\",\"France\",\"Portugal\",\"Portugal\",\"US\",\"Portugal\",\"Portugal\",\"Italy\",\"Portugal\",\"Portugal\",\"US\",\"US\",\"Bosnia and Herzegovina\",\"Austria\",\"Austria\",\"Austria\",\"Spain\",\"Italy\",\"Argentina\",\"France\",\"France\",\"Italy\",\"Turkey\",\"Italy\",\"France\",\"Portugal\",\"South Africa\",\"Italy\",\"US\",\"US\",\"Israel\",\"Chile\",\"US\",\"US\",\"Spain\",\"US\",\"Czech Republic\",\"US\",\"US\",\"Morocco\",\"Portugal\",\"US\",\"Chile\",\"Argentina\",\"US\",\"South Africa\",\"Italy\",\"Australia\",\"US\",\"Spain\",\"Australia\",\"US\",\"Italy\",\"Italy\",\"Chile\",\"Spain\",\"France\",\"US\",\"Italy\",\"Spain\",\"Spain\",\"Chile\",\"Chile\",\"Chile\",\"Australia\",\"Italy\",\"Italy\",\"Portugal\",\"Italy\",\"Italy\",\"US\",\"Portugal\",\"Italy\",\"US\",\"France\",\"US\",\"US\",\"US\",\"US\",\"Germany\",\"US\",\"France\",\"Italy\",\"US\",\"France\",\"France\",\"US\",\"France\",\"France\",\"South Africa\",\"France\",\"South Africa\",\"US\",\"Georgia\",\"Italy\",\"US\",\"France\",\"US\",\"Italy\",\"Italy\",\"France\",\"France\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"Spain\",\"Hungary\",\"Portugal\",\"Greece\",\"US\",\"Italy\",\"US\",\"Spain\",\"France\",\"Italy\",\"Australia\",\"US\",\"Germany\",\"Turkey\",\"Italy\",\"Portugal\",\"Italy\",\"Portugal\",\"Italy\",\"Italy\",\"France\",\"Portugal\",\"Romania\",\"Romania\",\"Romania\",\"Italy\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Germany\",\"US\",\"Hungary\",\"US\",\"Italy\",\"France\",\"US\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Austria\",\"Austria\",\"US\",\"Chile\",\"Italy\",\"Spain\",\"Portugal\",\"Spain\",\"Italy\",\"Austria\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"US\",\"US\",\"France\",\"Spain\",\"US\",\"Australia\",\"France\",\"Italy\",\"Italy\",\"France\",\"Italy\",\"France\",\"France\",\"Austria\",\"Spain\",\"Germany\",\"Hungary\",\"Italy\",\"Italy\",\"Italy\",\"Hungary\",\"US\",\"France\",\"Spain\",\"US\",\"Hungary\",\"Turkey\",\"Albania\",\"Turkey\",\"Turkey\",\"Hungary\",\"Italy\",\"Turkey\",\"Hungary\",\"Japan\",\"Turkey\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"US\",\"Spain\",\"France\",\"Portugal\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Portugal\",\"US\",\"Italy\",\"Greece\",\"Greece\",\"Argentina\",\"Argentina\",\"Argentina\",\"Argentina\",\"Argentina\",\"France\",\"Argentina\",\"Argentina\",\"France\",\"Argentina\",\"Portugal\",\"Spain\",\"Italy\",\"US\",\"Portugal\",\"Italy\",\"Italy\",\"Spain\",\"Croatia\",\"France\",\"Greece\",\"France\",\"Italy\",\"Italy\",\"US\",\"US\",\"US\",\"Italy\",\"US\",\"US\",\"Spain\",\"France\",\"Greece\",\"Greece\",\"Greece\",\"Bulgaria\",\"Spain\",\"France\",\"Spain\",\"South Korea\",\"US\",\"US\",\"Israel\",\"US\",\"US\",\"US\",\"France\",\"Argentina\",\"US\",\"South Africa\",\"Portugal\",\"US\",\"Spain\",\"Spain\",\"France\",\"Italy\",\"Italy\",\"Serbia\",\"Austria\",\"US\",\"Spain\",\"Italy\",\"Spain\",\"Portugal\",\"Portugal\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Greece\",\"Greece\",\"US\",\"Georgia\",\"Australia\",\"Australia\",\"France\",\"France\",\"US\",\"France\",\"US\",\"Australia\",\"US\",\"Australia\",\"Chile\",\"Austria\",\"Austria\",\"Germany\",\"Italy\",\"Turkey\",\"Italy\",\"Italy\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Austria\",\"France\",\"US\",\"Italy\",\"Italy\",\"Turkey\",\"US\",\"Austria\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Italy\",\"Chile\",\"Italy\",\"Spain\",\"Italy\",\"Italy\",\"France\",\"France\",\"US\",\"US\",\"US\",\"US\",\"Greece\",\"Spain\",\"Italy\",\"France\",\"France\",\"Italy\",\"Italy\",\"Italy\",\"France\",\"Slovenia\",\"France\",\"Italy\",\"France\",\"Austria\",\"France\",\"Italy\",\"US\",\"US\",\"US\",\"US\",\"Italy\",\"US\",\"France\",\"US\",\"US\",\"South Africa\",\"South Africa\",\"Croatia\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Serbia\",\"Croatia\",\"Spain\",\"Spain\",\"Italy\",\"Italy\",\"Serbia\",\"Italy\",\"France\",\"France\",\"Italy\",\"Italy\",\"Portugal\",\"Italy\",\"Slovenia\",\"US\",\"Italy\",\"France\",\"US\",\"Italy\",\"Germany\",\"US\",\"Germany\",\"Georgia\",\"Greece\",\"Greece\",\"France\",\"France\",\"Spain\",\"Italy\",\"Italy\",\"France\",\"Austria\",\"Austria\",\"Austria\",\"US\",\"US\",\"US\",\"US\",\"Italy\",\"Italy\",\"Bulgaria\",\"Spain\",\"France\",\"Italy\",\"Italy\",\"US\",\"Italy\",\"US\",\"US\",\"Georgia\",\"Georgia\",\"Romania\",\"Italy\",\"US\",\"France\",\"South Africa\",\"France\",\"US\",\"Spain\",\"Chile\",\"US\",\"Slovenia\",\"Australia\",\"Greece\",\"Austria\",\"Italy\",\"Germany\",\"France\",\"Australia\",\"US\",\"Portugal\",\"US\",\"Spain\",\"Australia\",\"Australia\",\"Australia\",\"Argentina\",\"France\",\"Australia\",\"South Africa\",\"Spain\",\"Australia\",\"Greece\",\"US\",\"Germany\",\"Germany\",\"Portugal\",\"Italy\",\"Portugal\",\"Spain\",\"Germany\",\"Greece\",\"Austria\",\"US\",\"South Africa\",\"Italy\",\"France\",\"US\",\"US\",\"Argentina\",\"US\",\"US\",\"US\",\"France\",\"US\",\"Chile\",\"Argentina\",\"US\",\"US\",\"US\",\"US\",\"US\",\"Austria\",\"US\",\"Italy\",\"Serbia\",\"US\",\"France\",\"France\",\"France\",\"Uruguay\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"US\",\"Spain\",\"Spain\",\"Croatia\",\"US\",\"Italy\",\"France\",\"Portugal\",\"Spain\",\"Portugal\",\"Portugal\",\"Portugal\",\"Spain\",\"Italy\",\"Spain\",\"Spain\",\"Italy\",\"Italy\",\"Italy\",\"Hungary\",\"Australia\",\"France\",\"Italy\",\"Chile\",\"Argentina\",\"Portugal\",\"Portugal\",\"Portugal\",\"Portugal\",\"Austria\",\"US\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Portugal\",\"US\",\"Italy\",\"US\",\"France\",\"Italy\",\"US\",\"Italy\",\"Italy\",\"Spain\",\"Spain\",\"Spain\",\"Australia\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Italy\",\"Spain\",\"Canada\",\"US\",\"US\",\"Greece\",\"Portugal\",\"US\",\"Chile\",\"US\",\"US\",\"US\",\"US\",\"Slovenia\",\"Spain\",\"Spain\",\"Spain\",\"Spain\",\"Macedonia\",\"Austria\",\"Austria\",\"Italy\",\"Portugal\",\"US\",\"Spain\",\"Cyprus\",\"Greece\",\"Cyprus\",\"Turkey\",\"Slovenia\",\"Italy\",\"Austria\",\"Austria\",\"US\",\"Croatia\",\"Austria\",\"Macedonia\"],\"variety\":[\"Agiorgitiko\",\"Aglianico\",\"Aidani\",\"Airen\",\"Albana\",\"Albari\\u00f1o\",\"Albarossa\",\"Albar\\u00edn\",\"Aleatico\",\"Alfrocheiro\",\"Alicante\",\"Alicante Bouschet\",\"Aligot\\u00e9\",\"Alsace white blend\",\"Altesse\",\"Alvarelh\\u00e3o\",\"Alvarinho\",\"Alvarinho-Chardonnay\",\"Angevine\",\"Ansonica\",\"Ant\\u00e3o Vaz\",\"Apple\",\"Aragonez\",\"Aragon\\u00eas\",\"Argaman\",\"Arinto\",\"Arneis\",\"Asprinio\",\"Assyrtico\",\"Assyrtiko\",\"Athiri\",\"Austrian Red Blend\",\"Austrian white blend\",\"Auxerrois\",\"Avesso\",\"Azal\",\"Baco Noir\",\"Baga\",\"Baga-Touriga Nacional\",\"Barbera\",\"Bastardo\",\"Bical\",\"Black Monukka\",\"Black Muscat\",\"Blatina\",\"Blauburgunder\",\"Blauer Portugieser\",\"Blaufr\\u00e4nkisch\",\"Bobal\",\"Bombino Bianco\",\"Bonarda\",\"Bordeaux-style Red Blend\",\"Bordeaux-style White Blend\",\"Bovale\",\"Bo\\u011fazkere\",\"Brachetto\",\"Braucol\",\"Bual\",\"Bukettraube\",\"Cabernet\",\"Cabernet Blend\",\"Cabernet Franc\",\"Cabernet Franc-Cabernet Sauvignon\",\"Cabernet Franc-Carmen\\u00e8re\",\"Cabernet Franc-Malbec\",\"Cabernet Franc-Merlot\",\"Cabernet Franc-Tempranillo\",\"Cabernet Merlot\",\"Cabernet Moravia\",\"Cabernet Pfeffer\",\"Cabernet Sauvignon\",\"Cabernet Sauvignon Grenache\",\"Cabernet Sauvignon and Tinta Roriz\",\"Cabernet Sauvignon-Cabernet Franc\",\"Cabernet Sauvignon-Carmen\\u00e8re\",\"Cabernet Sauvignon-Malbec\",\"Cabernet Sauvignon-Merlot\",\"Cabernet Sauvignon-Merlot-Shiraz\",\"Cabernet Sauvignon-Sangiovese\",\"Cabernet Sauvignon-Shiraz\",\"Cabernet Sauvignon-Syrah\",\"Cabernet Sauvignon-Tempranillo\",\"Cabernet-Shiraz\",\"Cabernet-Syrah\",\"Cannonau\",\"Caprettone\",\"Carignan\",\"Carignan-Grenache\",\"Carignan-Syrah\",\"Carignane\",\"Carignano\",\"Carine\\u00f1a\",\"Cari\\u00f1ena-Garnacha\",\"Carmen\\u00e8re\",\"Carmen\\u00e8re-Cabernet Sauvignon\",\"Carmen\\u00e8re-Syrah\",\"Carnelian\",\"Carricante\",\"Casavecchia\",\"Castel\\u00e3o\",\"Catalanesca\",\"Catarratto\",\"Cayuga\",\"Cerceal\",\"Cesanese d'Affile\",\"Chambourcin\",\"Champagne Blend\",\"Charbono\",\"Chardonel\",\"Chardonelle\",\"Chardonnay\",\"Chardonnay Weissburgunder\",\"Chardonnay-Albari\\u00f1o\",\"Chardonnay-Pinot Blanc\",\"Chardonnay-Pinot Grigio\",\"Chardonnay-Pinot Gris\",\"Chardonnay-Sauvignon\",\"Chardonnay-Sauvignon Blanc\",\"Chardonnay-Semillon\",\"Chardonnay-Viognier\",\"Chasselas\",\"Chenin Blanc\",\"Chenin Blanc-Chardonnay\",\"Chenin Blanc-Sauvignon Blanc\",\"Chenin Blanc-Viognier\",\"Chinuri\",\"Ciliegiolo\",\"Cinsault\",\"Clairette\",\"Claret\",\"Cococciola\",\"Coda di Volpe\",\"Colombard\",\"Colombard-Sauvignon Blanc\",\"Colombard-Ugni Blanc\",\"Colorino\",\"Cortese\",\"Corvina\",\"Corvina, Rondinella, Molinara\",\"Counoise\",\"Crespiello\",\"Cserszegi F\\u0171szeres\",\"C\\u00f3dega do Larinho\",\"Dafni\",\"Debit\",\"Dolcetto\",\"Dornfelder\",\"Do\\u00f1a Blanca\",\"Duras\",\"Durello\",\"Durif\",\"Edelzwicker\",\"Elbling\",\"Emir\",\"Enantio\",\"Encruzado\",\"Erbaluce\",\"Espadeiro\",\"Falanghina\",\"Favorita\",\"Fer Servadou\",\"Fern\\u00e3o Pires\",\"Feteasca\",\"Feteasca Neagra\",\"Feteasc\\u01ce Regal\\u01ce\",\"Fiano\",\"Forcall\\u00e0\",\"Franconia\",\"Frappato\",\"Freisa\",\"Friulano\",\"Fr\\u00fcburgunder\",\"Fum\\u00e9 Blanc\",\"Furmint\",\"G-S-M\",\"Gaglioppo\",\"Gamay\",\"Gamay Noir\",\"Garganega\",\"Garnacha\",\"Garnacha Blanca\",\"Garnacha Blend\",\"Garnacha Tintorera\",\"Garnacha-Cabernet\",\"Garnacha-Graciano\",\"Garnacha-Monastrell\",\"Garnacha-Syrah\",\"Garnacha-Tempranillo\",\"Gelber Muskateller\",\"Gelber Traminer\",\"Gew\\u00fcrztraminer\",\"Gew\\u00fcrztraminer-Riesling\",\"Glera\",\"Godello\",\"Gouveio\",\"Graciano\",\"Gragnano\",\"Grauburgunder\",\"Grecanico\",\"Grechetto\",\"Greco\",\"Greco Bianco\",\"Grenache\",\"Grenache Blanc\",\"Grenache Blend\",\"Grenache Gris\",\"Grenache-Carignan\",\"Grenache-Mourv\\u00e8dre\",\"Grenache-Shiraz\",\"Grenache-Syrah\",\"Grignolino\",\"Grillo\",\"Grolleau\",\"Groppello\",\"Gros Manseng\",\"Gros and Petit Manseng\",\"Gr\\u00fcner Veltliner\",\"Hondarrabi Zuri\",\"Huxelrebe\",\"H\\u00e1rslevel\\u00fc\",\"Incrocio Manzoni\",\"Insolia\",\"Inzolia\",\"Irsai Oliver\",\"Jacquez\",\"Jacqu\\u00e8re\",\"Jaen\",\"Johannisberg Riesling\",\"Kadarka\",\"Kalecik Karasi\",\"Kallmet\",\"Karalahna\",\"Karasakiz\",\"Kekfrankos\",\"Kerner\",\"Kinali Yapincak\",\"Kir\\u00e1lyle\\u00e1nyka\",\"Koshu\",\"Kuntra\",\"Lacrima\",\"Lagrein\",\"Lambrusco\",\"Lambrusco Grasparossa\",\"Lambrusco di Sorbara\",\"Lemberger\",\"List\\u00e1n Negro\",\"Loin de l'Oeil\",\"Loureiro\",\"Macabeo\",\"Macabeo-Chardonnay\",\"Macabeo-Gew\\u00fcrztraminer\",\"Macabeo-Moscatel\",\"Madeira Blend\",\"Madeleine Angevine\",\"Magliocco\",\"Malagousia\",\"Malagouzia\",\"Malbec\",\"Malbec Blend\",\"Malbec-Bonarda\",\"Malbec-Cabernet Franc\",\"Malbec-Cabernet Sauvignon\",\"Malbec-Merlot\",\"Malbec-Petit Verdot\",\"Malbec-Syrah\",\"Malbec-Tannat\",\"Malbec-Tempranillo\",\"Malmsey\",\"Malvar\",\"Malvasia\",\"Malvasia Bianca\",\"Malvasia Fina\",\"Malvasia Istriana\",\"Malvasia Nera\",\"Malvasia-Viura\",\"Malvazija\",\"Malvoisie\",\"Mandilaria\",\"Mansois\",\"Mantonico\",\"Manzoni\",\"Marsanne\",\"Marsanne-Roussanne\",\"Marsanne-Viognier\",\"Marzemino\",\"Mar\\u00e9chal Foch\",\"Mataro\",\"Maturana\",\"Mauzac\",\"Mavrodaphne\",\"Mavrotragano\",\"Mavroudi\",\"Mavrud\",\"Mazuelo\",\"Melon\",\"Menc\\u00eda\",\"Meoru\",\"Meritage\",\"Merlot\",\"Merlot-Argaman\",\"Merlot-Cabernet\",\"Merlot-Cabernet Franc\",\"Merlot-Cabernet Sauvignon\",\"Merlot-Grenache\",\"Merlot-Malbec\",\"Merlot-Petite Verdot\",\"Merlot-Shiraz\",\"Merlot-Syrah\",\"Mission\",\"Monastrell\",\"Monastrell-Syrah\",\"Mondeuse\",\"Monica\",\"Montepulciano\",\"Morava\",\"Morillon\",\"Morio Muskat\",\"Moristel\",\"Moscadello\",\"Moscatel\",\"Moscatel Gra\\u00fado\",\"Moscatel Roxo\",\"Moscatel de Alejandr\\u00eda\",\"Moscato\",\"Moscato Giallo\",\"Moscato di Noto\",\"Moschofilero\",\"Moscofilero\",\"Mourv\\u00e8dre\",\"Mtsvane\",\"Muscadel\",\"Muscadelle\",\"Muscadet\",\"Muscat\",\"Muscat Blanc\",\"Muscat Blanc \\u00e0 Petit Grain\",\"Muscat Canelli\",\"Muscat Hamburg\",\"Muscat d'Alexandrie\",\"Muscat of Alexandria\",\"Muscatel\",\"Muskat\",\"Muskat Ottonel\",\"Muskateller\",\"M\\u00fcller-Thurgau\",\"Narince\",\"Nasco\",\"Nebbiolo\",\"Negrette\",\"Negroamaro\",\"Nerello Cappuccio\",\"Nerello Mascalese\",\"Nero d'Avola\",\"Nero di Troia\",\"Neuburger\",\"Nielluciu\",\"Norton\",\"Nosiola\",\"Nuragus\",\"Okuzgozu\",\"Orange Muscat\",\"Orangetraube\",\"Pallagrello\",\"Pallagrello Bianco\",\"Pallagrello Nero\",\"Palomino\",\"Pansa Blanca\",\"Pardina\",\"Parraleta\",\"Passerina\",\"Pa\\u00eds\",\"Pecorino\",\"Pedro Xim\\u00e9nez\",\"Pelaverga Piccolo\",\"Perricone\",\"Petit Manseng\",\"Petit Meslier\",\"Petit Verdot\",\"Petite Sirah\",\"Petite Syrah\",\"Petite Verdot\",\"Petroulianos\",\"Picapoll\",\"Picolit\",\"Picpoul\",\"Pied de Perdrix\",\"Piedirosso\",\"Pigato\",\"Pignoletto\",\"Pineau d'Aunis\",\"Pinela\",\"Pinot Auxerrois\",\"Pinot Bianco\",\"Pinot Blanc\",\"Pinot Blanc-Chardonnay\",\"Pinot Blanc-Pinot Noir\",\"Pinot Grigio\",\"Pinot Grigio-Chardonnay\",\"Pinot Grigio-Sauvignon Blanc\",\"Pinot Gris\",\"Pinot Meunier\",\"Pinot Nero\",\"Pinot Noir\",\"Pinot Noir-Gamay\",\"Pinot Noir-Syrah\",\"Pinot-Chardonnay\",\"Pinotage\",\"Pinotage-Merlot\",\"Plavac Mali\",\"Port\",\"Portuguese Red\",\"Portuguese Ros\\u00e9\",\"Portuguese Sparkling\",\"Portuguese White\",\"Portuguiser\",\"Posip\",\"Premsal\",\"Prieto Picudo\",\"Primitivo\",\"Pri\\u00e9 Blanc\",\"Prokupac\",\"Prosecco\",\"Provence red blend\",\"Provence white blend\",\"Prugnolo Gentile\",\"Pugnitello\",\"Rabigato\",\"Raboso\",\"Rebula\",\"Red Blend\",\"Refosco\",\"Rh\\u00f4ne-style Red Blend\",\"Rh\\u00f4ne-style White Blend\",\"Ribolla Gialla\",\"Rieslaner\",\"Riesling\",\"Rivaner\",\"Rkatsiteli\",\"Robola\",\"Roditis\",\"Rolle\",\"Romorantin\",\"Rosado\",\"Rosato\",\"Roscetto\",\"Ros\\u00e9\",\"Roter Traminer\",\"Roter Veltliner\",\"Rotgipfler\",\"Roussanne\",\"Roussanne-Grenache Blanc\",\"Roussanne-Marsanne\",\"Roussanne-Viognier\",\"Roviello\",\"Ruch\\u00e9\",\"Ruen\",\"Rufete\",\"Sacy\",\"Sagrantino\",\"Sangiovese\",\"Sangiovese Cabernet\",\"Sangiovese Grosso\",\"Sangiovese-Cabernet Sauvignon\",\"Sangiovese-Syrah\",\"Saperavi\",\"Saperavi-Merlot\",\"Sarba\",\"Sauvignon\",\"Sauvignon Blanc\",\"Sauvignon Blanc-Chardonnay\",\"Sauvignon Blanc-Chenin Blanc\",\"Sauvignon Blanc-Sauvignon Gris\",\"Sauvignon Blanc-Semillon\",\"Sauvignon Blanc-Verdejo\",\"Sauvignon Gris\",\"Sauvignon Musqu\\u00e9\",\"Sauvignonasse\",\"Savagnin\",\"Savatiano\",\"Scheurebe\",\"Schiava\",\"Schwartzriesling\",\"Segalin\",\"Semillon-Chardonnay\",\"Semillon-Sauvignon Blanc\",\"Sercial\",\"Seyval Blanc\",\"Sherry\",\"Shiraz\",\"Shiraz-Cabernet Sauvignon\",\"Shiraz-Grenache\",\"Shiraz-Malbec\",\"Shiraz-Merlot\",\"Shiraz-Mourv\\u00e8dre\",\"Shiraz-Pinotage\",\"Shiraz-Tempranillo\",\"Shiraz-Viognier\",\"Sideritis\",\"Siegerrebe\",\"Silvaner\",\"Silvaner-Traminer\",\"Siria\",\"Sirica\",\"Sous\\u00e3o\",\"Sparkling Blend\",\"Sp\\u00e4tburgunder\",\"St. George\",\"St. Laurent\",\"St. Vincent\",\"Steen\",\"Susumaniello\",\"Sylvaner\",\"Symphony\",\"Syrah\",\"Syrah-Bonarda\",\"Syrah-Cabernet\",\"Syrah-Cabernet Franc\",\"Syrah-Cabernet Sauvignon\",\"Syrah-Carignan\",\"Syrah-Grenache\",\"Syrah-Grenache-Viognier\",\"Syrah-Malbec\",\"Syrah-Merlot\",\"Syrah-Mourv\\u00e8dre\",\"Syrah-Petite Sirah\",\"Syrah-Tempranillo\",\"Syrah-Viognier\",\"S\\u00e4mling\",\"S\\u00e9millon\",\"Tai\",\"Tamjanika\",\"Tannat\",\"Tannat-Cabernet\",\"Tannat-Cabernet Franc\",\"Tannat-Merlot\",\"Tannat-Syrah\",\"Tempranillo\",\"Tempranillo Blanco\",\"Tempranillo Blend\",\"Tempranillo-Cabernet Sauvignon\",\"Tempranillo-Garnacha\",\"Tempranillo-Malbec\",\"Tempranillo-Merlot\",\"Tempranillo-Shiraz\",\"Teran\",\"Teroldego\",\"Teroldego Rotaliano\",\"Terret Blanc\",\"Tinta Barroca\",\"Tinta Fina\",\"Tinta Francisca\",\"Tinta Negra Mole\",\"Tinta Roriz\",\"Tinta de Toro\",\"Tintilia \",\"Tinto Fino\",\"Tinto del Pais\",\"Tocai\",\"Tocai Friulano\",\"Tocai Rosso\",\"Tokaji\",\"Tokay\",\"Tokay Pinot Gris\",\"Torbato\",\"Torontel\",\"Torront\\u00e9s\",\"Touriga Franca\",\"Touriga Nacional\",\"Touriga Nacional Blend\",\"Touriga Nacional-Cabernet Sauvignon\",\"Traminer\",\"Traminette\",\"Trebbiano\",\"Trebbiano di Lugana\",\"Trebbiano-Malvasia\",\"Trepat\",\"Trincadeira\",\"Trousseau Gris\",\"Turbiana\",\"Ugni Blanc\",\"Ugni Blanc-Colombard\",\"Uva di Troia\",\"Valdigui\\u00e9\",\"Veltliner\",\"Verdeca\",\"Verdejo\",\"Verdejo-Sauvignon Blanc\",\"Verdejo-Viura\",\"Verdelho\",\"Verdicchio\",\"Verduzzo\",\"Verduzzo Friulano \",\"Vermentino\",\"Vermentino Nero\",\"Vernaccia\",\"Vespaiolo\",\"Vidadillo\",\"Vidal\",\"Vidal Blanc\",\"Vignoles\",\"Vilana\",\"Vinh\\u00e3o\",\"Viognier\",\"Viognier-Chardonnay\",\"Viognier-Grenache Blanc\",\"Viognier-Marsanne\",\"Viognier-Roussanne\",\"Viognier-Valdigui\\u00e9\",\"Vitovska\",\"Viura\",\"Viura-Chardonnay\",\"Viura-Sauvignon Blanc\",\"Viura-Verdejo\",\"Vranec\",\"Weissburgunder\",\"Welschriesling\",\"White Blend\",\"White Port\",\"White Riesling\",\"Xarel-lo\",\"Xinisteri\",\"Xinomavro\",\"Xynisteri\",\"Yapincak\",\"Zelen\",\"Zibibbo\",\"Zierfandler\",\"Zierfandler-Rotgipfler\",\"Zinfandel\",\"Zlahtina\",\"Zweigelt\",\"\\u017dilavka\"],\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[632]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[632]}},\"selected\":{\"id\":\"1052\"},\"selection_policy\":{\"id\":\"1051\"}},\"id\":\"1003\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"},{\"id\":\"1028\"}]},\"id\":\"1029\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1018\"},\"visible\":false},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"color\"},\"size\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1040\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1050\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_alpha\":{\"field\":\"alpha\"},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"field\":\"alpha\"},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"field\":\"alpha\"},\"line_color\":{\"field\":\"color\"},\"size\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1038\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1003\"}},\"id\":\"1042\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1043\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1052\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1051\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null,\"visible\":false},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"variety\",\"@{variety}\"],[\"location\",\"@{location}\"],[\"main_country\",\"@{main_country}\"]]},\"id\":\"1028\",\"type\":\"HoverTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1013\"},\"coordinates\":null,\"group\":null,\"ticker\":null,\"visible\":false},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1003\"},\"glyph\":{\"id\":\"1038\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1040\"},\"nonselection_glyph\":{\"id\":\"1039\"},\"view\":{\"id\":\"1042\"}},\"id\":\"1041\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"color\"},\"size\":{\"value\":3},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1039\",\"type\":\"Circle\"}],\"root_ids\":[\"1004\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"edd58a3a-e969-4c70-84b6-47b067a7fe21\",\"root_ids\":[\"1004\"],\"roots\":{\"1004\":\"98224d39-c079-4ed9-acd2-f95b70adfb47\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "1004" } }, "output_type": "display_data" } ], "source": [ "p = umap.plot.interactive(reducer, theme='fire', hover_data=hover_df, labels = variety_labels.map(country_map), width =600, height=600, point_size=3)\n", "umap.plot.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see good clustering and interesting structure induced on many of our wine varieties. The varieties not surprisingly are grouped by regions. Interestingly, the predominantly Italian varieties split into at least 5 very disjoint clusters corresponding to different regions within Italy where wine varieties gain different labels depending on the specific region in which they are made. \n", "\n", "The main central cluster is composed of wine varieties that are made in a a wide range of countries such as Merlot-Cabernet Sauvignon, Shiraz or Port. To support this hyothesis we will colour each variety with a heatmap indicating the number of countries which manufacture each wine. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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7ddnnHEGt99+e6Of1CdPnkyfPn2YOnUqt912GyeddBJ9+vRp9vxr1qwBoLi4GIhd0SGEFus69dRTWbJkCfvssw9XX3011113HXfffTdPP/00e+yxBw8//DB/+MMfKCkpAWDgwIE89thjvPTSS+y1115MmTKFYcOGcddddwFw7rnn8vTTT3PDDTcwfPhwhg8fzgcffFD7fD/96U+54IILGD9+PK+++uoG9Zxzzjlce+213HDDDeyyyy4ce+yxvPPOO7X3P/DAA5SXlzd5qd8lO3HiRB599FHeeOMNJk2axIEHHsh9991HQUEBAD//+c854YQTOPXUU9ljjz145513eOihhxg8eDAAl156KTvttBNHHHEE48eP5z//8z9ZsmRJs6/nT37yE84//3z22msvqqqquPnmm2vvO/DAA7n11lu56qqr2GmnnTj77LM57bTT+J//+Z8Wf05teZ6WjBkzhuOPP56jjz6ao48+moMPPpgLLrig9v4LL7yQL3/5y5xzzjlMmDCBK6+8kttuu42DDjqo0fPtv//+XH/99Vx11VXstttuPPLII41+Ty09L8Tfx6qqKvbZZx/OPfdcvvWtb3HWWWfV3v/73/+evfbai2OPPZZJkyaRJAkPPPAAhYWFtcf06dOH7373u5x11llMmDCBZcuWce+99/L444+z6667MmnSJG644Ybav48DDzyw2d+p8vJyTjnllFa/vnvuuSfFxcVMnTq19rY333yTuXPnMmnSpFafp+Y1O+KII5gyZQonn3wyZ555Jv/4xz/YaqutOPjgg/nud7/LT37ykyZ7CWr85Cc/4fLLL2e33Xbjrbfe4o477qj9O2jOPvvsw0033cQ111zDbrvtxrRp07jooouaPL6goKDJ1/rOO+/k8ssv5/XXX699b6hpjWvL3/WkSZOYPn06lZWVtbc99NBDjBs3jkGDBrX4PXWYFiNisAXQi5eecGlrC2BhYWFYuHBh+MQnPhH69OkTSktLwy677BKuvPLKDVoAb7vttvDLX/6y9uuXXnppg0/K9T/ll5SUhGuuuSZUVlaGXXbZJQDh+OOPb/ET8bRp08L06dNrv85kMqG8vDzccssttbcNGzasQcvF//zP/4QHH3ywwXlGjhwZQghhhx12aPK1qWk1OvbYYxvcvv6n8Q8//DBceumlTdY8YsSIMGbMmCYv9Vt1br/99vDEE080ep4+ffqEioqKcPLJJ9feVlhYGD788MPw7W9/OwDhb3/7W7jpppsafXxzLYA1xxxxxBEhhBB69eoVgPDII4+ECy64oMF5vvjFL4aPPvqo1b93rXme5i4XX3xxWLlyZYOWt5/97GdhxowZAWKr6MqVKzdoIbrxxhvD7bff3qCGmhbAO+64I9x3330Njv/DH/6wwd9Bc89b83sza9asBue57LLLam/bfvvtQwghTJo0qfb+IUOGhFWrVoXPfe5ztX9/IYSw66671h4zePDgEEIIBx10UKOvSe/evZv9nRozZkyDupv6Hai5nHzyyWHt2rUbHD9z5szw05/+tNU/68Zes3/+85/hvffeC0mS1N42e/bs8N3vfrf26/rvDTU1nnHGGbX3jx8/PoQQwtixY1us4fbbbw/3339/g9vuuOOOJlsAW3qtm2p9a8vf9UMPPRSuv/76Bo+v+Z7GjRvXqte1I1oA6z6CSFI9VVVV3HbbbZx++ulst912vPXWW41O8Bg4cCCf/exnOfDAA2tvu+222zjzzDO55ZZbGhx7xx13UF1dTUlJCR9//DFnnnlm7Tnvvfde7r333hbrqt8Kl81mWbp0aYO6asZ61QxgnzhxIpMnT6a8vHyDc40ZM4a333672ed7/vnnm7xviy22YOTIkTz66KNNHjN//vxmz1/fbrvtxt13393ofWPGjKG4uJinnnqq9raqqiqeffZZxo8fD8B1113HPffcU9sSeu+99zJjxoxmn7P+67lgwQIgvnYffPABEydO5IADDmjQOlZQUEBJSQklJSW1rbit0dzztGTOnDmsXLmyweNrfr7bb789ffv25ZFHHmnwmOLi4iYHzo8dO5a//vWvDW579tlnOfroo1v9vDWeeeaZBl/PmDGD888/n0wmw/jx46msrGTmzJm19y9btow333yz9mcGUFFR0eD1Wb58Ob/73e946KGHeOSRR5g6dSp33XUXCxcuBGDt2rW8++67jX5v+bb+a1Yz7jTUa91ftGhRixNMmvp9efPNN5t93Pjx4zf42c6YMYMpU6Y0enxLr3VT2vJ33VUZAKWUKCsra3QZjEGDBjU5O/Lmm29m5syZ7Lzzzk122Z1yyimUlJQ0+E8uSRIKCgrYYYcdGgSs8847j6lTp1JaWtpi12RT6nejAIQQNrgN4mB6gH79+nHfffc1OgC+5j+W5qxatarJ+1oTgB544AE+8YlPNHn/3Llz2XnnnVt9vuY8+OCDjB49miOPPJJDDz2URx99lGuvvbbZGYf1X7ua/6Trv3YXX3xxo5MB1q5d26bamnuetjy25vH1awQ46qij+OijjxocV1FR0aYa2/K87amxn/sZZ5zBr3/9a6ZMmcKJJ57Ij3/8Yw499FBmzpzJgQce2OKs2bPPPps//vGPrXr+hQsX0qtXLwYOHNjgvWDYsGEtBqH1tebvszWv46b8vrRVc691U9ryd71w4UKGDRvW4P6ar9v6+rYnA6CUEm+++SaHHXbYBrfvsccevPXWW40+5o033mDWrFnsuuuuTf5ncuaZZ3L55Zfz+9//vsHt//d//8cZZ5zBhRdeWHvbwoULO73l4sUXX+SEE05gzpw5Tc6AXbduXavGF61v5cqVvP/++xxyyCH861//avSYs846q3Y8YmPq/0f36quvcsghh/DDH/5wg+PeffddKioqOOCAA5g3bx4AhYWF7L333vzqV7+qPW7JkiXceuut3HrrrTzxxBP84he/aNWSE4158cUXGTt2bJdtbYL4O7p27VpGjRrF9OnTW/WYN998k7333rvBbet/3Vr77rtvg6/3228/3n77bbLZLLNnz6aoqIh99923tiV2yJAhjB07ljfeeKPFc7/88su8/PLL/PSnP+Xpp5/mlFNOYebMmTz//PPstttuzT62LbOeX3jhBdatW8chhxxSG/Z33HFHRo8e3WILclcze/bsRn8mLWnqtW7qvaEtf9czZszgJz/5CYWFhVRVVQFw6KGH8u9//5sVK1a08jtrfwZAKSWuu+46vvGNb3DVVVfx29/+loqKCo466ihOPvlkjjnmmCYf96lPfYqioqJGWwknTpzInnvuyRe/+MUNumbuuOMOfvCDH3DRRRe1aumR448/nssuu6xB11h7uPbaa/nKV77CHXfcwc9//nOWLVvG9ttvz0knncRZZ51FNptlzpw57LvvvowePZqVK1e2aYmIH/7wh1x//fUsXryYf/7zn/Tv358DDjiAa665BmhbV9Fll13Ga6+9xrXXXsv111/PunXrmDx5MnfffTdLly7luuuu4xe/+AXLli1j3rx5/Pd//zd9+vThpptuAuBHP/oRL7zwArNmzaJXr14cffTRzJ49u20vWD2XXHIJ999/P/PmzePPf/4z2WyWiRMnsvPOO/P9739/o8/bnlauXMnll1/OlVdeSSaT4cknn2TgwIEccMABlJWVceutt27wmKuvvprp06dz3nnncd999/GpT32KI444olWTkNY3atQorrjiCn7zm9+wxx578F//9V+cf/75ALzzzjvce++93HjjjZx99tmUl5fz05/+lI8++oi//e1vTZ5zm2224atf/Sp///vfmT9/PmPHjmWHHXao/V7a2gU8ePBgRo0axYgRI4DYBQ7xA9miRYsoKyvjpptu4pe//CXLli2jrKyMq6++mqeffrrZVrCu6Ne//jVPPfUU559/Pn/72984/PDDm+z+hZZf6zlz5rDtttsyceJEPvzwQ8rLy1m3bl2b/q7/+Mc/cvHFF3PTTTfxs5/9jJ133plzzz2X8847r/aYxt7/xowZQ79+/Rg+fDglJSW16ze+8cYbjfZ6tJWzgKWUeP/99znooIMYN24cU6dOZebMmXzhC1/g85//PA899FCTj1u9enWTXcRnnnkms2bNanRczl//+leGDh3KkUce2ar6Bg4cyLhx41r3zbTBggULOOCAAygoKODhhx/mtdde41e/+hUrVqwgm80CcWHY6upq3njjDZYsWcKoUaNaff5bb72Vb37zm3zta19j1qxZ3H///eywww4bVevbb7/NYYcdxsSJE3n22WeZMWMGxx13XG2rwQUXXMA999zDH/7wB1588UW23357Dj/88NpWhHXr1nHZZZfx6quvMn36dKqrqznppJM2qhaAhx9+mKOPPprDDjuM5557jmeeeYbzzjuvwVqQv/vd7xpdGLwzff/73+fSSy/lwgsvZPbs2Tz44IMcddRRvP/++40e//TTT3POOefwrW99i1deeYUpU6Zw5ZVXtrlbG+LPv6SkhGeffZZrr72Wq666ihtuuKH2/tNPP50XXniB+++/nxkzZpAkCUceeWTtz7Qxq1evZty4cdxzzz289dZb3HDDDVx77bX85je/aXN9AMceeywvv/wyDzzwAAB33nknL7/8Muecc07tMeeddx73338/99xzD9OnT2fhwoV89rOfbXCe999/n4svvnijaugsM2fO5Ctf+Qrnnnsur7zyCocddhg//vGPmzy+pdf6nnvu4cEHH2TatGksWbKEk08+uc01lZWVcdhhh7HtttvywgsvcMUVV3DJJZdw44031h7T2Pvfb3/729qf09ixY2tbKWuC/KZKQis+8jQ1dkiSlG7/+te/mDZtGj/60Y/yXcomueGGGxg3blyTS8ekXUlJCUuXLuWII47g8ccfz3c5akFpaSkDBgxo9hi7gCVJG2XAgAGMGTOGo446Kt+ltNn555/PI488wqpVqzjiiCM49dRT+drXvpbvsrqsyZMn89hjjxn+epIWF4oJrgPoxYsXL1465vL666+H8vLyRi+nnHJKhz3vnXfeGRYtWhRWr14dXn/99XD22Wfn/bXw0vKlZkefxi4XXnhh3uvrKpfWrANoF7AkKW9GjRpFUVFRo/ctWrSowZpy0ogRI5qcfbts2TKWL1/eyRV1TXYBS5K6tJolbaTW6AkLMHcVrZoFvDFT4yVJktT5WpPbWhUAG9tCSZIkSV1Pa3Jbq8YAZrNZ5s+fT//+/UmSpF2KkyRJUvsJIVBeXs6IESNa3DqvVQFQkiRJPYc7gUiSJKWMAVCSJCllDICSJEkpYwCUJElKGQOgJElSyhgAJUmSUsYAKEmSlDL/H1A3bXFcPlcDAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "country_count = data[['variety','country']].drop_duplicates().groupby('variety').country.count()\n", "umap.plot.points(reducer, theme='fire', values=np.log(variety_labels.map(country_count)));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If instead you were interested in a less course measure you might look at a heatmap of the number of wineries across the world which manufacture each variety. The differences between these plots show that there are some varieties that are manufactured in many wineries but those wineries are only located within a single country." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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r3/9i+eff54DDjiAE088kdGjR/PXv/4VgC9+8Ys88cQTXHvttYwZM4YxY8awYMGCTc/3ox/9iK9//etMmjSJl156abP2XHDBBVxzzTVce+217LXXXpx++um8+eabm26/5557qK6ubvXUuEt2ypQpPPzww7z66qsceuihHHHEEdx1112k02kA/u///o8zzjiDc845h/32248333yT+++/n2HDhgHw/e9/nz322IOTTjqJSZMm8Z//+Z8sX768zdfzhz/8IRdddBEHHHAAdXV1XH/99ZtuO+KII7jxxhu58sor2WOPPfjc5z7Hpz71Kf7nf/6n3Z9TZ56nPePHj+cDH/gAp556KqeeeipHH300X//61zfd/o1vfINPfvKTXHDBBUyePJkrrriCm266iaOOOqrFxzvssMP49a9/zZVXXsk+++zDgw8+2OL31N7zQvx9rKur46CDDuKLX/wiX/7ylzn//PM33f6HP/yBAw44gNNPP51DDz2UJEm45557KCkp2XTMgAEDuPjiizn//POZPHkyK1eu5M477+SRRx5h77335tBDD+Xaa6/d9PdxxBFHtPk7VV1dzdlnn93h13f//fenrKyMhx56aNN1s2fPZt68eRx66KEdfpz61+ykk07ixBNP5KyzzuK8887jn//8JzvssANHH300F198MT/84Q9b7SWo98Mf/pDLL7+cffbZh9dff52bb755099BWw466CCuu+46rr76avbZZx+mTp3Kt771rVaPT6fTrb7Wt9xyC5dffjmvvPLKpveG+mpcZ/6uDz30UKZNm0Ztbe2m6+6//34mTpzI0KFD2/2euk27ETFYAfTkqS+cOlsBLCkpCUuWLAlHHnlkGDBgQKisrAx77bVXuOKKKzarAN50003hZz/72abLzz///GaflBt/yi8vLw9XX311qK2tDXvttVcAwgc+8IF2PxFPnTo1TJs2bdPlVCoVqqurww033LDputGjRzepXPzP//xPuO+++5o8zvbbbx9CCGG33XZr9bWprxqdfvrpTa5v/mn8nXfeCd///vdbbfN2220Xxo8f3+qpcVXnT3/6U3j00UdbfJwBAwaEjRs3hrPOOmvTdSUlJeGdd94JX/nKVwIQ/v73v4frrruuxfu3VQGsP+akk04KIYTQr1+/AIQHH3wwfP3rX2/yOB//+MfDwoULO/x715Hnaet0ySWXhDVr1jSpvP34xz8O06dPDxCromvWrNmsQvTb3/42/OlPf2rShvoK4M033xzuuuuuJsf/8Y9/3OzvoK3nrf+9mTlzZpPHueyyyzZdt+uuu4YQQjj00EM33T58+PCwdu3a8OEPf3jT318IIey9996bjhk2bFgIIYSjjjqqxdekf//+bf5OjR8/vkm7W/sdqD+dddZZYcOGDZsdP2PGjPCjH/2owz/rll6ze++9N8yZMyckSbLpulmzZoWLL7540+XG7w31bfz0pz+96fZJkyaFEEKYMGFCu23405/+FO6+++4m1918882tVgDbe61bq7515u/6/vvvD7/+9a+b3L/+e5o4cWKHXtfuqAA2fASRpEbq6uq46aabOPfcc9lll114/fXXW5zgUVFRwYc+9CGOOOKITdfddNNNnHfeedxwww1Njr355pvJZDKUl5fz7rvvct555216zDvvvJM777yz3XY1rsJls1lWrFjRpF31Y73qB7BPmTKFY445hurq6s0ea/z48bzxxhttPt8zzzzT6m3bbLMN22+/PQ8//HCrxyxatKjNx29sn3324dZbb23xtvHjx1NWVsbjjz++6bq6ujqeeuopJk2aBMCvfvUrbr/99k2V0DvvvJPp06e3+ZyNX8/FixcD8bVbsGABU6ZM4fDDD29SHUun05SXl1NeXr6pitsRbT1Pe+bOncuaNWua3L/+57vrrrsycOBAHnzwwSb3KSsra3Xg/IQJE/jb3/7W5LqnnnqKU089tcPPW+/JJ59scnn69OlcdNFFpFIpJk2aRG1tLTNmzNh0+8qVK5k9e/amnxnAxo0bm7w+q1at4ve//z33338/Dz74IA899BB//etfWbJkCQAbNmzgrbfeavF7y7fmr1n9uNPQqLq/dOnSdieYtPb7Mnv27DbvN2nSpM1+ttOnT+fEE09s8fj2XuvWdObvulAZAKUiUVVV1eIyGEOHDm11duT111/PjBkz2HPPPVvtsjv77LMpLy9v8k8uSRLS6TS77bZbk4B14YUX8tBDD1FZWdlu12RrGnejAIQQNrsO4mB6gEGDBnHXXXe1OAC+/h9LW9auXdvqbR0JQPfccw9HHnlkq7fPmzePPffcs8OP15b77ruPcePGcfLJJ3P88cfz8MMPc80117Q547Dxa1f/T7rxa3fJJZe0OBlgw4YNnWpbW8/TmfvW379xGwFOOeUUFi5c2OS4jRs3dqqNnXnertTSz/3Tn/40v/jFLzjxxBP56Ec/yg9+8AOOP/54ZsyYwRFHHNHurNnPfe5z/PnPf+7Q8y9ZsoR+/fpRUVHR5L1g9OjR7Qah5jry99mR13Frfl86q63XujWd+btesmQJo0ePbnJ7/eXOvr5dyQAoFYnZs2dzwgknbHb9fvvtx+uvv97ifV599VVmzpzJ3nvv3eo/k/POO4/LL7+cP/zhD02u/+Uvf8mnP/1pvvGNb2y6bsmSJT1euXjuuec444wzmDt3bqszYGtqajo0vqi5NWvW8Pbbb3Pcccfx73//u8Vjzj///E3jEVvS+B/dSy+9xHHHHcd3v/vdzY5766232LhxI4cffjjz588HoKSkhAMPPJCf//znm45bvnw5N954IzfeeCOPPvooP/nJTzq05ERLnnvuOSZMmFCw1SaIv6MbNmxg7NixTJs2rUP3mT17NgceeGCT65pf7qiDDz64yeVDDjmEN954g2w2y6xZsygtLeXggw/eVIkdPnw4EyZM4NVXX233sV944QVeeOEFfvSjH/HEE09w9tlnM2PGDJ555hn22WefNu/bmVnPzz77LDU1NRx33HGbwv7uu+/OuHHj2q0gF5pZs2a1+DNpT2uvdWvvDZ35u54+fTo//OEPKSkpoa6uDoDjjz+e1157jdWrV3fwO+t6BkCpSPzqV7/iv//7v7nyyiv53e9+x8aNGznllFM466yzOO2001q937HHHktpaWmLVcIpU6aw//778/GPf3yzrpmbb76Z73znO3zrW9/q0NIjH/jAB7jsssuadI11hWuuuYbPfOYz3Hzzzfzf//0fK1euZNddd+VjH/sY559/Ptlslrlz53LwwQczbtw41qxZ06klIr773e/y61//mmXLlnHvvfcyePBgDj/8cK6++mqgc11Fl112GS+//DLXXHMNv/71r6mpqeGYY47h1ltvZcWKFfzqV7/iJz/5CStXrmT+/Pl87WtfY8CAAVx33XUAfO973+PZZ59l5syZ9OvXj1NPPZVZs2Z17gVr5NJLL+Xuu+9m/vz53HbbbWSzWaZMmcKee+7Jt7/97S1+3K60Zs0aLr/8cq644gpSqRSPPfYYFRUVHH744VRVVXHjjTdudp+rrrqKadOmceGFF3LXXXdx7LHHctJJJ3VoElJzY8eO5ac//Sm/+c1v2G+//fjCF77ARRddBMCbb77JnXfeyW9/+1s+97nPUV1dzY9+9CMWLlzI3//+91Yfc6edduKzn/0s//jHP1i0aBETJkxgt9122/S9dLYLeNiwYYwdO5btttsOiF3gED+QLV26lKqqKq677jp+9rOfsXLlSqqqqrjqqqt44okn2qyCFaJf/OIXPP7441x00UX8/e9/533ve1+r3b/Q/ms9d+5cdt55Z6ZMmcI777xDdXU1NTU1nfq7/vOf/8wll1zCddddx49//GP23HNPvvjFL3LhhRduOqal97/x48czaNAgxowZQ3l5+ab1G1999dUWez06y1nAUpF4++23Oeqoo5g4cSIPPfQQM2bM4CMf+Qhnnnkm999/f6v3W7duXatdxOeddx4zZ85scVzO3/72N0aNGsXJJ5/cofZVVFQwceLEjn0znbB48WIOP/xw0uk0DzzwAC+//DI///nPWb16NdlsFogLw2YyGV599VWWL1/O2LFjO/z4N954I1/60pf4/Oc/z8yZM7n77rvZbbfdtqitb7zxBieccAJTpkzhqaeeYvr06bz//e/fVDX4+te/zu23384f//hHnnvuOXbddVfe9773baoi1NTUcNlll/HSSy8xbdo0MpkMH/vYx7aoLQAPPPAAp556KieccAJPP/00Tz75JBdeeGGTtSB///vft7gweE/69re/zfe//32+8Y1vMGvWLO677z5OOeUU3n777RaPf+KJJ7jgggv48pe/zIsvvsiJJ57IFVdc0elubYg///Lycp566imuueYarrzySq699tpNt5977rk8++yz3H333UyfPp0kSTj55JM3/Uxbsm7dOiZOnMjtt9/O66+/zrXXXss111zDb37zm063D+D000/nhRde4J577gHglltu4YUXXuCCCy7YdMyFF17I3Xffze233860adNYsmQJH/rQh5o8zttvv80ll1yyRW3oKTNmzOAzn/kMX/ziF3nxxRc54YQT+MEPftDq8e291rfffjv33XcfU6dOZfny5Zx11lmdblNVVRUnnHACO++8M88++yw//elPufTSS/ntb3+76ZiW3v9+97vfbfo5TZgwYVOVsj7Ib60kdOAjT2tjhyRJxe3f//43U6dO5Xvf+16+m7JVrr32WiZOnNjq0jHFrry8nBUrVnDSSSfxyCOP5Ls5akdlZSVDhgxp8xi7gCVJW2TIkCGMHz+eU045Jd9N6bSLLrqIBx98kLVr13LSSSdxzjnn8PnPfz7fzSpYxxxzDP/6178Mf31JuwvFBNcB9OTJkydP3XN65ZVXQnV1dYuns88+u9ue95ZbbglLly4N69atC6+88kr43Oc+l/fXwlP7p/odfVo6feMb38h7+wrl1JF1AO0CliTlzdixYyktLW3xtqVLlzZZU07abrvtWp19u3LlSlatWtXDLSpMdgFLkgpa/ZI2Ukf0hQWYC0WHZgFvydR4SZIk9byO5LYOBcCWtlCSJElS4elIbuvQGMBsNsuiRYsYPHgwSZJ0SeMkSZLUdUIIVFdXs91227W7dV6HAqAkSZL6DncCkSRJKjIGQEmSpCJjAJQkSSoyBkBJkqQiYwCUJEkqMgZASZKkImMAlCRJKjL/Hzf+p7Bhu+33AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "winery_count = data[['variety','winery']].drop_duplicates().groupby('variety').winery.count()\n", "umap.plot.points(reducer, theme='fire', values=np.log(variety_labels.map(winery_count)));" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.10" } }, "nbformat": 4, "nbformat_minor": 4 }