Skip to content

Instantly share code, notes, and snippets.

@Saurabh7
Created August 11, 2017 07:25
Show Gist options
  • Save Saurabh7/7c2369ef590f4e3528ad704add368630 to your computer and use it in GitHub Desktop.
Save Saurabh7/7c2369ef590f4e3528ad704add368630 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<script>jQuery(function() {if (jQuery(\"body.notebook_app\").length == 0) { jQuery(\".input_area\").toggle(); jQuery(\".prompt\").toggle();}});</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<button onclick=\"jQuery('.input_area').toggle(); jQuery('.prompt').toggle();\">Toggle code</button>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import IPython.core.display as di\n",
"\n",
"# This line will hide code by default when the notebook is exported as HTML\n",
"di.display_html('<script>jQuery(function() {if (jQuery(\"body.notebook_app\").length == 0) { jQuery(\".input_area\").toggle(); jQuery(\".prompt\").toggle();}});</script>', raw=True)\n",
"\n",
"# This line will add a button to toggle visibility of code blocks, for use with the HTML export version\n",
"di.display_html('''<button onclick=\"jQuery('.input_area').toggle(); jQuery('.prompt').toggle();\">Toggle code</button>''', raw=True)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import display, HTML\n",
"from itertools import combinations, product\n",
"import pandas as pd\n",
"import json\n",
"from jarvis.brain.insights.paths.path_pipeline import PathPipeline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"goal_metric = {\"value\": \"aw_cost_per_conv\", \"base_metrics\": {\"numerator\": \"aw_cost\", \"denominator\":\"aw_conversions\"}, \"diff\": -1}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TIME USED 6.235396862030029\n",
"TIME USED 5.351385831832886\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sabby/jarvis/jarvis/brain/insights/paths/path_processor.py:160: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" new_df['prop'] = new_df[self.spend] / self.total_spend\n",
"/home/sabby/jarvis/jarvis/brain/insights/paths/path_processor.py:162: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" new_df['score'] = abs(new_df[self.goal_metric] - self.overall_goal_metric) * new_df['prop']\n",
"/home/sabby/anaconda3/envs/jarvis1/lib/python3.5/site-packages/pandas/computation/expressions.py:62: RuntimeWarning: divide by zero encountered in true_divide\n",
" return op(a, b)\n",
"/home/sabby/jarvis/jarvis/brain/insights/paths/path_processor.py:320: RuntimeWarning: invalid value encountered in double_scalars\n",
" other_goal_metric = other_num / other_deno\n",
"/home/sabby/jarvis/jarvis/brain/insights/paths/path_processor.py:284: RuntimeWarning: divide by zero encountered in double_scalars\n",
" new_goal_metric = new_num / new_deno\n",
"/home/sabby/anaconda3/envs/jarvis1/lib/python3.5/site-packages/pandas/computation/expressions.py:62: RuntimeWarning: invalid value encountered in true_divide\n",
" return op(a, b)\n"
]
}
],
"source": [
"account_ids = {'facebook': [261, 260]}#{'adwords': [1]} #,\n",
"date_range = {'start': '2017-07-01', 'end': '2017-07-31'}\n",
"goal_metric = {'value': 'ga_fb_cpt',\n",
" 'base_metrics': {'numerator': 'fb_spend',\n",
" 'denominator': 'ga_transactions'},\n",
" 'diff': -1}\n",
"\n",
"args = {}\n",
"args['account_ids'] = account_ids\n",
"args['dimensions'] = None\n",
"args['tag_list'] = None\n",
"args['goal'] = None\n",
"args['num_trees'] = None\n",
"args['staging'] = None\n",
"args['filters'] = [{\"operator\":\"$nin\",\"dimension\":\"custom_tags.Campaigns.metadata.name\",\"value\":[\"International_1\",\"AdWyze - DPA\"]},{\"operator\":\"$in\",\"dimension\":\"custom_tags.Sale Campaign.name\",\"value\":[\"non-sale\"]}]\n",
"args['start_date'] = date_range['start']\n",
"args['end_date'] = date_range['end'] \n",
"args['goal_metric'] = goal_metric\n",
"args['num_results'] = 20\n",
"args['imp_factor'] = 8\n",
"args['spend_metric'] = None\n",
"args['target_value'] = 1400\n",
"path_pipeline = PathPipeline(args)\n",
"df, tag_list, spend = path_pipeline.pre_process()\n",
"data = path_pipeline.execute()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df[goal_metric['value']] = df[goal_metric['base_metrics']['numerator']] / df[goal_metric['base_metrics']['denominator']]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model = path_pipeline.path_model"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"binwidth=0.01"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data1 = []\n",
"dff= df[df[goal_metric['value']] != pd.np.inf]\n",
"for idx in range(len(dff)):\n",
" data1 += [dff[goal_metric['value']].iloc[idx]]*int(dff[path_model.spend].iloc[idx])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.lines.Line2D at 0x7fe6dff93358>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABLEAAAJmCAYAAACjVBL5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuQ5Wd5J/bvI2YB24FBOGbaFpcBLMlge4PFAvLaLlpc\nLIFrERsXWCQVcU1hYzCVTVIWuyk0hL3hKpe1GButY9lILtsC4yWwWdkaE6lhU7ERLGhhkZDkC7pa\nDWuQiImXcHnyR/8aenu6Z+bMnOnz9vTnU9XV5zznd3l/57Rm1N953vdX3R0AAAAAGNkZix4AAAAA\nAByLEAsAAACA4QmxAAAAABieEAsAAACA4QmxAAAAABieEAsAAACA4S08xKqq/6Gq/kNVfbKqfruq\nHlpVB6vqT6rqtqr63araN2370Kq6tqruqKo/rqrHbzjOm6b6rVX14xvqF1XVZ6rq9qr6+UVcIwAA\nAAAnZ6EhVlV9T5I3JDmvu/92kn1JXpbkbUl+sbvPTfJAkldPu7w6yRe6++wkVyT5hek4T03y0iRP\nSfKCJL9aa85I8o4kFyb5/iQvq6rv26nrAwAAAGA+Ft6JleQhSb5j6rb6tiT3Jbkgye9Pr1+d5MXT\n44un50ny3iTPmR6/KMm13f217v5skjuSPHP6uqO77+zurya5djoGAAAAALvIQkOs7r4vyS8muSvJ\nvUkeTPLxJA909zemze5Jctb0+Kwkd0/7fj3Jg1X16I31yb1TbXN947EAAAAA2CUWPZ3wUVnrjHpC\nku9J8h1Zmw64Wa/vss1rs9YBAAAA2EX2Lfj8z0vy5939hSSpqvcl+btJHlVVZ0zdWI/N2hTDZK2T\n6nFJ7quqhyTZ391frKr1+rr1fSrJ47eoH6GqhFsAAAAAc9bdWzUZzWzRa2LdleT8qnp4VVWS5yb5\ndJIbk7xk2ublSd4/Pf7A9DzT6zdsqF8y3b3wiUm+N8lNST6a5Hur6glV9dAkl0zbbqm7fe2Rr8sv\nv3zhYzjhr+TIL+c8fT9vXz5vXz5vXz7vPfrl895bXz7vvfXl895bX/O00E6s7r6pqt6b5BNJvjp9\n/7Uk1yW5tqreOtWumna5KslvVdUdSf4qa6FUuvuWqnpPklum47yu196pr1fV65Mczlpgd1V337pj\nFwgAAADAXCx6OmG6+y1J3rKp/BdJnrXFtl9J8tJtjvPPkvyzLep/mOTckx8pAAAAAIuy6OmEsBDL\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe6dfc76ac8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib.pyplot import hist\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as ticker\n",
"\n",
"tick_spacing = 10\n",
"\n",
"plt.figure(figsize=(20,10))\n",
"binwidth = 0.1\n",
"h = hist(dff[goal_metric['value']], weights=dff.fb_spend, bins=pd.np.linspace((min(dff[goal_metric['value']])),\n",
" (max(dff[goal_metric['value']])), 500))\n",
"plt.xlabel(goal_metric['value'], fontsize=18)\n",
"plt.ylabel('Spend', fontsize=18)\n",
"# ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))\n",
"plt.axvline(path_model.overall_goal_metric, linewidth=5, color='red')\n",
"plt.axvline(path_model.overall_goal_metric + path_model.check_threshold*path_model.overall_goal_metric, linewidth=5, color='red')\n",
"plt.axvline(path_model.overall_goal_metric - path_model.check_threshold*path_model.overall_goal_metric, linewidth=5, color='red')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_1 = {key: value for (key, value) in enumerate(data['under_valued'])}\n",
"data_2 = {key: value for (key, value) in enumerate(data['strategic_wins'])}\n",
"data_3 = {key: value for (key, value) in enumerate(data['quick_wins'])}\n",
"data_4 = {key: value for (key, value) in enumerate(data['over_valued'])}\n",
"\n",
"df_1 = pd.DataFrame().from_dict(data_1, orient='index')\n",
"df_2 = pd.DataFrame().from_dict(data_2, orient='index')\n",
"df_3 = pd.DataFrame().from_dict(data_3, orient='index')\n",
"df_4 = pd.DataFrame().from_dict(data_4, orient='index')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/sabby/anaconda3/envs/jarvis1/lib/python3.5/site-packages/bokeh/util/deprecation.py:34: BokehDeprecationWarning: \n",
"The bokeh.charts API has moved to a separate 'bkcharts' package.\n",
"\n",
"This compatibility shim will remain until Bokeh 1.0 is released.\n",
"After that, if you want to use this API you will have to install\n",
"the bkcharts package explicitly.\n",
"\n",
" warn(message)\n"
]
}
],
"source": [
"from bokeh.charts import Scatter, output_file, show\n",
"from bokeh.io import output_notebook, push_notebook\n",
"from bokeh.plotting import figure, ColumnDataSource\n",
"from bokeh.models import HoverTool\n",
"from bokeh.models.widgets.tables import DataTable, TableColumn\n",
"from bokeh.models import Span"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"2cfd60bc-c365-4f65-b7d7-392c28317abd\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
"\n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 5000;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
"\n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"2cfd60bc-c365-4f65-b7d7-392c28317abd\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"2cfd60bc-c365-4f65-b7d7-392c28317abd\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '2cfd60bc-c365-4f65-b7d7-392c28317abd' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" document.getElementById(\"2cfd60bc-c365-4f65-b7d7-392c28317abd\").textContent = \"BokehJS is loading...\";\n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.6.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.6.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"2cfd60bc-c365-4f65-b7d7-392c28317abd\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(this));"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"output_notebook()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"dabb30e3-a109-4db3-8ffa-032e531cd1b5\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"dabb30e3-a109-4db3-8ffa-032e531cd1b5\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"d70b492f-22c7-4830-bcf4-c27e9cb9f86b\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"dabb30e3-a109-4db3-8ffa-032e531cd1b5\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'dabb30e3-a109-4db3-8ffa-032e531cd1b5' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"8f75297c-1cce-42f9-a0cf-cc6fc6680cfc\":{\"roots\":{\"references\":[{\"attributes\":{\"data_source\":{\"id\":\"e1b53d8d-5d11-435b-8071-99b3262d4e6d\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d1f0bb00-9db9-4a53-8d5e-df9a3db99aa4\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"f5419551-41a9-45ce-a94e-197b3623284a\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"66ec9f67-13b9-4b7a-b1b2-aef8a2488684\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data_source\":{\"id\":\"0b632ffc-7a21-4e3c-b1e0-94ac84e8e9d2\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"d73c5d73-1c59-4465-b58d-baaece54fd32\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"9f1a39a6-0699-457e-b9f1-ad86f7b1b9f5\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"0c12be5b-92a5-4b4b-b9d0-4551a1ee640f\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"be496fad-feee-47ba-8e36-7a45d5b275ad\",\"type\":\"HoverTool\"}]},\"id\":\"43d00e2a-da25-484c-a2dc-15b148568663\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"size\",\"idx\",\"overall\",\"recall\",\"overall_spend_prop\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAABAU0AAAAAAAABuQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"idx\":[0,1],\"imp_factor\":{\"__ndarray__\":\"iUFg5dAiuz+iRbbz/dS4Pw==\",\"dtype\":\"float64\",\"shape\":[2]},\"index\":[0,1],\"level_0\":[\"Lookalike Types : 1-2%\",\"Audience Strategy : Prospecting\"],\"level_1\":[\"- : -\",\"Audience Types : Lookalike\"],\"level_2\":[\"- : -\",\"- : -\"],\"level_3\":[\"- : -\",\"- : -\"],\"levels\":[[{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}}]],\"metric\":{\"__ndarray__\":\"hetRuJ4RpkCuR+F6FMyfQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"numerator\":{\"__ndarray__\":\"UrgehTWNCkGamZmZV88dQQ==\",\"dtype\":\"float64\",\"shape\":[2]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"H4XrUbj3mUDNzMzMzE+YQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"overall\":{\"__ndarray__\":\"2rOOxKp8mUDas47EqnyZQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"overall_spend_prop\":{\"__ndarray__\":\"c5MYBFZOHkBzkxgEVk4eQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"precision\":{\"__ndarray__\":\"/tR46SYx7D/jpZvEILDqPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"recall\":{\"__ndarray__\":\"rkfhehSuxz+e76fGSzfZPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"size\":{\"__ndarray__\":\"AAAAAAAANEDjrexzSE0yQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"spend_prop\":{\"__ndarray__\":\"9ihcj8J1MEBcj8L1KHxCQA==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"e1b53d8d-5d11-435b-8071-99b3262d4e6d\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"03f13386-f5db-4c68-aeec-6ebfeb6d07f7\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"436c3bad-6fd8-4631-b356-fd190fc4ba10\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"47ad9903-69fc-44f3-9f72-0f85e871e431\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"e566b770-c8fc-4cf0-9e06-bf15b2dc1cc9\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_color\":{\"value\":\"green\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"3ae65a45-6d3c-4c6e-804c-9fa7a479018b\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"edab302d-e7d9-48f3-8239-4674b5cf9f08\",\"type\":\"ToolEvents\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"06c81e26-0c9f-496b-aad2-c8bdaeb7a107\",\"type\":\"BasicTicker\"}},\"id\":\"f0e18b17-67c2-45b6-9311-dfb97a343ccd\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"28d225d8-2b94-4410-a20e-7416069ff2af\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"3ae65a45-6d3c-4c6e-804c-9fa7a479018b\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"7fcb779c-99b8-4d6d-8b39-6497f05dc73f\",\"type\":\"Circle\"},\"selection_glyph\":null},\"id\":\"7120b86b-1177-46ae-af97-fbde26f476d2\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Spend Proportion\",\"formatter\":{\"id\":\"49edc07d-e1c2-42d6-961e-88f91d05b608\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"175837be-31a1-467d-a48c-5f042ae934d0\",\"type\":\"BasicTicker\"}},\"id\":\"8a8a2a88-b882-45ec-a0dd-a3383f4ed087\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"orange\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"d73c5d73-1c59-4465-b58d-baaece54fd32\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"size\",\"idx\",\"overall\",\"recall\",\"overall_spend_prop\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAAAAPUAAAAAAAAA0QAAAAAAAAEFAAAAAAAAAMkAAAAAAAAA2QAAAAAAAADBAAAAAAAAAKEAAAAAAAAA1QA==\",\"dtype\":\"float64\",\"shape\":[8]},\"idx\":[0,1,2,3,4,5,6,7],\"imp_factor\":{\"__ndarray__\":\"+FPjpZvEwD+kcD0K16PAP1g5tMh2vr8/yXa+nxovvT/RItv5fmq8P+kmMQisHLo/8tJNYhBYuT9SuB6F61G4Pw==\",\"dtype\":\"float64\",\"shape\":[8]},\"index\":[0,1,2,3,4,5,6,7],\"level_0\":[\"misc : AdWyzeCampaigns\",\"Age Range : 21-35\",\"Image : b49eeb9a47c45adb46dd7b1784850f34\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\",\"Image : 500b52a144e35e9b27d20819b88088c6\",\"Image : 586256cfce4a101a83e952faf174dea4\",\"Audience Strategy : Prospecting\"],\"level_1\":[\"Audience Strategy : Prospecting\",\"- : -\",\"- : -\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\",\"- : -\",\"- : -\",\"Audience Types : Interests\"],\"level_2\":[\"Product Category : Tops\",\"- : -\",\"- : -\",\"Audience Types : Lookalike\",\"Product Category : Indya\",\"- : -\",\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\"],\"level_3\":[\"Image : 7f1042fde8334ec2dd104327a0785072\",\"- : -\",\"- : -\",\"Image : 7f1042fde8334ec2dd104327a0785072\",\"Image : c9669afe6bcb09e547b4d46f948411a3\",\"- : -\",\"- : -\",\"- : -\"],\"levels\":[[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"Age Range\":{\"name\":\"21-35\",\"value\":\"21-35\"}}],[{\"Image\":{\"name\":\"b49eeb9a47c45adb46dd7b1784850f34\",\"value\":\"b49eeb9a47c45adb46dd7b1784850f34\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Image\":{\"name\":\"c9669afe6bcb09e547b4d46f948411a3\",\"value\":\"c9669afe6bcb09e547b4d46f948411a3\"}}],[{\"Image\":{\"name\":\"500b52a144e35e9b27d20819b88088c6\",\"value\":\"500b52a144e35e9b27d20819b88088c6\"}}],[{\"Image\":{\"name\":\"586256cfce4a101a83e952faf174dea4\",\"value\":\"586256cfce4a101a83e952faf174dea4\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}]],\"metric\":{\"__ndarray__\":\"rkfhepS7pEA9Ctej8KGtQJqZmZmZ859AhetRuB5oqUB7FK5H4fGjQEjhehSueqdAZmZmZmY7rUDhehSuR9KeQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"numerator\":{\"__ndarray__\":\"AAAAAADK8kApXI/CNYXyQI/C9Shs+fBA16NwPSKV7EDXo3A9kmzrQKRwPQqveudAUrgehYvs5UCuR+F6/DnkQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"16NwPQrImUD2KFyPwqGYQFyPwvUoNJlAZmZmZmZBnkAAAAAAAE6YQFK4HoXrDZlAH4XrUbj9mECF61G4Ho2WQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"overall\":{\"__ndarray__\":\"2rOOxKp8mUDas47EqnyZQNqzjsSqfJlA2rOOxKp8mUDas47EqnyZQNqzjsSqfJlA2rOOxKp8mUDas47EqnyZQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"overall_spend_prop\":{\"__ndarray__\":\"c5MYBFZOHkBzkxgEVk4eQHOTGARWTh5Ac5MYBFZOHkBzkxgEVk4eQHOTGARWTh5Ac5MYBFZOHkBzkxgEVk4eQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[8]},\"recall\":{\"__ndarray__\":\"i2zn+6nxsj/jpZvEILCyP/T91HjpJrE/yXa+nxovrT/ZzvdT46WrP6rx0k1iEKg/arx0kxgEpj97FK5H4XqkPw==\",\"dtype\":\"float64\",\"shape\":[8]},\"size\":{\"__ndarray__\":\"AAAAAAAANEAtI/qA6tgzQDr21oZp7jJA/FWckJJnMUCDv4oTUvIwQC74qzghJS9APcuIPqA6LkCk5FlG9AEtQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"spend_prop\":{\"__ndarray__\":\"SOF6FK5HF0D2KFyPwvUWQArXo3A9ChVAuB6F61G4EUAAAAAAAAARQB+F61G4Hg1AMzMzMzMzC0AfhetRuB4JQA==\",\"dtype\":\"float64\",\"shape\":[8]}}},\"id\":\"28d225d8-2b94-4410-a20e-7416069ff2af\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_color\":{\"value\":\"red\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"436c3bad-6fd8-4631-b356-fd190fc4ba10\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"blue\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"d1f0bb00-9db9-4a53-8d5e-df9a3db99aa4\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"9c314f53-7a65-4f68-9814-bed2afad16a0\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"7fcb779c-99b8-4d6d-8b39-6497f05dc73f\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null},\"id\":\"45330ce4-599f-42bf-8c90-409b814be5a4\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"175837be-31a1-467d-a48c-5f042ae934d0\",\"type\":\"BasicTicker\"}},\"id\":\"cc5273be-089b-453c-baf9-9a95564dcd50\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null},\"id\":\"48234f94-4415-4c68-9bb2-0187720da106\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_width\":{\"value\":3},\"location\":1631.1667654320977,\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"418eb23b-149c-418f-b1d8-0700af98c499\",\"type\":\"Span\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"47ad9903-69fc-44f3-9f72-0f85e871e431\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"8884d51b-4d88-4bf3-9bdf-f0b8704cd8c4\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"size\",\"idx\",\"overall\",\"recall\",\"overall_spend_prop\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAIBJQAAAAAAAADFAAAAAAAAAKEAAAAAAAAAoQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"idx\":[0,1,2,3,4],\"imp_factor\":{\"__ndarray__\":\"TDeJQWDlwD/6fmq8dJO4P/yp8dJNYrA/aJHtfD81rj/Jdr6fGi+tPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"index\":[0,1,2,3,4],\"level_0\":[\"misc : AdWyzeCampaigns\",\"Audience Strategy : Mixed\",\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\"],\"level_1\":[\"Audience Strategy : Prospecting\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Audience Types : Open Targeting\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\"],\"level_2\":[\"Product Category : Tops\",\"- : -\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Audience Types : Open Targeting\",\"Audience Types : Open Targeting\"],\"level_3\":[\"Age Range : 18-35\",\"- : -\",\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\",\"Image : 1df469643da69e293445deb2d3dc2fca\"],\"levels\":[[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Age Range\":{\"name\":\"18-35\",\"value\":\"18-35\"}}],[{\"Audience Strategy\":{\"name\":\"Mixed\",\"value\":\"Mixed\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}]],\"metric\":{\"__ndarray__\":\"rkfhehR0kUBI4XoUrsWJQJqZmZmZxJFApHA9CtcllUDD9Shcj4yTQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"numerator\":{\"__ndarray__\":\"rkfhevgW80CuR+F6jInkQHsUrkfh4NJAAAAAAMC4z0CF61G43lLNQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"cT0K16PsokA9CtejcO+XQHE9CtejnppAexSuR+GvmUAAAAAAAOKZQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"overall\":{\"__ndarray__\":\"2rOOxKp8mUDas47EqnyZQNqzjsSqfJlA2rOOxKp8mUDas47EqnyZQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"overall_spend_prop\":{\"__ndarray__\":\"c5MYBFZOHkBzkxgEVk4eQHOTGARWTh5Ac5MYBFZOHkBzkxgEVk4eQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"recall\":{\"__ndarray__\":\"2/l+arx0sz/LoUW28/2kP9v5fmq8dJM//Knx0k1ikD+4HoXrUbiOPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"size\":{\"__ndarray__\":\"AAAAAAAANEAYXXTRRRctQGWTTTbZZCNA4IMPPvjgIUBGF1100UUhQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"spend_prop\":{\"__ndarray__\":\"rkfhehSuF0BxPQrXo3AJQFyPwvUoXPc/rkfhehSu8z89CtejcD3yPw==\",\"dtype\":\"float64\",\"shape\":[5]}}},\"id\":\"0b632ffc-7a21-4e3c-b1e0-94ac84e8e9d2\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"06c81e26-0c9f-496b-aad2-c8bdaeb7a107\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"9f1a39a6-0699-457e-b9f1-ad86f7b1b9f5\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"49edc07d-e1c2-42d6-961e-88f91d05b608\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"size\",\"units\":\"screen\"},\"x\":{\"field\":\"spend_prop\"},\"y\":{\"field\":\"metric\"}},\"id\":\"f5419551-41a9-45ce-a94e-197b3623284a\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"tooltips\":[[\"lvl 0:\",\"@level_0\"],[\"lvl 1:\",\"@level_1\"],[\"lvl 2:\",\"@level_2\"],[\"lvl 3:\",\"@level_3\"],[\"ga_fb_cpt\",\"@metric\"],[\"Precision\",\"@precision\"],[\"Recall\",\"@recall\"],[\"mcc\",\"@imp_factor\"],[\"Spend Prop\",\"@spend_prop\"]]},\"id\":\"be496fad-feee-47ba-8e36-7a45d5b275ad\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"175837be-31a1-467d-a48c-5f042ae934d0\",\"type\":\"BasicTicker\"},{\"attributes\":{\"dimension\":\"height\",\"line_width\":{\"value\":3},\"location\":7.5764999999999985,\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"64906fe3-7684-4411-814f-30e7131a8ca3\",\"type\":\"Span\"},{\"attributes\":{\"below\":[{\"id\":\"8a8a2a88-b882-45ec-a0dd-a3383f4ed087\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"03fab5f6-8004-4294-8306-45ba6020add4\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":800,\"renderers\":[{\"id\":\"8a8a2a88-b882-45ec-a0dd-a3383f4ed087\",\"type\":\"LinearAxis\"},{\"id\":\"cc5273be-089b-453c-baf9-9a95564dcd50\",\"type\":\"Grid\"},{\"id\":\"03fab5f6-8004-4294-8306-45ba6020add4\",\"type\":\"LinearAxis\"},{\"id\":\"f0e18b17-67c2-45b6-9311-dfb97a343ccd\",\"type\":\"Grid\"},{\"id\":\"0c12be5b-92a5-4b4b-b9d0-4551a1ee640f\",\"type\":\"GlyphRenderer\"},{\"id\":\"e566b770-c8fc-4cf0-9e06-bf15b2dc1cc9\",\"type\":\"GlyphRenderer\"},{\"id\":\"7120b86b-1177-46ae-af97-fbde26f476d2\",\"type\":\"GlyphRenderer\"},{\"id\":\"66ec9f67-13b9-4b7a-b1b2-aef8a2488684\",\"type\":\"GlyphRenderer\"},{\"id\":\"64906fe3-7684-4411-814f-30e7131a8ca3\",\"type\":\"Span\"},{\"id\":\"418eb23b-149c-418f-b1d8-0700af98c499\",\"type\":\"Span\"}],\"title\":{\"id\":\"4454a4d5-93ff-4cff-850e-ab92ed64c894\",\"type\":\"Title\"},\"tool_events\":{\"id\":\"edab302d-e7d9-48f3-8239-4674b5cf9f08\",\"type\":\"ToolEvents\"},\"toolbar\":{\"id\":\"43d00e2a-da25-484c-a2dc-15b148568663\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"45330ce4-599f-42bf-8c90-409b814be5a4\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"9c314f53-7a65-4f68-9814-bed2afad16a0\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"48234f94-4415-4c68-9bb2-0187720da106\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"91744d12-a8f1-4ff7-acb1-673ac87decc5\",\"type\":\"LinearScale\"}},\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"size\",\"idx\",\"overall\",\"recall\",\"overall_spend_prop\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAABAVEAAAAAAACBiQAAAAAAAAFNAAAAAAAAAV0AAAAAAAIBWQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"idx\":[0,1,2,3,4],\"imp_factor\":{\"__ndarray__\":\"g8DKoUW2wz+4HoXrUbi+PxkEVg4tsr0/okW28/3UuD9SuB6F61G4Pw==\",\"dtype\":\"float64\",\"shape\":[5]},\"index\":[0,1,2,3,4],\"level_0\":[\"Daily Report : Open targeting\",\"misc : AdWyzeCampaigns\",\"Interests : Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\",\"Lookalike Types : 1%\",\"FabAlley : Indya\"],\"level_1\":[\"Landing Pages : www.faballey.com/clothing/tops\",\"Audience Strategy : Prospecting\",\"- : -\",\"Landing Pages : www.faballey.com/indya\",\"Custom Audiences : Lookalike (IN, 1%) - All Purchased\"],\"level_2\":[\"- : -\",\"Product Category : Indya\",\"- : -\",\"- : -\",\"- : -\"],\"level_3\":[\"- : -\",\"Image : 47ed1bef68f65e3784fe6a84122dc040\",\"- : -\",\"- : -\",\"- : -\"],\"levels\":[[{\"Daily Report\":{\"name\":\"Open targeting\",\"value\":\"Open targeting\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops\",\"value\":\"www.faballey.com/clothing/tops\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Image\":{\"name\":\"47ed1bef68f65e3784fe6a84122dc040\",\"value\":\"47ed1bef68f65e3784fe6a84122dc040\"}}],[{\"Interests\":{\"name\":\"Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\",\"value\":\"Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\"}}],[{\"Lookalike Types\":{\"name\":\"1%\",\"value\":\"1%\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/indya\",\"value\":\"www.faballey.com/indya\"}}],[{\"FabAlley\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Custom Audiences\":{\"name\":\"Lookalike (IN, 1%) - All Purchased\",\"value\":\"Lookalike (IN, 1%) - All Purchased\"}}]],\"metric\":{\"__ndarray__\":\"MzMzMzMLlEAzMzMzM8OVQHE9CtejAJVAMzMzMzP+lEAfhetRuDWVQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"numerator\":{\"__ndarray__\":\"w/UoXC9e+UDXo3A9IqcIQRSuR+HC8PhA9ihcj2Yt/kCuR+F6hNP9QA==\",\"dtype\":\"float64\",\"shape\":[5]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"uB6F61GJmUC4HoXrUWydQIXrUbgeBZpAFK5H4fo0oEA9Ctej8N2iQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"overall\":{\"__ndarray__\":\"2rOOxKp8mUDas47EqnyZQNqzjsSqfJlA2rOOxKp8mUDas47EqnyZQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"overall_spend_prop\":{\"__ndarray__\":\"c5MYBFZOHkBzkxgEVk4eQHOTGARWTh5Ac5MYBFZOHkBzkxgEVk4eQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D/4U+Olm8TsP+f7qfHSTe4/oBov3SQG7T/LoUW28/3sPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"recall\":{\"__ndarray__\":\"QmDl0CLbuT+6SQwCK4fGP6rx0k1iELg/2c73U+Oluz8xCKwcWmS7Pw==\",\"dtype\":\"float64\",\"shape\":[5]},\"size\":{\"__ndarray__\":\"AAAAAAAANEDhrPyEOCsvQP2EOCs/IS5AfMfUwN4xKUCJs/IT4qwoQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"spend_prop\":{\"__ndarray__\":\"cT0K16NwH0AUrkfhepQuQOxRuB6F6x5AuB6F61G4IkAAAAAAAIAiQA==\",\"dtype\":\"float64\",\"shape\":[5]}}},\"id\":\"03f13386-f5db-4c68-aeec-6ebfeb6d07f7\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"91744d12-a8f1-4ff7-acb1-673ac87decc5\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":null,\"text\":\"Performance by paths.\"},\"id\":\"4454a4d5-93ff-4cff-850e-ab92ed64c894\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"ga_fb_cpt\",\"formatter\":{\"id\":\"8884d51b-4d88-4bf3-9bdf-f0b8704cd8c4\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"06c81e26-0c9f-496b-aad2-c8bdaeb7a107\",\"type\":\"BasicTicker\"}},\"id\":\"03fab5f6-8004-4294-8306-45ba6020add4\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"5ed48924-6bbf-404d-9dbe-9db1078570bf\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"8f75297c-1cce-42f9-a0cf-cc6fc6680cfc\",\"elementid\":\"dabb30e3-a109-4db3-8ffa-032e531cd1b5\",\"modelid\":\"5ed48924-6bbf-404d-9dbe-9db1078570bf\",\"notebook_comms_target\":\"d70b492f-22c7-4830-bcf4-c27e9cb9f86b\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"dabb30e3-a109-4db3-8ffa-032e531cd1b5\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Under Valued\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"54fad3da-3922-438e-b838-f0577ada4423\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"54fad3da-3922-438e-b838-f0577ada4423\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"d1727b48-7c3c-475d-a053-97e64d66e532\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"54fad3da-3922-438e-b838-f0577ada4423\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '54fad3da-3922-438e-b838-f0577ada4423' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"fbb1f3bb-36e4-4e8e-a178-3c2e4d917b6a\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},\"field\":\"metric\",\"formatter\":{\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpt\"},\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"recall\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAIBJQAAAAAAAADFAAAAAAAAAKEAAAAAAAAAoQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"imp_factor\":{\"__ndarray__\":\"TDeJQWDlwD/6fmq8dJO4P/yp8dJNYrA/aJHtfD81rj/Jdr6fGi+tPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"index\":[0,1,2,3,4],\"level_0\":[\"misc : AdWyzeCampaigns\",\"Audience Strategy : Mixed\",\"Audience Strategy : Prospecting\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\"],\"level_1\":[\"Audience Strategy : Prospecting\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Audience Types : Open Targeting\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\"],\"level_2\":[\"Product Category : Tops\",\"- : -\",\"Image : 8e80ca4004a11babf741919a17c68eb7\",\"Audience Types : Open Targeting\",\"Audience Types : Open Targeting\"],\"level_3\":[\"Age Range : 18-35\",\"- : -\",\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\",\"Image : 1df469643da69e293445deb2d3dc2fca\"],\"levels\":[[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Age Range\":{\"name\":\"18-35\",\"value\":\"18-35\"}}],[{\"Audience Strategy\":{\"name\":\"Mixed\",\"value\":\"Mixed\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"8e80ca4004a11babf741919a17c68eb7\",\"value\":\"8e80ca4004a11babf741919a17c68eb7\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Open Targeting\",\"value\":\"Open Targeting\"}},{\"Image\":{\"name\":\"1df469643da69e293445deb2d3dc2fca\",\"value\":\"1df469643da69e293445deb2d3dc2fca\"}}]],\"metric\":{\"__ndarray__\":\"rkfhehR0kUBI4XoUrsWJQJqZmZmZxJFApHA9CtcllUDD9Shcj4yTQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"numerator\":{\"__ndarray__\":\"rkfhevgW80CuR+F6jInkQHsUrkfh4NJAAAAAAMC4z0CF61G43lLNQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"cT0K16PsokA9CtejcO+XQHE9CtejnppAexSuR+GvmUAAAAAAAOKZQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"recall\":{\"__ndarray__\":\"2/l+arx0sz/LoUW28/2kP9v5fmq8dJM//Knx0k1ikD+4HoXrUbiOPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"spend_prop\":{\"__ndarray__\":\"rkfhehSuF0BxPQrXo3AJQFyPwvUoXPc/rkfhehSu8z89CtejcD3yPw==\",\"dtype\":\"float64\",\"shape\":[5]}}},\"id\":\"4346bdbd-206f-406b-ab03-e8074c8827d2\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},{\"attributes\":{\"columns\":[{\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"},{\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"4346bdbd-206f-406b-ab03-e8074c8827d2\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"c78e0d6b-41a4-4d35-b5b5-1ac890ec6edc\",\"type\":\"DataTable\"},{\"attributes\":{},\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"}],\"root_ids\":[\"c78e0d6b-41a4-4d35-b5b5-1ac890ec6edc\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"fbb1f3bb-36e4-4e8e-a178-3c2e4d917b6a\",\"elementid\":\"54fad3da-3922-438e-b838-f0577ada4423\",\"modelid\":\"c78e0d6b-41a4-4d35-b5b5-1ac890ec6edc\",\"notebook_comms_target\":\"d1727b48-7c3c-475d-a053-97e64d66e532\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"54fad3da-3922-438e-b838-f0577ada4423\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Strategic Wins\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"eec63f48-94b3-4012-9507-4c8bbba4f2be\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"eec63f48-94b3-4012-9507-4c8bbba4f2be\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"541b8ce4-3691-43c1-9783-b37da63e702a\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"eec63f48-94b3-4012-9507-4c8bbba4f2be\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'eec63f48-94b3-4012-9507-4c8bbba4f2be' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"f1b21093-8466-49ad-a3a5-0168f75fb692\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},{\"attributes\":{\"columns\":[{\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"},{\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"10a5be1f-dd15-4f03-b8be-158f4cadca29\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"3014ec07-e8e0-46e7-9462-3698c653690a\",\"type\":\"DataTable\"},{\"attributes\":{\"editor\":{\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},\"field\":\"metric\",\"formatter\":{\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpt\"},\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"recall\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAABAVEAAAAAAACBiQAAAAAAAAFNAAAAAAAAAV0AAAAAAAIBWQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"imp_factor\":{\"__ndarray__\":\"g8DKoUW2wz+4HoXrUbi+PxkEVg4tsr0/okW28/3UuD9SuB6F61G4Pw==\",\"dtype\":\"float64\",\"shape\":[5]},\"index\":[0,1,2,3,4],\"level_0\":[\"Daily Report : Open targeting\",\"misc : AdWyzeCampaigns\",\"Interests : Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\",\"Lookalike Types : 1%\",\"FabAlley : Indya\"],\"level_1\":[\"Landing Pages : www.faballey.com/clothing/tops\",\"Audience Strategy : Prospecting\",\"- : -\",\"Landing Pages : www.faballey.com/indya\",\"Custom Audiences : Lookalike (IN, 1%) - All Purchased\"],\"level_2\":[\"- : -\",\"Product Category : Indya\",\"- : -\",\"- : -\",\"- : -\"],\"level_3\":[\"- : -\",\"Image : 47ed1bef68f65e3784fe6a84122dc040\",\"- : -\",\"- : -\",\"- : -\"],\"levels\":[[{\"Daily Report\":{\"name\":\"Open targeting\",\"value\":\"Open targeting\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/clothing/tops\",\"value\":\"www.faballey.com/clothing/tops\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Image\":{\"name\":\"47ed1bef68f65e3784fe6a84122dc040\",\"value\":\"47ed1bef68f65e3784fe6a84122dc040\"}}],[{\"Interests\":{\"name\":\"Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\",\"value\":\"Action movies or Animated movies or Being Indian or Bollywood movies or BuzzFeed or Others\"}}],[{\"Lookalike Types\":{\"name\":\"1%\",\"value\":\"1%\"}},{\"Landing Pages\":{\"name\":\"www.faballey.com/indya\",\"value\":\"www.faballey.com/indya\"}}],[{\"FabAlley\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Custom Audiences\":{\"name\":\"Lookalike (IN, 1%) - All Purchased\",\"value\":\"Lookalike (IN, 1%) - All Purchased\"}}]],\"metric\":{\"__ndarray__\":\"MzMzMzMLlEAzMzMzM8OVQHE9CtejAJVAMzMzMzP+lEAfhetRuDWVQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"numerator\":{\"__ndarray__\":\"w/UoXC9e+UDXo3A9IqcIQRSuR+HC8PhA9ihcj2Yt/kCuR+F6hNP9QA==\",\"dtype\":\"float64\",\"shape\":[5]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"uB6F61GJmUC4HoXrUWydQIXrUbgeBZpAFK5H4fo0oEA9Ctej8N2iQA==\",\"dtype\":\"float64\",\"shape\":[5]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D/4U+Olm8TsP+f7qfHSTe4/oBov3SQG7T/LoUW28/3sPw==\",\"dtype\":\"float64\",\"shape\":[5]},\"recall\":{\"__ndarray__\":\"QmDl0CLbuT+6SQwCK4fGP6rx0k1iELg/2c73U+Oluz8xCKwcWmS7Pw==\",\"dtype\":\"float64\",\"shape\":[5]},\"spend_prop\":{\"__ndarray__\":\"cT0K16NwH0AUrkfhepQuQOxRuB6F6x5AuB6F61G4IkAAAAAAAIAiQA==\",\"dtype\":\"float64\",\"shape\":[5]}}},\"id\":\"10a5be1f-dd15-4f03-b8be-158f4cadca29\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"}],\"root_ids\":[\"3014ec07-e8e0-46e7-9462-3698c653690a\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"f1b21093-8466-49ad-a3a5-0168f75fb692\",\"elementid\":\"eec63f48-94b3-4012-9507-4c8bbba4f2be\",\"modelid\":\"3014ec07-e8e0-46e7-9462-3698c653690a\",\"notebook_comms_target\":\"541b8ce4-3691-43c1-9783-b37da63e702a\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"eec63f48-94b3-4012-9507-4c8bbba4f2be\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Quick Wins\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"e7e685bc-d500-4850-95ff-959ac984910e\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"e7e685bc-d500-4850-95ff-959ac984910e\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"7e53c946-f3a7-4ec4-bf81-7186c3c59799\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"e7e685bc-d500-4850-95ff-959ac984910e\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e7e685bc-d500-4850-95ff-959ac984910e' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"32db2902-48b5-407c-aab7-33fb2f48dd9d\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},\"field\":\"metric\",\"formatter\":{\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpt\"},\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"recall\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAAAAPUAAAAAAAAA0QAAAAAAAAEFAAAAAAAAAMkAAAAAAAAA2QAAAAAAAADBAAAAAAAAAKEAAAAAAAAA1QA==\",\"dtype\":\"float64\",\"shape\":[8]},\"imp_factor\":{\"__ndarray__\":\"+FPjpZvEwD+kcD0K16PAP1g5tMh2vr8/yXa+nxovvT/RItv5fmq8P+kmMQisHLo/8tJNYhBYuT9SuB6F61G4Pw==\",\"dtype\":\"float64\",\"shape\":[8]},\"index\":[0,1,2,3,4,5,6,7],\"level_0\":[\"misc : AdWyzeCampaigns\",\"Age Range : 21-35\",\"Image : b49eeb9a47c45adb46dd7b1784850f34\",\"misc : AdWyzeCampaigns\",\"misc : AdWyzeCampaigns\",\"Image : 500b52a144e35e9b27d20819b88088c6\",\"Image : 586256cfce4a101a83e952faf174dea4\",\"Audience Strategy : Prospecting\"],\"level_1\":[\"Audience Strategy : Prospecting\",\"- : -\",\"- : -\",\"Audience Strategy : Prospecting\",\"Audience Strategy : Prospecting\",\"- : -\",\"- : -\",\"Audience Types : Interests\"],\"level_2\":[\"Product Category : Tops\",\"- : -\",\"- : -\",\"Audience Types : Lookalike\",\"Product Category : Indya\",\"- : -\",\"- : -\",\"Image : 929fad92512d28811db7633c516e0d1c\"],\"level_3\":[\"Image : 7f1042fde8334ec2dd104327a0785072\",\"- : -\",\"- : -\",\"Image : 7f1042fde8334ec2dd104327a0785072\",\"Image : c9669afe6bcb09e547b4d46f948411a3\",\"- : -\",\"- : -\",\"- : -\"],\"levels\":[[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Tops\",\"value\":\"Tops\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"Age Range\":{\"name\":\"21-35\",\"value\":\"21-35\"}}],[{\"Image\":{\"name\":\"b49eeb9a47c45adb46dd7b1784850f34\",\"value\":\"b49eeb9a47c45adb46dd7b1784850f34\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}},{\"Image\":{\"name\":\"7f1042fde8334ec2dd104327a0785072\",\"value\":\"7f1042fde8334ec2dd104327a0785072\"}}],[{\"misc\":{\"name\":\"AdWyzeCampaigns\",\"value\":\"AdWyzeCampaigns\"}},{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Product Category\":{\"name\":\"Indya\",\"value\":\"Indya\"}},{\"Image\":{\"name\":\"c9669afe6bcb09e547b4d46f948411a3\",\"value\":\"c9669afe6bcb09e547b4d46f948411a3\"}}],[{\"Image\":{\"name\":\"500b52a144e35e9b27d20819b88088c6\",\"value\":\"500b52a144e35e9b27d20819b88088c6\"}}],[{\"Image\":{\"name\":\"586256cfce4a101a83e952faf174dea4\",\"value\":\"586256cfce4a101a83e952faf174dea4\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Interests\",\"value\":\"Interests\"}},{\"Image\":{\"name\":\"929fad92512d28811db7633c516e0d1c\",\"value\":\"929fad92512d28811db7633c516e0d1c\"}}]],\"metric\":{\"__ndarray__\":\"rkfhepS7pEA9Ctej8KGtQJqZmZmZ859AhetRuB5oqUB7FK5H4fGjQEjhehSueqdAZmZmZmY7rUDhehSuR9KeQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"numerator\":{\"__ndarray__\":\"AAAAAADK8kApXI/CNYXyQI/C9Shs+fBA16NwPSKV7EDXo3A9kmzrQKRwPQqveudAUrgehYvs5UCuR+F6/DnkQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"16NwPQrImUD2KFyPwqGYQFyPwvUoNJlAZmZmZmZBnkAAAAAAAE6YQFK4HoXrDZlAH4XrUbj9mECF61G4Ho2WQA==\",\"dtype\":\"float64\",\"shape\":[8]},\"precision\":{\"__ndarray__\":\"AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw==\",\"dtype\":\"float64\",\"shape\":[8]},\"recall\":{\"__ndarray__\":\"i2zn+6nxsj/jpZvEILCyP/T91HjpJrE/yXa+nxovrT/ZzvdT46WrP6rx0k1iEKg/arx0kxgEpj97FK5H4XqkPw==\",\"dtype\":\"float64\",\"shape\":[8]},\"spend_prop\":{\"__ndarray__\":\"SOF6FK5HF0D2KFyPwvUWQArXo3A9ChVAuB6F61G4EUAAAAAAAAARQB+F61G4Hg1AMzMzMzMzC0AfhetRuB4JQA==\",\"dtype\":\"float64\",\"shape\":[8]}}},\"id\":\"6f230aec-63c6-4367-b1f4-ebd3f2472b98\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},{\"attributes\":{\"columns\":[{\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"},{\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"6f230aec-63c6-4367-b1f4-ebd3f2472b98\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"c8204efa-f3c2-484a-97c6-ccaf7263a4c6\",\"type\":\"DataTable\"},{\"attributes\":{},\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"}],\"root_ids\":[\"c8204efa-f3c2-484a-97c6-ccaf7263a4c6\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"32db2902-48b5-407c-aab7-33fb2f48dd9d\",\"elementid\":\"e7e685bc-d500-4850-95ff-959ac984910e\",\"modelid\":\"c8204efa-f3c2-484a-97c6-ccaf7263a4c6\",\"notebook_comms_target\":\"7e53c946-f3a7-4ec4-bf81-7186c3c59799\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"e7e685bc-d500-4850-95ff-959ac984910e\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Over Valued\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
" <div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"94521f67-ecd8-446a-99c9-8f34b4346b4e\"></div>\n",
" </div>\n",
"<script type=\"text/javascript\">\n",
" \n",
" (function(global) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
" \n",
" var force = false;\n",
" \n",
" if (typeof (window._bokeh_onload_callbacks) === \"undefined\" || force === true) {\n",
" window._bokeh_onload_callbacks = [];\n",
" window._bokeh_is_loading = undefined;\n",
" }\n",
" \n",
" \n",
" \n",
" if (typeof (window._bokeh_timeout) === \"undefined\" || force === true) {\n",
" window._bokeh_timeout = Date.now() + 0;\n",
" window._bokeh_failed_load = false;\n",
" }\n",
" \n",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
" \n",
" function display_loaded() {\n",
" if (window.Bokeh !== undefined) {\n",
" var el = document.getElementById(\"94521f67-ecd8-446a-99c9-8f34b4346b4e\");\n",
" el.textContent = \"BokehJS \" + Bokeh.version + \" successfully loaded.\";\n",
" } else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(display_loaded, 100)\n",
" }\n",
" }if ((window.Jupyter !== undefined) && Jupyter.notebook.kernel) {\n",
" comm_manager = Jupyter.notebook.kernel.comm_manager\n",
" comm_manager.register_target(\"170aa84d-7964-4371-91af-2eb8eb441bf8\", function () {});\n",
" }\n",
" \n",
" function run_callbacks() {\n",
" try {\n",
" window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete window._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
" \n",
" function load_libs(js_urls, callback) {\n",
" window._bokeh_onload_callbacks.push(callback);\n",
" if (window._bokeh_is_loading > 0) {\n",
" console.log(\"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.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" window._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" window._bokeh_is_loading--;\n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"94521f67-ecd8-446a-99c9-8f34b4346b4e\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid '94521f67-ecd8-446a-99c9-8f34b4346b4e' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
" \n",
" var js_urls = [];\n",
" \n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" (function() {\n",
" var fn = function() {\n",
" var docs_json = {\"1aeb4951-e364-4d91-9fc1-7cc726e0d5ea\":{\"roots\":{\"references\":[{\"attributes\":{},\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},\"field\":\"precision\",\"formatter\":{\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},\"title\":\"Precision\"},\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},\"field\":\"recall\",\"formatter\":{\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},\"title\":\"Recall\"},\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},\"field\":\"metric\",\"formatter\":{\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},\"title\":\"ga_fb_cpt\"},\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"0b5d83a0-b6e6-4582-a7f2-9a808dbc6640\",\"type\":\"StringEditor\"},{\"attributes\":{\"editor\":{\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},\"field\":\"level_3\",\"formatter\":{\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},\"title\":\"level 3\"},\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},\"field\":\"level_1\",\"formatter\":{\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},\"title\":\"level 1\"},\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"attributes\":{},\"id\":\"fdc61b1a-e297-4744-b66a-33004e9d4c80\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"c4cb2c1c-bbd8-4b73-982d-83d27c460eed\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"faf8b134-6da2-43b3-950d-0ab60e453c72\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"d992b122-f5db-461d-a670-3a594b6ce902\",\"type\":\"StringEditor\"},\"field\":\"spend_prop\",\"formatter\":{\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},\"title\":\"Spend %\"},\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"f1ac4d5e-ae49-40e4-a459-0e07ebf016d9\",\"type\":\"StringEditor\"},\"field\":\"imp_factor\",\"formatter\":{\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},\"title\":\"MCC\"},\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"},{\"attributes\":{\"editor\":{\"id\":\"ee88c122-3a7d-467c-9527-90a0ff2ffeed\",\"type\":\"StringEditor\"},\"field\":\"level_0\",\"formatter\":{\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},\"title\":\"level 0\"},\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"attributes\":{\"columns\":[{\"id\":\"4133df3a-6fb3-49a0-891e-99cceeef54f7\",\"type\":\"TableColumn\"},{\"id\":\"8723b8b8-b22b-453d-a1cd-9e453d8bf104\",\"type\":\"TableColumn\"},{\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"},{\"id\":\"e5329c23-960d-4cde-8d2a-dc3d460d6cd7\",\"type\":\"TableColumn\"},{\"id\":\"349ad161-8ee5-41aa-9a54-f72c699faeae\",\"type\":\"TableColumn\"},{\"id\":\"eb6c6b0a-9002-4de6-b146-331a68d719c3\",\"type\":\"TableColumn\"},{\"id\":\"f09b0eb7-2216-4841-91e6-cecae083217a\",\"type\":\"TableColumn\"},{\"id\":\"d0234fea-5dd0-4c1f-b5ce-4360bf1b6f42\",\"type\":\"TableColumn\"},{\"id\":\"8541fe24-92d2-4bb4-a068-012c82fd751e\",\"type\":\"TableColumn\"}],\"source\":{\"id\":\"1c5354bf-6233-420f-80d0-2c36c6b7007d\",\"type\":\"ColumnDataSource\"},\"width\":1000},\"id\":\"606696ec-810c-445b-8567-44b0d4a4dbd8\",\"type\":\"DataTable\"},{\"attributes\":{},\"id\":\"fd5a800b-c679-4742-816e-79aa560cb3b6\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"4e44b3bf-7d1f-495c-9162-93287e3a2387\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"95322ddd-f691-4c64-98ef-15e35fd171f3\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"2cdab506-2acd-4d9e-8d19-f0621c270f4a\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"01d9163e-adfe-4cfe-8545-cefa903dc2cf\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"90690b5e-c5d3-4dc2-aae5-6203a07ca301\",\"type\":\"StringFormatter\"},{\"attributes\":{},\"id\":\"89d6c017-5ad6-4c28-83a5-2fd721b2f261\",\"type\":\"StringEditor\"},{\"attributes\":{},\"id\":\"1ed35e31-3b21-4d00-a6de-46e6388422de\",\"type\":\"StringFormatter\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"numerator\",\"metric\",\"recall\",\"precision\",\"level_3\",\"denominator\",\"spend_prop\",\"levels\",\"level_1\",\"imp_factor\",\"index\",\"other_ga_fb_cpt\",\"level_2\",\"level_0\"],\"data\":{\"denominator\":{\"__ndarray__\":\"AAAAAABAU0AAAAAAAABuQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"imp_factor\":{\"__ndarray__\":\"iUFg5dAiuz+iRbbz/dS4Pw==\",\"dtype\":\"float64\",\"shape\":[2]},\"index\":[0,1],\"level_0\":[\"Lookalike Types : 1-2%\",\"Audience Strategy : Prospecting\"],\"level_1\":[\"- : -\",\"Audience Types : Lookalike\"],\"level_2\":[\"- : -\",\"- : -\"],\"level_3\":[\"- : -\",\"- : -\"],\"levels\":[[{\"Lookalike Types\":{\"name\":\"1-2%\",\"value\":\"1-2%\"}}],[{\"Audience Strategy\":{\"name\":\"Prospecting\",\"value\":\"Prospecting\"}},{\"Audience Types\":{\"name\":\"Lookalike\",\"value\":\"Lookalike\"}}]],\"metric\":{\"__ndarray__\":\"hetRuJ4RpkCuR+F6FMyfQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"numerator\":{\"__ndarray__\":\"UrgehTWNCkGamZmZV88dQQ==\",\"dtype\":\"float64\",\"shape\":[2]},\"other_ga_fb_cpt\":{\"__ndarray__\":\"H4XrUbj3mUDNzMzMzE+YQA==\",\"dtype\":\"float64\",\"shape\":[2]},\"precision\":{\"__ndarray__\":\"/tR46SYx7D/jpZvEILDqPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"recall\":{\"__ndarray__\":\"rkfhehSuxz+e76fGSzfZPw==\",\"dtype\":\"float64\",\"shape\":[2]},\"spend_prop\":{\"__ndarray__\":\"9ihcj8J1MEBcj8L1KHxCQA==\",\"dtype\":\"float64\",\"shape\":[2]}}},\"id\":\"1c5354bf-6233-420f-80d0-2c36c6b7007d\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"ea0e29e0-f415-4e4c-9ad9-aa594e1583b9\",\"type\":\"StringFormatter\"},{\"attributes\":{\"editor\":{\"id\":\"83f0197a-9e8b-4ec7-87a8-0befac627a05\",\"type\":\"StringEditor\"},\"field\":\"level_2\",\"formatter\":{\"id\":\"76d6ecc7-1577-4efb-80ac-f43fbba5b62b\",\"type\":\"StringFormatter\"},\"title\":\"level 2\"},\"id\":\"abad24dd-dc24-45f2-a136-a5048c2c76a5\",\"type\":\"TableColumn\"}],\"root_ids\":[\"606696ec-810c-445b-8567-44b0d4a4dbd8\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.6\"}};\n",
" var render_items = [{\"docid\":\"1aeb4951-e364-4d91-9fc1-7cc726e0d5ea\",\"elementid\":\"94521f67-ecd8-446a-99c9-8f34b4346b4e\",\"modelid\":\"606696ec-810c-445b-8567-44b0d4a4dbd8\",\"notebook_comms_target\":\"170aa84d-7964-4371-91af-2eb8eb441bf8\"}];\n",
" \n",
" Bokeh.embed.embed_items(docs_json, render_items);\n",
" };\n",
" if (document.readyState != \"loading\") fn();\n",
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
" })();\n",
" },\n",
" function(Bokeh) {\n",
" }\n",
" ];\n",
" \n",
" function run_inline_js() {\n",
" \n",
" if ((window.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i](window.Bokeh);\n",
" }if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < window._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!window._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" window._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"94521f67-ecd8-446a-99c9-8f34b4346b4e\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
" \n",
" }\n",
" \n",
" if (window._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
" }(this));\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"all_df = df_1.append(df_2, ignore_index=True)\n",
"all_df = all_df.append(df_3, ignore_index=True)\n",
"all_df = all_df.append(df_4, ignore_index=True)\n",
"\n",
"def round_float(s):\n",
" if s.dtype == 'float64':\n",
" s = s.round(3)\n",
" return s\n",
"\n",
"\n",
"avg_spend_prop = float(data['spend_axis'])\n",
"\n",
"tooltips=[\n",
" ('lvl 0:', '@level_0'),\n",
" ('lvl 1:', '@level_1'),\n",
" ('lvl 2:', '@level_2'),\n",
" ('lvl 3:', '@level_3'),\n",
" (args['goal_metric'][\"value\"], '@metric'),\n",
" ('Precision', '@precision'),\n",
" ('Recall', '@recall'),\n",
" ('mcc', '@imp_factor'),\n",
" ('Spend Prop', '@spend_prop')\n",
"]\n",
"\n",
"hover = HoverTool(tooltips=tooltips)\n",
"hover1 = HoverTool(tooltips=tooltips)\n",
"\n",
"def build_bokeh_trace(df_obj, num):\n",
" df_obj = df_obj.copy()\n",
" if len(df_obj):\n",
" df_obj = df_obj.sort_values(by='imp_factor', ascending=False)\n",
" df_plotly = df_obj.iloc[0:num].copy()\n",
" df_plotly['idx'] = df_plotly.index\n",
" df_plotly['size'] = df_plotly['imp_factor']\n",
" # range r1 to r2\n",
" r1=8\n",
" r2=30\n",
" min_r = df_plotly['size'].min()\n",
" max_r = df_plotly['size'].max()\n",
" df_plotly['size'] = ((df_plotly['size'])/ max_r)*20\n",
" df_plotly['overall'] = data['goal_axis']\n",
" df_plotly['overall_spend_prop'] = avg_spend_prop\n",
" else:\n",
" return ColumnDataSource(df_obj)\n",
"\n",
" source = ColumnDataSource(df_plotly)\n",
" return source\n",
"\n",
"spend_source_1 = build_bokeh_trace(df_1, 10)\n",
"spend_source_2 = build_bokeh_trace(df_2, 10)\n",
"spend_source_3 = build_bokeh_trace(df_3, 10)\n",
"spend_source_4 = build_bokeh_trace(df_4, 10)\n",
"\n",
"table_source_1 = ColumnDataSource(df_1.apply(round_float))\n",
"table_source_2 = ColumnDataSource(df_2.apply(round_float))\n",
"table_source_3 = ColumnDataSource(df_3.apply(round_float))\n",
"table_source_4 = ColumnDataSource(df_4.apply(round_float))\n",
"\n",
"columns = [\n",
" TableColumn(field=\"level_0\", title=\"level 0\"),\n",
" TableColumn(field=\"level_1\", title=\"level 1\"),\n",
" TableColumn(field=\"level_2\", title=\"level 2\"),\n",
" TableColumn(field=\"level_3\", title=\"level 3\"),\n",
"# TableColumn(field=\"other_{0}\".format(args['goal_metric'][\"value\"]), title=\"Other {0}\".format(args['goal_metric']['value'])),\n",
" TableColumn(field=\"metric\", title=args['goal_metric'][\"value\"],),\n",
"# TableColumn(field=\"Projected_change\", title=\"Projected % CPT change\"),\n",
" TableColumn(field=\"spend_prop\", title=\"Spend %\"),\n",
"# TableColumn(field=\"imp_factor\", title=\"Impact factor\"),\n",
" TableColumn(field=\"precision\", title=\"Precision\"),\n",
" TableColumn(field=\"recall\", title=\"Recall\"),\n",
" TableColumn(field=\"imp_factor\", title=\"MCC\") \n",
"]\n",
"\n",
"# Spend sorted.\n",
"p1 = figure(plot_width=800, plot_height=500, tools=[hover1],\n",
" title=\"Performance by paths.\")\n",
"p1.xaxis.axis_label = 'Spend Proportion'\n",
"p1.yaxis.axis_label = args['goal_metric'][\"value\"]\n",
"\n",
"if len(df_1):\n",
" prop_plot_1 = p1.circle('spend_prop', 'metric', fill_color='orange', source=spend_source_1, size='size')\n",
"if len(df_2):\n",
" prop_plot_2 = p1.circle('spend_prop', 'metric', fill_color='red', source=spend_source_2, size='size')\n",
"if len(df_3):\n",
" prop_plot_3 = p1.circle('spend_prop', 'metric', fill_color='green', source=spend_source_3, size='size')\n",
"if len(df_4):\n",
" prop_plot_4 = p1.circle('spend_prop', 'metric', fill_color='blue', source=spend_source_4, size='size')\n",
"\n",
"avg_spend = Span(location=avg_spend_prop, dimension='height', line_color='black', line_width=3)\n",
"avg_cpt = Span(location=data['goal_axis'], dimension='width', line_color='black', line_width=3)\n",
"\n",
"p1.add_layout(avg_spend)\n",
"p1.add_layout(avg_cpt)\n",
"\n",
"prop_plot = show(p1, notebook_handle=True)\n",
"\n",
"print('Under Valued')\n",
"if len(df_1):\n",
" data_table_1 = DataTable(source=table_source_1, columns=columns, width=1000)\n",
" table_1 = show(data_table_1, notebook_handle=True)\n",
"\n",
"print('Strategic Wins')\n",
"if len(df_2):\n",
" data_table_2 = DataTable(source=table_source_2, columns=columns, width=1000)\n",
" table_2 = show(data_table_2, notebook_handle=True)\n",
"\n",
"print('Quick Wins')\n",
"if len(df_3):\n",
" data_table_3 = DataTable(source=table_source_3, columns=columns, width=1000)\n",
" table_3 = show(data_table_3, notebook_handle=True)\n",
"\n",
"print('Over Valued')\n",
"if len(df_4):\n",
" data_table_4 = DataTable(source=table_source_4, columns=columns, width=1000)\n",
" table_4 = show(data_table_4, notebook_handle=True)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df_bigger = df[(df['Audience Strategy'] == 'Retention') & (df['Ad Type'] == 'Carousel') & (df['Landing Pages'] == 'www.zivame.com/no-sag-flat-30.html, www.zivame.com')]\n",
"df_bigger.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.figure(figsize=(20,10))\n",
"binwidth = 0.1\n",
"h = hist(df_bigger[goal_metric['value']], weights=df_bigger.fb_spend, bins=pd.np.linspace((min(df_bigger[goal_metric['value']])),\n",
" (max(df_bigger[goal_metric['value']])), 50))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"df_smaller = df[(df['Audience Strategy'] == 'Prospecting') & (df['Product Category'] == 'Shapewear')]\n",
"df_smaller.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.figure(figsize=(20,10))\n",
"binwidth = 0.1\n",
"h = hist(df_smaller[goal_metric['value']], weights=df_smaller.fb_spend, bins=pd.np.linspace((min(df_smaller[goal_metric['value']])),\n",
" (max(df_smaller[goal_metric['value']])), 50))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy.stats import norm\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Fit a normal distribution to the data:\n",
"\n",
"\n",
"mu, std = norm.fit(data, loc = path_model.overall_goal_metric)\n",
"\n",
"# Plot the histogram.\n",
"plt.hist(data, bins=25, normed=True, alpha=0.6, color='g')\n",
"\n",
"# Plot the PDF.\n",
"xmin, xmax = plt.xlim()\n",
"x = np.linspace(xmin, xmax, 100)\n",
"p = norm.pdf(x, mu, std)\n",
"plt.plot(x, p, 'k', linewidth=2)\n",
"title = \"Fit results: mu = %.2f, std = %.2f\" % (mu, std)\n",
"plt.title(title)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"check_threshold*mu"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"check_threshold = std*0.675 / mu"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"positive_df = df[abs(df[goal_metric['value']] - path_model.overall_goal_metric) > check_threshold*path_model.overall_goal_metric] "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"positive_df.fb_spend.sum() / df.fb_spend.sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model.check_threshold"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(0.713 - 0.0181*0.430)/ (1-0.0181)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(0.713 - 0.0189*0.410)/ (1-0.0189)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_model.overall_goal_metric - # + path_model.overall_goal_metric*path_model.check_threshold"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(pd.np.percentile(data, 25) - path_model.overall_goal_metric) / path_model.overall_goal_metric"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(pd.np.percentile(data, 75) - path_model.overall_goal_metric) / path_model.overall_goal_metric"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"pd.np.quant"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.stats import t\n",
"t.fit(data, loc=path_model.overall_goal_metric)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"len([d for d in data if d > 1000])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df.fb_spend.sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [jarvis1]",
"language": "python",
"name": "Python [jarvis1]"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment