{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimus Example"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This Notebook is a simple tutorial about DataFrameTransformer, DataFrameAnalyzer and Utilities modules.\n",
    "\n",
    "- DataFrameTransformer is a dedicated module to easily make dataframe transformations. \n",
    "\n",
    "- DataFrameProfiler is a dedicated module to run a basic profile of the dataframe.\n",
    "\n",
    "- DataFrameAnalyzer is a dedicated module to plot and see important features of a spark\n",
    " Dataframe.\n",
    "\n",
    "- Utilities module contains tool classes that support use of DataFrameTransformer and DataFrameAnalyzer modules. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Importing Modules"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>Starting or getting SparkSession and SparkContext.</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>Setting checkpoint folder (local). If you are in a cluster change it with set_check_point_folder(path,'hadoop').</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Deleting previous folder if exists...\n",
      "Creation of checkpoint directory...\n",
      "Done.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "        <div style=\"margin:10px\">\n",
       "            <a href=\"https://github.com/ironmussa/Optimus\" target=\"_new\">\n",
       "                <img src=\"https://github.com/ironmussa/Optimus/raw/master/images/robotOptimus.png\" style=\"float:left;margin-right:10px;vertical-align:top;text-align:center\" height=\"50\" width=\"50\"/>\n",
       "            </a>\n",
       "            <span><b><h2>Optimus successfully imported. Have fun :).</h2></b></span>\n",
       "        </div>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Import optimus\n",
    "import optimus as op"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Instantiation of Utility class\n",
    "The utility class is a tool class that includes functions to read csv files, setting checkpoint issues (to save or temporally save dataFrames)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Instance of Utilities class\n",
    "tools = op.Utilities()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Reading DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Reading dataframe in this case, local file \n",
    "# system (hard drive of the pc) is used.\n",
    "\n",
    "df = tools.read_csv(path=\"foo.csv\", sep=',')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### General view of DataFrame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Initially it is a good idea to see a general view of the DataFrame to be analyzed. \n",
    "\n",
    "In the following cell, a basic profile of the DataFrame is shown. This overview presents basic information about the DataFrame, like number of variable it has, how many are missing values and in which column, the types of each varaible, also some statistical information that describes the variable plus a frecuency plot. table that specifies the existing datatypes in each column dataFrame and other features. Also, for this particular case, the table of dataType is shown in order to visualize a sample of column content. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<meta charset=\"UTF-8\">\n",
       "\n",
       "<style>\n",
       "        .variablerow {\n",
       "            border: 1px solid #e1e1e8;\n",
       "            border-top: hidden;\n",
       "            padding-top: 2em;\n",
       "            padding-bottom: 1em;\n",
       "            padding-left: 1em;\n",
       "            padding-right: 1em;\n",
       "        }\n",
       "        .headerrow {\n",
       "            border: 1px solid #e1e1e8;\n",
       "            background-color: #f5f5f5;\n",
       "            padding: 2em;\n",
       "        }\n",
       "        .namecol {\n",
       "            margin-top: -1em;\n",
       "        }\n",
       "        .dl-horizontal dt {\n",
       "            text-align: left;\n",
       "            padding-right: 1em;\n",
       "            white-space: normal;\n",
       "        }\n",
       "        .dl-horizontal dd {\n",
       "            margin-left: 0;\n",
       "        }\n",
       "        .ignore {\n",
       "            opacity: 0.4;\n",
       "        }\n",
       "        .container.pandas-profiling {\n",
       "            max-width:975px;\n",
       "        }\n",
       "        .col-md-12 {\n",
       "            padding-left: 2em;\n",
       "        }\n",
       "        .indent {\n",
       "            margin-left: 1em;\n",
       "        }\n",
       "        /* Table example_values */\n",
       "            table.example_values {\n",
       "                border: 0;\n",
       "            }\n",
       "            .example_values th {\n",
       "                border: 0;\n",
       "                padding: 0 ;\n",
       "                color: #555;\n",
       "                font-weight: 600;\n",
       "            }\n",
       "            .example_values tr, .example_values td{\n",
       "                border: 0;\n",
       "                padding: 0;\n",
       "                color: #555;\n",
       "            }\n",
       "        /* STATS */\n",
       "            table.stats {\n",
       "                border: 0;\n",
       "            }\n",
       "            .stats th {\n",
       "                border: 0;\n",
       "                padding: 0 2em 0 0;\n",
       "                color: #555;\n",
       "                font-weight: 600;\n",
       "            }\n",
       "            .stats tr {\n",
       "                border: 0;\n",
       "            }\n",
       "            .stats tr:hover{\n",
       "                text-decoration: underline;\n",
       "            }\n",
       "            .stats td{\n",
       "                color: #555;\n",
       "                padding: 1px;\n",
       "                border: 0;\n",
       "            }\n",
       "        /* Sample table */\n",
       "            table.sample {\n",
       "                border: 0;\n",
       "                margin-bottom: 2em;\n",
       "                margin-left:1em;\n",
       "            }\n",
       "            .sample tr {\n",
       "                border:0;\n",
       "            }\n",
       "            .sample td, .sample th{\n",
       "                padding: 0.5em;\n",
       "                white-space: nowrap;\n",
       "                border: none;\n",
       "            }\n",
       "            .sample thead {\n",
       "                border-top: 0;\n",
       "                border-bottom: 2px solid #ddd;\n",
       "            }\n",
       "            .sample td {\n",
       "                width:100%;\n",
       "            }\n",
       "        /* There is no good solution available to make the divs equal height and then center ... */\n",
       "            .histogram {\n",
       "                margin-top: 3em;\n",
       "            }\n",
       "        /* Freq table */\n",
       "            table.freq {\n",
       "                margin-bottom: 2em;\n",
       "                border: 0;\n",
       "            }\n",
       "            table.freq th, table.freq tr, table.freq td {\n",
       "                border: 0;\n",
       "                padding: 0;\n",
       "            }\n",
       "            .freq thead {\n",
       "                font-weight: 600;\n",
       "                white-space: nowrap;\n",
       "                overflow: hidden;\n",
       "                text-overflow: ellipsis;\n",
       "            }\n",
       "            td.fillremaining{\n",
       "                width:auto;\n",
       "                max-width: none;\n",
       "            }\n",
       "            td.number, th.number {\n",
       "                text-align:right ;\n",
       "            }\n",
       "        /* Freq mini */\n",
       "            .freq.mini td{\n",
       "                width: 50%;\n",
       "                padding: 1px;\n",
       "                font-size: 12px;\n",
       "            }\n",
       "            table.freq.mini {\n",
       "                 width:100%;\n",
       "            }\n",
       "            .freq.mini th {\n",
       "                overflow: hidden;\n",
       "                text-overflow: ellipsis;\n",
       "                white-space: nowrap;\n",
       "                max-width: 5em;\n",
       "                font-weight: 400;\n",
       "                text-align:right;\n",
       "                padding-right: 0.5em;\n",
       "            }\n",
       "            .missing {\n",
       "                color: #a94442;\n",
       "            }\n",
       "            .alert, .alert > th, .alert > td {\n",
       "                color: #a94442;\n",
       "            }\n",
       "        /* Bars in tables */\n",
       "            .freq .bar{\n",
       "                float: left;\n",
       "                width: 0;\n",
       "                height: 100%;\n",
       "                line-height: 20px;\n",
       "                color: #fff;\n",
       "                text-align: center;\n",
       "                background-color: #337ab7;\n",
       "                border-radius: 3px;\n",
       "                margin-right: 4px;\n",
       "            }\n",
       "            .other .bar {\n",
       "                background-color: #999;\n",
       "            }\n",
       "            .missing .bar{\n",
       "                background-color: #a94442;\n",
       "            }\n",
       "            .tooltip-inner {\n",
       "                width: 100%;\n",
       "                white-space: nowrap;\n",
       "                text-align:left;\n",
       "            }\n",
       "            .extrapadding{\n",
       "                padding: 2em;\n",
       "            }\n",
       "</style>\n",
       "\n",
       "<div class=\"container pandas-profiling\">\n",
       "    <div class=\"row headerrow highlight\">\n",
       "        <h1>Overview</h1>\n",
       "    </div>\n",
       "    <div class=\"row variablerow\">\n",
       "    <div class=\"col-md-6 namecol\">\n",
       "        <p class=\"h4\">Dataset info</p>\n",
       "        <table class=\"stats\" style=\"margin-left: 1em;\">\n",
       "            <tbody>\n",
       "            <tr>\n",
       "                <th>Number of variables</th>\n",
       "                <td>8 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Number of observations</th>\n",
       "                <td>19 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Total Missing (%)</th>\n",
       "                <td>0.0% </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Total size in memory</th>\n",
       "                <td>0.0 B </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Average record size in memory</th>\n",
       "                <td>0.0 B </td>\n",
       "            </tr>\n",
       "            </tbody>\n",
       "        </table>\n",
       "    </div>\n",
       "    <div class=\"col-md-6 namecol\">\n",
       "        <p class=\"h4\">Variables types</p>\n",
       "        <table class=\"stats\" style=\"margin-left: 1em;\">\n",
       "            <tbody>\n",
       "            <tr>\n",
       "                <th>Numeric</th>\n",
       "                <td>3 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Categorical</th>\n",
       "                <td>2 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Date</th>\n",
       "                <td>0 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Text (Unique)</th>\n",
       "                <td>3 </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Rejected</th>\n",
       "                <td>0 </td>\n",
       "            </tr>\n",
       "            </tbody>\n",
       "        </table>\n",
       "    </div>\n",
       "    <div class=\"col-md-12\" style=\"padding-left: 1em;\">\n",
       "        <p class=\"h4\">Warnings</p>\n",
       "        <ul class=\"list-unstyled\"> </ul>\n",
       "    </div>\n",
       "</div>\n",
       "    <div class=\"row headerrow highlight\">\n",
       "        <h1>Variables</h1>\n",
       "    </div>\n",
       "    <div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">billingId<br/>\n",
       "            <small>Numeric</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-6\">\n",
       "    <div class=\"row\">\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "                <tr>\n",
       "                    <th>Distinct count</th>\n",
       "                    <td>19</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Unique (%)</th>\n",
       "                    <td>100.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "\n",
       "        </div>\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "\n",
       "                <tr>\n",
       "                    <th>Mean</th>\n",
       "                    <td>556</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Minimum</th>\n",
       "                    <td>111</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Maximum</th>\n",
       "                    <td>992</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Zeros (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "        </div>\n",
       "    </div>\n",
       "</div>\n",
       "<div class=\"col-md-3 collapse in\" id=\"minihistogram4045526885809405107\">\n",
       "    <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABLCAYAAAA1fMjoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAAR1JREFUeJzt28EJAjEQQFEVS7IIe/JsTxZhT/Eu8sGVdYO%2Bdw9MDp%2B5JPsxxtgBLx22HgBmdtx6gGeny%2B3tM/freYVJPrfkLkvMev9fYINAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUCY7j8I6/vWP5UlZvvbYoNAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAiEn3juPvPz7W/49/uvyQaBIBAIAoEgEAgCgSAQCAKBIBAIAoEgEAgCgSAQCAKBIBAIAoGwH2OMrYeAWdkgEAQCQSAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEB5MlBRhvzVi7wAAAABJRU5ErkJggg%3D%3D\">\n",
       "\n",
       "</div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#descriptives4045526885809405107,#minihistogram4045526885809405107\"\n",
       "       aria-expanded=\"false\" aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"row collapse col-md-12\" id=\"descriptives4045526885809405107\">\n",
       "    <div class=\"col-sm-4\">\n",
       "        <p class=\"h4\">Quantile statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Minimum</th>\n",
       "                <td>111</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>5-th percentile</th>\n",
       "                <td>115.5</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q1</th>\n",
       "                <td>373</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Median</th>\n",
       "                <td>553</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q3</th>\n",
       "                <td>773.5</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>95-th percentile</th>\n",
       "                <td>920</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Maximum</th>\n",
       "                <td>992</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Range</th>\n",
       "                <td>881</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Interquartile range</th>\n",
       "                <td>400.5</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "        <p class=\"h4\">Descriptive statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Standard deviation</th>\n",
       "                <td>280.2</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Coef of variation</th>\n",
       "                <td>0.50395</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Kurtosis</th>\n",
       "                <td>-1.0412</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Mean</th>\n",
       "                <td>556</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>MAD</th>\n",
       "                <td>225.05</td>\n",
       "            </tr>\n",
       "            <tr class=\"\">\n",
       "                <th>Skewness</th>\n",
       "                <td>-0.2137</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Sum</th>\n",
       "                <td>10564</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Variance</th>\n",
       "                <td>78511</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Memory size</th>\n",
       "                <td>0.0 B</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "    </div>\n",
       "    <div class=\"col-sm-8 histogram\">\n",
       "        <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAIABJREFUeJzt3Xt01PWd//HXJGPuxk0gwQoeWaAUxBhyEaEGLFkLQdjFwmZz2nIpp9sgtxxXLSCxXIRs1Chw3AiiWS1FFmIpYMEse0Sp/uoNDSQ2RpAQi3IQMtmGjZAbSb6/PzzOcRzAoJ/k%2B53M83FODmc%2B82XmPfkY8nS%2Bk4nLsixLAAAAMCbE7gEAAAB6GwILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMLfdAwQLj%2Bdzu0fotUJCXIqPj9bf/nZenZ2W3eMENfbCOdgL52Av7JWQcLUt98szWAh4ISEuuVwuhYS47B4l6LEXzsFeOAd7EZwILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMOCJrBOnDihX/7yl0pJSdGPfvQjlZSUXPLY6upqZWdnKzk5WdOnT1dVVVUPTgoAAAJdUARWZ2encnNzFRcXp127dmnVqlXauHGj9uzZ43dsU1OTcnNzlZ6erp07dyolJUVz585VU1OTDZMDAIBAFBSBVV9fr%2BHDh2vlypUaOHCgbr/9do0ZM0bl5eV%2Bx5aVlSk8PFyLFy/W4MGDlZ%2Bfr%2BjoaO3bt8%2BGyQEAQCAKisBKTEzU%2BvXrFRMTI8uyVF5ernfffVejRo3yO7ayslJpaWlyub74nVEul0upqamqqKjo6bEBAECActs9QE/LzMzUqVOnNH78eE2cONHveo/HoyFDhvis9enTR8eOHevyfdTV1cnj8fisud1RSkxM/HZD47JCQ0N8/oR92AvnYC%2Bcg70ITkEXWE888YTq6%2Bu1cuVKFRYW6sEHH/S5vrm5WWFhYT5rYWFhamtr6/J9lJaWqri42GdtwYIFysvL%2B/aDX0J6fuCcunyvIKtbbz82NrJbbx9d9017EUj/3Qair36t8XXhHOxFcAm6wEpKSpIktba26v7779fixYt9gio8PNwvptra2hQREdHl%2B8jJyVFmZqbPmtsdpYaG899h8sDXXY8/NDREsbGRamxsVkdHZ7fcB7qGvXCGhobz7IWDsBf2iouLtuV%2BgyKw6uvrVVFRoTvuuMO7NmTIEF24cEHnzp1TfHy8d71fv36qr6/3%2B/tXcnovMTHR73iP53O1twf3F1Z3P/6Ojs6g/xw7BXthr69%2B7tkL52AvgktQnBA%2BefKkFi5cqDNnznjXqqqqFB8f7xNXkpScnKzDhw/LsixJkmVZOnTokJKTk3t0ZgAAELiCIrCSkpI0YsQILVu2TDU1NXrttddUVFSku%2B%2B%2BW9IXL2xvaWmRJGVlZamxsVEFBQWqqalRQUGBmpubNWnSJDsfAgAACCBBEVihoaHasGGDIiMjlZOTo/z8fM2cOVOzZs2SJGVkZKisrEySFBMTo02bNqm8vFzTpk1TZWWlnn76aUVFRdn5EAAAQAAJitdgSV%2B8turrP9n3paNHj/pcvvnmm7Vr166eGAsAAPRCQfEMFgAAQE8isAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwLisA6c%2BaM8vLyNGrUKI0dO1aFhYVqbW296LHz5s3TD37wA5%2BPAwcO9PDEAAAgkLntHqC7WZalvLw8xcbGauvWrfq///s/LVu2TCEhIVqyZInf8cePH1dRUZHGjBnjXbvmmmt6cmQAABDgen1g1dbWqqKiQm%2B88Yb69u0rScrLy9MjjzziF1htbW06efKkkpKSlJCQYMe4AACgF%2Bj1pwgTEhJUUlLijasvnTt3zu/Y2tpauVwuXX/99T01HgAA6IV6/TNYsbGxGjt2rPdyZ2ennn/%2BeY0ePdrv2NraWsXExGjx4sU6ePCgrr32Wi1atEi33377Fd1nXV2dPB6Pz5rbHaXExMRv9yB6Cbe7e3o%2BNDTE50/Yh71wBrc7hL1wEPYiOPX6wPq6oqIiVVdXa8eOHX7X1dbWqqWlRRkZGcrNzdXLL7%2BsefPmqbS0VElJSV2%2Bj9LSUhUXF/usLViwQHl5ed95/kAWFxfdrbcfGxvZrbePrmMv7PXVrzX2wjnYi%2BASVIFVVFSkzZs3a926dRo6dKjf9fPnz9fMmTO9L2ofNmyYPvjgA73wwgtXFFg5OTnKzMz0WXO7o9TQcP67PYAA112PPzQ0RLGxkWpsbFZHR2e33Ae6hr1whoaG8%2ByFg7AX9uru/7m/lKAJrNWrV2vbtm0qKirSxIkTL3pMSEiI308MDho0SDU1NVd0X4mJiX6nAz2ez9XeHtxfWN39%2BDs6OoP%2Bc%2BwU7IW9vvq5Zy%2Bcg70ILkFxQri4uFjbt2/X2rVrNXny5Eset3TpUj3wwAM%2Ba0eOHNGgQYO6e0QAANCL9PrAOn78uDZs2KBf/epXSktLk8fj8X5IksfjUUtLiyQpMzNTe/bs0e7du3XixAkVFxervLxcM2bMsPMhAACAANPrTxG%2B8sor6ujo0MaNG7Vx40af644ePaqMjAwVFhZq2rRpmjBhglasWKGNGzfq1KlT%2Bv73v6%2BSkhINGDDApukBAEAg6vWBlZubq9zc3Etef/ToUZ/L2dnZys7O7u6xAABAL9brTxECAAD0NAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAsKAIrDNnzigvL0%2BjRo3S2LFjVVhYqNbW1oseW11drezsbCUnJ2v69Omqqqrq4WkBAECg6/WBZVmW8vLy1NzcrK1bt2rdunU6cOCA1q9f73dsU1OTcnNzlZ6erp07dyolJUVz585VU1OTDZMDAIBA1esDq7a2VhUVFSosLNT3v/99paenKy8vT3v37vU7tqysTOHh4Vq8eLEGDx6s/Px8RUdHa9%2B%2BfTZMDgAAAlWvD6yEhASVlJSob9%2B%2BPuvnzp3zO7ayslJpaWlyuVySJJfLpdTUVFVUVPTIrAAAoHfo9YEVGxursWPHei93dnbq%2Beef1%2BjRo/2O9Xg8SkxM9Fnr06ePTp8%2B3e1zAgCA3sNt9wA9raioSNXV1dqxY4ffdc3NzQoLC/NZCwsLU1tb2xXdR11dnTwej8%2Ba2x3lF2/Bxu3unp4PDQ3x%2BRP2YS%2Bcwe0OYS8chL0ITkEVWEVFRdq8ebPWrVunoUOH%2Bl0fHh7uF1NtbW2KiIi4ovspLS1VcXGxz9qCBQuUl5d35UP3InFx0d16%2B7Gxkd16%2B%2Bg69sJeX/1ac/pepOfzGld84b2CLLtHMCpoAmv16tXatm2bioqKNHHixIse069fP9XX1/us1dfXX/EzTzk5OcrMzPRZc7uj1NBw/sqG7mW66/GHhoYoNjZSjY3N6ujo7Jb7QNewF87Q0HCevUDA6a7vEd39P/eXEhSBVVxcrO3bt2vt2rXKyrp0IScnJ%2BuZZ56RZVlyuVyyLEuHDh3S3XfffUX3l5iY6BdlHs/nam8P7n/kuvvxd3R0Bv3n2CnYC3t99XPPXiBQ9Lb/Tnv9CeHjx49rw4YN%2BtWvfqW0tDR5PB7vh/TFC9tbWlokSVlZWWpsbFRBQYFqampUUFCg5uZmTZo0yc6HAAAAAkyvD6xXXnlFHR0d2rhxozIyMnw%2BJCkjI0NlZWWSpJiYGG3atEnl5eWaNm2aKisr9fTTTysqKsrOhwAAAAJMrz9FmJubq9zc3Etef/ToUZ/LN998s3bt2tXdYwEAgF6s1z%2BDBQAA0NMILAAAAMMILAAAAMMILAAAAMMcH1jZ2dnavn27Pv/8c7tHAQAA6BLHB9bo0aP11FNPKSMjQ/fee6/%2B/Oc/y7Isu8cCAAC4JMcH1n333acDBw5ow4YNCg0N1aJFi/SjH/1I69at08cff2z3eAAAAH4C4n2wXC6XbrvtNt12221qbm7Wli1btGHDBj399NNKTU3V7NmzNWHCBLvHBAAAkBQggSVJdXV1%2BuMf/6g//vGP%2Buijj5Samqqf/OQnOn36tB588EG9%2B%2B67ys/Pt3tMAAAA5wfWiy%2B%2BqBdffFHvvPOO4uPjddddd%2BmJJ57QwIEDvcd873vfU0FBAYEFAAAcwfGBlZ%2Bfr/Hjx%2BvJJ5/UuHHjFBLi/7KxQYMGacaMGTZMBwAA4M/xgfX6668rLi5OZ8%2Be9cbV%2B%2B%2B/rxEjRig0NFSSlJqaqtTUVDvHBAAA8HL8TxGeO3dOWVlZeuaZZ7xrubm5mjp1qj777DMbJwMAALg4xwfWv//7v%2BuGG27QnDlzvGtlZWX63ve%2Bp8LCQhsnAwAAuDjHB9Z7772npUuXKiEhwbsWHx%2BvxYsX6%2B2337ZxMgAAgItzfGC53W41Njb6rTc3N/OO7gAAwJEcH1jjxo3TmjVr9Mknn3jXPv30UxUWFmrs2LE2TgYAAHBxjv8pwiVLlmjOnDmaOHGiYmNjJUmNjY0aMWKEHnjgAZunAwAA8Of4wOrTp4927dqlN998U8eOHZPb7daQIUM0ZswYuVwuu8cDAADw4/jAkqTQ0FCNHTuWU4IAACAgOD6wPB6P1q9fr0OHDunChQt%2BL2x/5ZVXbJoMAADg4hwfWL/5zW9UVVWlyZMn6%2Bqrr7Z7HAAAgG/k%2BMB6%2B%2B23VVJSovT0dLtHAQAA6BLHv01DVFSU%2BvTpY/cYAAAAXeb4wJo6dapKSkrU0dFh9ygAAABd4vhThGfPntXevXv1pz/9Sddff73CwsJ8rv/d735n02QAAAAX5/jAkqQpU6bYPQIAAECXOT6wCgsL7R4BAADgijj%2BNViSVFdXp%2BLiYt1333363//9X%2B3bt0%2B1tbV2jwUAAHBRjg%2BsEydO6B//8R%2B1a9cu/c///I%2BamppUVlam6dOnq7Ky0u7xAAAA/Dg%2BsB5%2B%2BGHdcccd2r9/v6666ipJ0tq1a5WZmanHHnvM5ukAAAD8OT6wDh06pDlz5vj8Yme326358%2BerurraxskAAAAuzvGB1dnZqc7OTr/18%2BfPKzQ01IaJAAAALs/xgZWRkaFNmzb5RNbZs2dVVFSk0aNH2zgZAADAxTk%2BsJYuXaqqqiplZGSotbVV8%2BbN0/jx43Xy5EktWbLE7vEAAAD8OP59sPr166fdu3dr7969%2BvDDD9XZ2amf/vSnmjp1qmJiYuweDwAAwI/jA0uSIiMjlZ2dbfcYAAAAXeL4wJo1a9Zlr%2Bd3EQIAAKdxfGD179/f53J7e7tOnDihjz76SLNnz7ZpKgAAgEtzfGBd6ncRPvnkkzp9%2BvQV315bW5umTZum3/zmN7r11lsvesy8efP06quv%2Bqw99dRTGj9%2B/BXfHwAACD6OD6xLmTp1qu666y6tXr26y3%2BntbVV9913n44dO3bZ444fP66ioiKNGTPGu3bNNdd861kBAEBwCdjAOnz48BW90WhNTY3uu%2B8%2BWZZ12ePa2tp08uRJJSUlKSEh4buOCQAAgpDjA%2BtiL3I/d%2B6cjh49qp/97Gddvp2DBw/q1ltv1b/9279p5MiRlzyutrZWLpdL119//beaFwAAwPGBdd111/n8HkJJuuqqqzRjxgz90z/9U5dvp6sxVltbq5iYGC1evFgHDx7Utddeq0WLFun222%2B/orkBAEDwcnxgPfzwwz16f7W1tWppaVFGRoZyc3P18ssva968eSotLVVSUlKXbqOurk4ej8dnze2OUmJiYneMHDDc7u75xQGhoSE%2Bf8I%2B7IUzuN0h7AUCTnd9j7CL4wPr3Xff7fKxt9xyy3e%2Bv/nz52vmzJneF7UPGzZMH3zwgV544YUuB1ZpaamKi4t91hYsWKC8vLzvPF8gi4uL7tbbj42N7NbbR9exF/b66tcae4FA0d3fI3qa4wNr5syZ3lOEX32B%2BtfXXC6XPvzww%2B98fyEhIX4/MTho0CDV1NR0%2BTZycnKUmZnps%2BZ2R6mh4fx3ni%2BQddfjDw0NUWxspBobm9XR0fnNfwHdhr1whoaG8%2BwFAk53fY%2BwK9wcH1hPPfWU1qxZo1//%2BtcaNWqUwsLC9Je//EUPPfSQfvKTn%2BjOO%2B80en9Lly6Vy%2BXyef%2BtI0eOaOjQoV2%2BjcTERL/TgR7P52pvD%2B5/5Lr78Xd0dAb959gp2At7ffVzz14gUPS2/04df8KzsLBQy5cv18SJExUXF6fo6GiNHj1aDz30kLZt26b%2B/ft7P74tj8ejlpYWSVJmZqb27Nmj3bt368SJEyouLlZ5eblmzJhh6iEBAIBezvGBVVdXd9F4iomJUUNDg5H7yMjIUFlZmSRpwoQJWrFihTZu3KgpU6bo1VdfVUlJiQYMGGDkvgAAQO/n%2BFOEI0eO1Nq1a/XII48oJiZGknT27Fm/d1q/EkePHr3s5ezsbGVnZ3%2B7gQEAQNBzfGA9%2BOCDmjVrlsaNG6eBAwfKsiz99a9/VUJCgn73u9/ZPR4AAIAfxwfW4MGDVVZWpr179%2Br48eOSpJ///OeaPHmyIiP58WMAAOA8jg8s6YtftJydna2TJ096f4XNVVddZfNUAAAAF%2Bf4F7lblqXHHntMt9xyi6ZMmaLTp09ryZIlys/P14ULF%2BweDwAAwI/jA2vLli168cUXtWLFCoWFhUmS7rjjDu3fv9/v3dIBAACcwPGBVVpaquXLl2vatGned2%2B/8847tWbNGu3Zs8fm6QAAAPw5PrBOnjyp4cOH%2B60PGzbM7xcqAwAAOIHjA6t///76y1/%2B4rf%2B%2Buuve1/wDgAA4CSO/ynCX/7yl1q1apU8Ho8sy9Jbb72l0tJSbdmyRUuXLrV7PAAAAD%2BOD6zp06ervb1dGzduVEtLi5YvX674%2BHjdc889%2BulPf2r3eAAAAH4cH1h79%2B5VVlaWcnJy9Le//U2WZalPnz52jwUAAHBJjn8N1kMPPeR9MXt8fDxxBQAAHM/xgTVw4EB99NFHdo8BAADQZY4/RThs2DDdf//9Kikp0cCBAxUeHu5zfWFhoU2TAQAAXJzjA%2Bvjjz9WWlqaJPG%2BVwAAICA4MrAeffRRLVy4UFFRUdqyZYvd4wAAAFwRR74G67nnnlNzc7PPWm5ururq6myaCAAAoOscGViWZfmtvfvuu2ptbbVhGgAAgCvjyMACAAAIZAQWAACAYY4NLJfLZfcIAAAA34ojf4pQktasWePznlcXLlxQUVGRoqOjfY7jfbAAAIDTODKwbrnlFr/3vEpJSVFDQ4MaGhpsmgoAAKBrHBlYvPcVAAAIZI59DRYAAECgIrAAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMI7AAAAAMC7rAamtr05QpU/TOO%2B9c8pjq6mplZ2crOTlZ06dPV1VVVQ9OCAAAAl1QBVZra6vuvfdeHTt27JLHNDU1KTc3V%2Bnp6dq5c6dSUlI0d%2B5cNTU19eCkAAAgkAVNYNXU1Ohf/uVf9Mknn1z2uLKyMoWHh2vx4sUaPHiw8vPzFR0drX379vXQpAAAINAFTWAdPHhQt956q0pLSy97XGVlpdLS0uRyuSRJLpdLqampqqio6IkxAQBAL%2BC2e4Ce8rOf/axLx3k8Hg0ZMsRnrU%2BfPpc9rfh1dXV18ng8Pmtud5QSExO7fBu9kdvdPT0fGhri8yfsw144g9sdwl4g4HTX9wi7BE1gdVVzc7PCwsJ81sLCwtTW1tbl2ygtLVVxcbHP2oIFC5SXl2dkxkD148f%2Bn90jAEGBrzUEori4aLtHMIrA%2Bprw8HC/mGpra1NERESXbyMnJ0eZmZk%2Ba253lBoazhuZEQCA3qa7vkfaFW4E1tf069dP9fX1Pmv19fVXdHovMTHR73iP53O1t3camREAgN6mt32P7F0nPA1ITk7W4cOHZVmWJMmyLB06dEjJyck2TwYAAAIFgaUvXtje0tIiScrKylJjY6MKCgpUU1OjgoICNTc3a9KkSTZPCQAAAgWBJSkjI0NlZWWSpJiYGG3atEnl5eWaNm2aKisr9fTTTysqKsrmKQEAQKBwWV%2BeC0O38ng%2B75bbnbT%2BjW65XQAAetJ/33Nbt9xuQsLV3XK734RnsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwLmsBqbW3VsmXLlJ6eroyMDD377LOXPHbevHn6wQ9%2B4PNx4MCBHpwWAAAEMrfdA/SURx99VFVVVdq8ebNOnTqlJUuW6LrrrlNWVpbfscePH1dRUZHGjBnjXbvmmmt6clwAABDAgiKwmpqa9Pvf/17PPPOMRowYoREjRujYsWPaunWrX2C1tbXp5MmTSkpKUkJCgk0TAwCAQBYUpwiPHDmi9vZ2paSkeNfS0tJUWVmpzs5On2Nra2vlcrl0/fXX9/SYAACglwiKZ7A8Ho/i4uIUFhbmXevbt69aW1t19uxZxcfHe9dra2sVExOjxYsX6%2BDBg7r22mu1aNEi3X777V2%2Bv7q6Onk8Hp81tztKiYmJ3/3BAADQC7ndves5n6AIrObmZp%2B4kuS93NbW5rNeW1urlpYWZWRkKDc3Vy%2B//LLmzZun0tJSJSUlden%2BSktLVVxc7LO2YMEC5eXlfYdHAQBA7xUXF233CEYFRWCFh4f7hdSXlyMiInzW58%2Bfr5kzZ3pf1D5s2DB98MEHeuGFF7ocWDk5OcrMzPRZc7uj1NBw/ts%2BBAAAerXu%2Bh5pV7gFRWD169dPDQ0Nam9vl9v9xUP2eDyKiIhQbGysz7EhISF%2BPzE4aNAg1dTUdPn%2BEhMT/U4Hejyfq7298xJ/AwCA4Nbbvkf2rhOelzB8%2BHC53W5VVFR418rLy5WUlKSQEN9PwdKlS/XAAw/4rB05ckSDBg3qkVkBAEDgC4rAioyM1F133aWVK1fq/fff1/79%2B/Xss89q1qxZkr54NqulpUWSlJmZqT179mj37t06ceKEiouLVV5erhkzZtj5EAAAQAAJisCSpAceeEAjRozQ7NmztWrVKi1atEgTJkyQJGVkZKisrEySNGHCBK1YsUIbN27UlClT9Oqrr6qkpEQDBgywc3wAABBAXJZlWXYPEQw8ns%2B75XYnrX%2BjW24XAICe9N/33NYtt5uQcHW33O43CZpnsAAAAHoKgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGBY0ARWa2urli1bpvT0dGVkZOjZZ5%2B95LHV1dXKzs5WcnKypk%2Bfrqqqqh6cFAAABLqgCaxHH31UVVVV2rx5s1asWKHi4mLt27fP77impibl5uYqPT1dO3fuVEpKiubOnaumpiYbpgYAAIEoKAKrqalJv//975Wfn68RI0boxz/%2Bsf71X/9VW7du9Tu2rKxM4eHhWrx4sQYPHqz8/HxFR0dfNMYAAAAuJigC68iRI2pvb1dKSop3LS0tTZWVlers7PQ5trKyUmlpaXK5XJIkl8ul1NRUVVRU9OjMAAAgcLntHqAneDwexcXFKSwszLvWt29ftba26uzZs4qPj/c5dsiQIT5/v0%2BfPjp27FiX76%2Burk4ej8dnze2OUmJi4rd8BAAA9G5ud%2B96zicoAqu5udknriR5L7e1tXXp2K8fdzmlpaUqLi72WVu4cKEWLVp0JWN3yXsFWcZvM9DU1dWptLRUOTk5RKzN2AvnYC%2Bcg70ITkERWOHh4X6B9OXliIiILh379eMuJycnR5mZmT5rCQkJVzIyroDH41FxcbEyMzP5x8tm7IVzsBfOwV4Ep6AIrH79%2BqmhoUHt7e1yu794yB6PRxEREYqNjfU7tr6%2B3metvr4DzTBcAAAHWUlEQVT%2Bir4oEhMT%2BSICACCI9a4TnpcwfPhwud1unxeql5eXKykpSSEhvp%2BC5ORkHT58WJZlSZIsy9KhQ4eUnJzcozMDAIDAFRSBFRkZqbvuuksrV67U%2B%2B%2B/r/379%2BvZZ5/VrFmzJH3xbFZLS4skKSsrS42NjSooKFBNTY0KCgrU3NysSZMm2fkQAABAAAlduXLlSruH6AmjR49WdXW1Hn/8cb311lu6%2B%2B67NX36dElSamqqbrjhBg0fPlxhYWEaNWqU/uu//ktPPfWU2tvbtXbtWl133XU2PwJcTnR0tEaNGqXo6Gi7Rwl67IVzsBfOwV4EH5f15bkwAAAAGBEUpwgBAAB6EoEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFRztz5ozy8vI0atQojR07VoWFhWptbZUkffrpp/rFL36hkSNH6s4779Sf//xnn7/75ptvasqUKUpOTtasWbP06aef2vEQep3c3FwtXbrUe5l96HltbW1atWqVbrnlFv3whz/U2rVrvb8/lf3oWZ999pnmzp2r1NRUZWZm6re//a33OvYiuBFYcCzLspSXl6fm5mZt3bpV69at04EDB7R%2B/XpZlqUFCxaob9%2B%2B%2BsMf/qCpU6dq4cKFOnXqlCTp1KlTWrBggaZNm6YdO3YoPj5e8%2BfPF7%2B44Lt56aWX9Nprr3kvsw/2WLNmjd58803953/%2Bpx5//HG98MILKi0tZT9scM899ygqKko7d%2B7UsmXLtH79er388svsBSQLcKiamhpr6NChlsfj8a7t2bPHysjIsN58801r5MiR1vnz573XzZ4923riiScsy7Ks9evXWzNmzPBe19TUZKWkpFhvv/12zz2AXqahocEaN26cNX36dGvJkiWWZVnsgw0aGhqsG2%2B80XrnnXe8a5s2bbKWLl3KfvSws2fPWkOHDrWOHj3qXVu4cKG1atUq9gIWz2DBsRISElRSUqK%2Bffv6rJ87d06VlZW68cYbFRUV5V1PS0tTRUWFJKmyslLp6ene6yIjIzVixAjv9bhyjzzyiKZOnaohQ4Z419iHnldeXq6YmBiNGjXKu5abm6vCwkL2o4dFREQoMjJSO3fu1IULF1RbW6tDhw5p%2BPDh7AU4RQjnio2N1dixY72XOzs79fzzz2v06NHyeDxKTEz0Ob5Pnz46ffq0JH3j9bgyb731lt577z3Nnz/fZ5196Hmffvqp%2Bvfvr927dysrK0v/8A//oCeffFKdnZ3sRw8LDw/X8uXLVVpaquTkZE2aNEnjxo1TdnY2ewG57R4A6KqioiJVV1drx44d%2Bu1vf6uwsDCf68PCwtTW1iZJam5uvuz16LrW1latWLFCy5cvV0REhM913/R5Zh/Ma2pq0okTJ7R9%2B3YVFhbK4/Fo%2BfLlioyMZD9scPz4cY0fP15z5szRsWPHtHr1ao0ZM4a9AIGFwFBUVKTNmzdr3bp1Gjp0qMLDw3X27FmfY9ra2rwBEB4e7vcPVVtbm2JjY3ts5t6iuLhYN910k8%2BziV9iH3qe2%2B3WuXPn9Pjjj6t///6SvnjB9LZt2/TDH/6Q/ehBb731lnbs2KHXXntNERERSkpK0pkzZ7Rx40aNHj2avQhynCKE461evVrPPfecioqKNHHiRElSv379VF9f73NcfX299yn3S12fkJDQM0P3Ii%2B99JL279%2BvlJQUpaSkaM%2BePdqzZ49SUlLYBxskJCQoPDzcG1eS9Pd///f67LPP2I8eVlVVpRtuuMHnmd0bb7xRp06dYi9AYMHZiouLtX37dq1du1aTJ0/2ricnJ%2BuDDz5QS0uLd628vFzJycne68vLy73XNTc3q7q62ns9um7Lli3as2ePdu/erd27dyszM1OZmZnavXs3%2B2CD5ORktba26uOPP/au1dbWqn///uxHD0tMTNSJEyd8nomqra3VgAED2AsodOXKlSvtHgK4mOPHj%2Bvee%2B9Vbm6uJk6cqKamJu/HkCFDtHfvXlVUVGjw4MH6wx/%2BoJdeekkFBQW6%2BuqrNWDAAD322GMKDQ1VbGysCgsL1dHRofvvv18ul8vuhxZQYmNj9Xd/93fej9dff11hYWH653/%2BZ1133XXsQw%2BLi4tTVVWVXnrpJd1000368MMP9fDDD2vOnDmaNGkS%2B9GD%2Bvfvr23btunYsWMaMmSIDh8%2BrEceeURz587VhAkT2ItgZ/f7RACXsmnTJmvo0KEX/bAsy/rrX/9q/fznP7duuukma/LkydYbb7zh8/f/9Kc/WRMmTLBuvvlma/bs2dYnn3xix8PodZYsWeJ9HyzLYh/s0NjYaP3617%2B2Ro4caY0ZM8b6j//4D6uzs9OyLPajpx07dsz6xS9%2BYaWmplp33HGH9dxzz7EXsCzLslyWxdvGAgAAmMRrsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAwjsAAAAAz7/9A%2BN9BQ3pGXAAAAAElFTkSuQmCC\">\n",
       "    </div>\n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">birth<br/>\n",
       "            <small>Categorical, Unique</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-3 collapse in\" id=\"minivalues2919009344056767353\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>First 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1990/07/11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1899/01/01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1990/07/09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-6 collapse in\" id=\"minivalues2919009344056767353\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Last 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1954/07/10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1994/01/04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1920/04/22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#values2919009344056767353,#minivalues2919009344056767353\" aria-expanded=\"false\"\n",
       "       aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"col-md-12 collapse\" id=\"values2919009344056767353\">\n",
       "    <p class=\"h4\">First 20 values</p>\n",
       "    <table border=\"1\" class=\"dataframe sample table table-hover\">\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1990/07/11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1899/01/01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1990/07/09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1999/02/15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1921/05/03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1956/11/30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1950/07/08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1930/08/12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1958/03/26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1923/03/12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1950/07/14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2000/03/22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1980/07/07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1970/07/13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1993/12/08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1997/06/27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1954/07/10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1994/01/04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1920/04/22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "    <p class=\"h4\">Last 20 values</p>\n",
       "    \n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">dummyCol<br/>\n",
       "            <small>Categorical</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-3\">\n",
       "    <table class=\"stats \">\n",
       "        <tr class=\"\">\n",
       "            <th>Distinct count</th>\n",
       "            <td>13</td>\n",
       "        </tr>\n",
       "        <tr>\n",
       "            <th>Unique (%)</th>\n",
       "            <td>68.4%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Missing (%)</th>\n",
       "            <td>0.0%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Missing (n)</th>\n",
       "            <td>0</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Infinite (%)</th>\n",
       "            <td>0.0%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Infinite (n)</th>\n",
       "            <td>0</td>\n",
       "        </tr>\n",
       "    </table>\n",
       "</div>\n",
       "<div class=\"col-md-6 collapse in\" id=\"minifreqtable-1260544103559101310\">\n",
       "    <table class=\"mini freq\">\n",
       "        <tr class=\"\">\n",
       "    <th>you</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:27%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 15.8%\">\n",
       "            3\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> <tr class=\"\">\n",
       "    <th>gonna</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:27%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 15.8%\">\n",
       "            3\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> <tr class=\"\">\n",
       "    <th>never</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:19%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 10.5%\">\n",
       "            &nbsp;\n",
       "        </div>\n",
       "        2\n",
       "    </td>\n",
       "</tr> <tr class=\"other\">\n",
       "    <th>Other values (10)</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:100%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 57.9%\">\n",
       "            11\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> \n",
       "    </table>\n",
       "</div> \n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#freqtable-1260544103559101310, #minifreqtable-1260544103559101310\"\n",
       "       aria-expanded=\"true\" aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"col-md-12 collapse extrapadding\" id=\"freqtable-1260544103559101310\">\n",
       "    <table class=\"freq table table-hover\">\n",
       "        <thead>\n",
       "        <tr>\n",
       "            <td class=\"fillremaining\">Value</td>\n",
       "            <td class=\"number\">Count</td>\n",
       "            <td class=\"number\">Frequency (%)</td>\n",
       "            <td style=\"min-width:200px\">&nbsp;</td>\n",
       "        </tr>\n",
       "        </thead>\n",
       "        <tr class=\"\">\n",
       "        <td class=\"fillremaining\">you</td>\n",
       "        <td class=\"number\">3</td>\n",
       "        <td class=\"number\">15.8%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:100%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">gonna</td>\n",
       "        <td class=\"number\">3</td>\n",
       "        <td class=\"number\">15.8%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:100%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">never</td>\n",
       "        <td class=\"number\">2</td>\n",
       "        <td class=\"number\">10.5%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:67%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">#</td>\n",
       "        <td class=\"number\">2</td>\n",
       "        <td class=\"number\">10.5%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:67%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">never </td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">down</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">run </td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">desert</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">up</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">and</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">around</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">let</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">give</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:34%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> \n",
       "    </table>\n",
       "</div> \n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">firstName<br/>\n",
       "            <small>Categorical, Unique</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-3 collapse in\" id=\"minivalues6589813866731542545\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>First 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Luis</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Arthur</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>JAMES</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-6 collapse in\" id=\"minivalues6589813866731542545\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Last 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>NiELS</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>JaMES</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Fred</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#values6589813866731542545,#minivalues6589813866731542545\" aria-expanded=\"false\"\n",
       "       aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"col-md-12 collapse\" id=\"values6589813866731542545\">\n",
       "    <p class=\"h4\">First 20 values</p>\n",
       "    <table border=\"1\" class=\"dataframe sample table table-hover\">\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Luis</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Arthur</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>JAMES</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>William</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Marie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>(((   Heinrich )))))</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>PAUL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>CaRL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Isaac</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Johannes</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Galileo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>André</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Emmy%%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Albert</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>David</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Max!!!</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>NiELS</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>JaMES</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Fred</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "    <p class=\"h4\">Last 20 values</p>\n",
       "    \n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">id<br/>\n",
       "            <small>Numeric</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-6\">\n",
       "    <div class=\"row\">\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "                <tr>\n",
       "                    <th>Distinct count</th>\n",
       "                    <td>19</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Unique (%)</th>\n",
       "                    <td>100.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "\n",
       "        </div>\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "\n",
       "                <tr>\n",
       "                    <th>Mean</th>\n",
       "                    <td>10</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Minimum</th>\n",
       "                    <td>1</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Maximum</th>\n",
       "                    <td>19</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Zeros (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "        </div>\n",
       "    </div>\n",
       "</div>\n",
       "<div class=\"col-md-3 collapse in\" id=\"minihistogram5730231854025664727\">\n",
       "    <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABLCAYAAAA1fMjoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAARBJREFUeJzt3MEJAjEQQFFXLMki7MmzPVmEPcW7yAcXJcv63j0wCXzmlmWMMQ7AW8fZA8CWnWYP8Op8vc8e4Wset8vHZ/Z0/zXWvNkv2SAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEAQCQSAQBAJBIBAEAkEgEDb3L9ae/PsfV3tgg0AQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIhGWMMWYPAVtlg0AQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUB4Ak95D/jqZxT/AAAAAElFTkSuQmCC\">\n",
       "\n",
       "</div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#descriptives5730231854025664727,#minihistogram5730231854025664727\"\n",
       "       aria-expanded=\"false\" aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"row collapse col-md-12\" id=\"descriptives5730231854025664727\">\n",
       "    <div class=\"col-sm-4\">\n",
       "        <p class=\"h4\">Quantile statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Minimum</th>\n",
       "                <td>1</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>5-th percentile</th>\n",
       "                <td>1.9</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q1</th>\n",
       "                <td>5.5</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Median</th>\n",
       "                <td>10</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q3</th>\n",
       "                <td>14.5</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>95-th percentile</th>\n",
       "                <td>18.1</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Maximum</th>\n",
       "                <td>19</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Range</th>\n",
       "                <td>18</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Interquartile range</th>\n",
       "                <td>9</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "        <p class=\"h4\">Descriptive statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Standard deviation</th>\n",
       "                <td>5.6273</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Coef of variation</th>\n",
       "                <td>0.56273</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Kurtosis</th>\n",
       "                <td>-1.2067</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Mean</th>\n",
       "                <td>10</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>MAD</th>\n",
       "                <td>4.7368</td>\n",
       "            </tr>\n",
       "            <tr class=\"\">\n",
       "                <th>Skewness</th>\n",
       "                <td>0</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Sum</th>\n",
       "                <td>190</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Variance</th>\n",
       "                <td>31.667</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Memory size</th>\n",
       "                <td>0.0 B</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "    </div>\n",
       "    <div class=\"col-sm-8 histogram\">\n",
       "        <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAIABJREFUeJzt3Xt0VOW9//HPJNPcCQZIuC8VFMLBnBgShR6CwQgCVWqIRYoFBAtYCKSWlHCrFVEaD1BvRMtNuhDUxlgqNaJULPVWBRskiJiaCwIWSCYSCORKkv37gx9zHCaBADvZZPJ%2BrZUF8%2Bxnnvk%2B69kz81l77%2BzYDMMwBAAAANN4WV0AAACApyFgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDK71QW0FQ7HKVPG8fKyqUOHQB0/Xq76esOUMa92zNnz59zW5iu1vTm3tflKzPlqmXNoaDtLXpcjWK2Ml5dNNptNXl42q0tpMczZ87W1%2BUptb85tbb4Sc27rCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMk8JmAVFRUpOTlZt956q4YMGaK0tDRVV1c32Hf//v0aO3asIiMjde%2B992rfvn0u27OysjRs2DBFRkYqKSlJx48fb4kpAAAAD%2BERAcswDCUnJ6uyslIvv/yynn76ae3YsUPPPPOMW9%2BKigpNnz5dMTEx2rx5s6KiovTQQw%2BpoqJCkrR3714tWrRIs2bNUkZGhsrKyrRgwYKWnhIAAGjFPCJgFRYWas%2BePUpLS9ONN96omJgYJScnKysry63v1q1b5evrq9TUVPXu3VuLFi1SYGCg3nnnHUnSpk2bNGrUKCUkJCg8PFzLli3T%2B%2B%2B/r8OHD7f0tAAAQCvlEQErNDRU69atU6dOnVzaT58%2B7dY3JydH0dHRstnO/p0km82mAQMGaM%2BePc7tMTExzv5du3ZVt27dlJOT04wzAAAAnsRudQFmCA4O1pAhQ5yP6%2BvrtWnTJg0aNMitr8Ph0A033ODS1rFjR%2BXl5UmSiouLFRYW5rb92LFjTa6nuLhYDofDpc1uD3Ab93J4e3u5/NsWMGfP19bmK7W9Obe1%2BUrMua3ziIB1vuXLl2v//v16/fXX3bZVVlbKx8fHpc3Hx0c1NTWSpKqqqgtub4qMjAylp6e7tCUlJSk5ObnJY1xMcLC/JClm0TumjQm0lH8tHdlg%2B7n9%2BmrD%2Bwxofo19LrRWHhewli9frg0bNujpp59Wnz593Lb7%2Bvq6haWamhr5%2BfldcLu/f9M/%2BMeNG6f4%2BHiXNrs9QKWl5U0eozHe3l4KDvZXWVml6urqr3g8wArnvxfYrwGY8R3ZkJCQwGYZ92I8KmA9/vjjevXVV7V8%2BXKNGDGiwT6dO3dWSUmJS1tJSYnz9F1j20NDQ5tcR1hYmNvpQIfjlGprzfviqKurN3U8oCU1tu%2ByXwNtl6e99z3mJGl6err%2B9Kc/6amnntJdd93VaL/IyEh9/vnnMgxD0tlbPOzevVuRkZHO7dnZ2c7%2BR48e1dGjR53bAQAALsYjAlZBQYFeeOEFTZs2TdHR0XI4HM4f6eyF7VVVVZKkkSNHqqysTEuXLlV%2Bfr6WLl2qyspKjRo1SpI0fvx4bdmyRZmZmcrNzVVqaqqGDh2qnj17WjY/AADQunhEwHrvvfdUV1enP/zhD4qNjXX5kaTY2Fht3bpVkhQUFKTVq1crOztbiYmJysnJ0Zo1axQQECBJioqK0pIlS/T8889r/Pjxat%2B%2BvdLS0iybGwAAaH1sxrlzZWhWDscpU8ax270UEhKo0tJy1dbWa9QzH5syLtCS3n54sMvj8/frqw3vM6D5nf%2B5YJbQ0HbNMu7FeMQRLAAAgKsJAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkdqsLMFtNTY0SExP1yCOPaODAgW7bJ06cqF27drm1JyYmKi0tTZIUExOjU6dOuWzfvXu3AgMDm6doAADgUTwqYFVXVyslJUV5eXmN9lm5cqXOnDnjfJyTk6OHH35Y999/vySpqKhIp06d0vbt2%2BXn5%2BfsFxAQ0HyFAwAAj%2BIxASs/P18pKSkyDOOC/a655hrn/%2Bvq6vT0009r6tSpioiIkCQVFBQoNDRUPXv2bNZ6AQCA5/KYa7B27dqlgQMHKiMjo8nP2bx5s06ePKlp06Y52/Lz83X99dc3R4kAAKCN8JgjWOdO8TWVYRhat26dJk2a5HJtVUFBgSorKzVx4kQdOHBA/fr108KFCy8pdBUXF8vhcLi02e0BCgsLu6QaG%2BLt7eXyL9Aa2e2u%2By/7NYDzPxdaO48JWJdq586dOnbsmO677z6X9sLCQp08eVJz5sxRUFCQ1q5dq8mTJ%2Butt95SUFBQk8bOyMhQenq6S1tSUpKSk5NNqz842N%2B0sYCWFhLS8C%2BMsF8DbVdjnwutVZsNWNu2bdNtt93mck2WJL344os6c%2BaM86jWihUrFBcXpx07dmj06NFNGnvcuHGKj493abPbA1RaWn7FdXt7eyk42F9lZZWqq6u/4vEAK5z/XmC/BmDGd2RDrApubTZgffjhh5o1a5Zbu4%2BPj3x8fJyPfX191aNHDxUVFTV57LCwMLfTgQ7HKdXWmvfFUVdXb%2Bp4QEtqbN9lvwbaLk9773vWCc8mOn78uA4fPqzo6GiXdsMwNGzYMG3evNnZVlFRoYMHD6pXr14tXSYAAGil2sQRLIfDoXbt2jnva5WXl%2Bc8MvV9NptNQ4cO1cqVK9W9e3d16NBBzz77rLp06aK4uDgrSgcAAK1QmziCFRsbq61btzoff/fddwoODpbNZnPrO3fuXI0YMUIpKSkaO3asamtrtWbNGnl7e7dkyQAAoBWzGRe7MydM4XCcuninJrDbvRQSEqjS0nLV1tZr1DMfmzIu0JLefniwy%2BPz9%2BurDe8zoPmd/7lgltDQds0y7sW0iSNYAAAALYmABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDKPC1g1NTW6%2B%2B67tXPnzkb7zJgxQ3379nX52bFjh3N7VlaWhg0bpsjISCUlJen48eMtUToAAPAQHhWwqqurNWfOHOXl5V2wX0FBgZYvX66PPvrI%2BTN48GBJ0t69e7Vo0SLNmjVLGRkZKisr04IFC1qifAAA4CHsVhdglvz8fKWkpMgwjAv2q6mp0bfffquIiAiFhoa6bd%2B0aZNGjRqlhIQESdKyZct0%2B%2B236/Dhw%2BrZs2ez1A4AADyLxxzB2rVrlwYOHKiMjIwL9issLJTNZms0LOXk5CgmJsb5uGvXrurWrZtycnJMrRcAAHgujzmCdf/99zepX2FhoYKCgpSamqpdu3apS5cumj17tuLi4iRJxcXFCgsLc3lOx44ddezYsSbXUlxcLIfD4dJmtwe4jXs5vL29XP4FWiO73XX/Zb8GcP7nQmvnMQGrqQoLC1VVVaXY2FhNnz5d7777rmbMmKGMjAxFRESoqqpKPj4%2BLs/x8fFRTU1Nk18jIyND6enpLm1JSUlKTk42ZQ6SFBzsb9pYQEsLCQlssJ39Gmi7GvtcaK3aXMCaOXOmJk6cqPbt20uSwsPD9eWXX%2Bq1115TRESEfH193cJUTU2N/P2b/sE/btw4xcfHu7TZ7QEqLS2/4vq9vb0UHOyvsrJK1dXVX/F4gBXOfy%2BwXwMw4zuyIVYFtzYXsLy8vJzh6pxevXopPz9fktS5c2eVlJS4bC8pKWnwgvjGhIWFuZ0OdDhOqbbWvC%2BOurp6U8cDWlJj%2By77NdB2edp737NOeDbB/Pnz3W67kJubq169ekmSIiMjlZ2d7dx29OhRHT16VJGRkS1aJwAAaL3aRMByOByqqqqSJMXHx%2BvNN9/UG2%2B8oYMHDyo9PV3Z2dmaMGGCJGn8%2BPHasmWLMjMzlZubq9TUVA0dOpRbNAAAgCZrEwErNjZWW7dulSTdeeedevTRR/WHP/xBd999t/7%2B979r3bp16tGjhyQpKipKS5Ys0fPPP6/x48erffv2SktLs7J8AADQynjkNVj//ve/L/h47NixGjt2bKPPT0xMVGJiYrPUBgAAPF%2BbOIIFAADQkghYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJvO4gFVTU6O7775bO3fubLTPP/7xD91zzz2KiorS6NGj9d5777lsj4mJUd%2B%2BfV1%2BysvLm7t0AADgIexWF2Cm6upqpaSkKC8vr9E%2Bubm5mjVrllJTUxUXF6ePPvpIv/zlL/X6668rPDxcRUVFOnXqlLZv3y4/Pz/n8wICAlpiCgAAwAN4TMDKz89XSkqKDMO4YL%2BsrCwNGjRIkyZNkiRde%2B21%2Bvvf/663335b4eHhKigoUGhoqHr27NkSZQMAAA9k%2BSnCsWPH6k9/%2BpNOnTp1RePs2rVLAwcOVEZGxgX7jRkzRr/%2B9a/d2s%2B9fn5%2Bvq6//vorqgUAALRtlh/BGjRokFatWqW0tDTdcccdSkxM1ODBg2Wz2S5pnPvvv79J/Xr37u3yOC8vT5988ol%2B%2BtOfSpIKCgpUWVmpiRMn6sCBA%2BrXr58WLlxI6AIAAE1mecBKSUnRnDlz9M9//lNvvPGGZs%2BereDgYCUkJCghIaFZg83x48c1e/ZsDRgwQHfccYckqbCwUCdPntScOXMUFBSktWvXavLkyXrrrbcUFBTUpHGLi4vlcDhc2uz2AIWFhV1xzd7eXi7/Aq2R3e66/7JfAzj/c6G1szxgSZLNZtPgwYM1ePBgVVZWauPGjXrhhRe0Zs0aDRgwQA888IDuvPNOU1%2BzpKREU6ZMkWEYeu655%2BTldXZhX3zxRZ05c0aBgYGSpBUrViguLk47duzQ6NGjmzR2RkaG0tPTXdqSkpKUnJxsWv3Bwf6mjQW0tJCQwAbb2a%2BBtquxz4XW6qoIWNLZoz5//etf9de//lVff/21BgwYoDFjxujYsWP6zW9%2Bo88%2B%2B0yLFi0y5bWKioqcF7m/9NJL6tChg3Obj4%2BPfHx8nI99fX3Vo0cPFRUVNXn8cePGKT4%2B3qXNbg9QaemV3%2BrB29tLwcH%2BKiurVF1d/RWPB1jh/PcC%2BzUAM74jG2JVcLM8YG3ZskVbtmzRzp071aFDByUkJOi5557Tdddd5%2BzTtWtXLV261JSAVVFRoalTp8rLy0svvfSSQkNDndsMw9Dw4cM1c%2BZMJSYmOvsfPHhQvXr1avJrhIWFuZ0OdDhOqbbWvC%2BOurp6U8cDWlJj%2By77NdB2edp73/KAtWjRIt1%2B%2B%2B16/vnnddtttzlP1X1fr169NGHChMt%2BDYfDoXbt2snPz0%2BrV6/WoUOHtHHjRuc2SfLz81O7du00dOhQrVy5Ut27d1eHDh307LPPqkuXLoqLi7vs1wcAAG2L5QHrgw8%2BUEhIiE6cOOEMV3v37lX//v3l7e0tSRowYIAGDBhw2a8RGxurtLQ0JSYmatu2baqqqtLYsWNd%2BowZM0ZPPvmk5s6dK7vdrpSUFJ0%2BfVqDBg3SmjVrnLUAAABcjOUB6/Tp0xo/frzuuOMOpaamSpKmT5%2BuTp06ae3aterateslj/nvf/%2B70cfvvPPOBZ/r6%2Bur%2BfPna/78%2BZf8ugAAANJVcKPR3/3ud7r22ms1ZcoUZ9vWrVvVtWtXpaWlWVgZAADA5bE8YP3rX//S/PnzXS4279Chg1JTU/Xpp59aWBkAAMDlsTxg2e12lZWVubVXVlZe9O8KAgAAXI0sD1i33XabnnjiCR06dMjZdvjwYaWlpWnIkCEWVgYAAHB5LL/Ifd68eZoyZYpGjBih4OBgSVJZWZn69%2B%2BvBQsWWFwdAADApbM8YHXs2FF/%2Bctf9M9//lN5eXmy2%2B264YYb9MMf/vCS/%2BAzAADA1cDygCVJ3t7eGjJkCKcEAQCAR7A8YDkcDj3zzDPavXu3zpw543Zh%2B3vvvWdRZQAAAJfH8oD1yCOPaN%2B%2BfbrrrrvUrl07q8sBAAC4YpYHrE8//VTr1q1TTEyM1aUAAACYwvLbNAQEBKhjx45WlwEAAGAaywPWPffco3Xr1qmurs7qUgAAAExh%2BSnCEydOKCsrS//4xz/Us2dP%2Bfj4uGx/6aWXLKoMAADg8lgesCTp7rvvtroEAAAA01gesNLS0qwuAQAAwFSWX4MlScXFxUpPT1dKSoq%2B%2B%2B47vfPOOyosLLS6LAAAgMtiecA6ePCgRo8erb/85S/atm2bKioqtHXrVt17773KycmxujwAAIBLZnnAevLJJzVs2DBt375dP/jBDyRJTz31lOLj47VixQqLqwMAALh0lges3bt3a8qUKS5/2Nlut2vmzJnav3%2B/hZUBAABcHssDVn19verr693ay8vL5e3tbUFFAAAAV8bygBUbG6vVq1e7hKwTJ05o%2BfLlGjRokIWVAQAAXB7LA9b8%2BfO1b98%2BxcbGqrq6WjNmzNDtt9%2Bub7/9VvPmzbO6PAAAgEtm%2BX2wOnfurDfeeENZWVn66quvVF9fr/Hjx%2Buee%2B5RUFCQ1eUBAABcMssDliT5%2B/tr7NixVpcBAABgCssD1qRJky64nb9FCAAAWhvLA1b37t1dHtfW1urgwYP6%2Buuv9cADD1hUFQAAwOWzPGA19rcIn3/%2BeR07duySx6upqVFiYqIeeeQRDRw4sME%2B%2B/fv16OPPqqvv/5aN9xwgx577DHddNNNzu1ZWVl65pln5HA4FBsbq8cff1wdOnS45FoAAEDbZPlvETbmnnvu0dtvv31Jz6murtacOXOUl5fXaJ%2BKigpNnz5dMTEx2rx5s6KiovTQQw%2BpoqJCkrR3714tWrRIs2bNUkZGhsrKyrRgwYIrmgsAAGhbrtqA9fnnn1/SjUbz8/N133336dChQxfst3XrVvn6%2Bio1NVW9e/fWokWLFBgYqHfeeUeStGnTJo0aNUoJCQkKDw/XsmXL9P777%2Bvw4cNXNB8AANB2WH6KsKGL3E%2BfPq1///vfuv/%2B%2B5s8zq5duzRw4ED96le/0s0339xov5ycHEVHRzv/NI/NZtOAAQO0Z88eJSYmKicnR9OmTXP279q1q7p166acnBz17NnzEmYGAADaKssDVrdu3Vz%2BDqEk/eAHP9CECRP04x//uMnjNDWMORwO3XDDDS5tHTt2dJ5WLC4uVlhYmNv2y7keDAAAtE2WB6wnn3yyRV%2BvsrJSPj4%2BLm0%2BPj6qqamRJFVVVV1we1MUFxfL4XC4tNntAW7B7XJ4e3u5/Au0Rna76/7Lfg3g/M%2BF1s7ygPXZZ581ue8tt9xyxa/n6%2BvrFpZqamrk5%2Bd3we3%2B/v5Nfo2MjAylp6e7tCUlJSk5Ofkyq3YXHNz0eoCrzfAVH1pdAoCrTEhIoNUlmMrygDVx4kTnKULDMJzt57fZbDZ99dVXV/x6nTt3VklJiUtbSUmJ8%2BhSY9tDQ0Ob/Brjxo1TfHy8S5vdHqDS0vLLrPr/eHt7KTjYX2Vllaqrq7/4EwAAaAXM%2BI5siFXBzfKAtWrVKj3xxBOaO3eubr31Vvn4%2BOiLL77QkiVLNGbMGP3oRz8y9fUiIyO1du1aGYYhm80mwzC0e/du/eIXv3Buz87OVmJioiTp6NGjOnr0qCIjI5v8GmFhYW6nAx2OU6qtNS8Q1dXVmzoeAABW8rTvNMtPeKalpem3v/2tRowYoZCQEAUGBmrQoEFasmSJXn31VXXv3t35c7kcDoeqqqokSSNHjlRZWZmWLl2q/Px8LV26VJWVlRo1apQkafz48dqyZYsyMzOVm5ur1NRUDR06lN8gBAAATWZ5wCouLm4wPAUFBam0tNSU14iNjdXWrVud465evdp5lConJ0dr1qxRQECAJCkqKkpLlizR888/r/Hjx6t9%2B/aN3m0eAACgITbj%2Bxc%2BWWDKlCkKCAjQ//7v/yooKEiSdOLECaWkpMjX11cvvPCCleWZxuE4Zco4druXQkICVVpartraeo165mNTxgUAwEpvPzy4WcYNDW3XLONejOXXYP3mN7/RpEmTdNttt%2Bm6666TYRj65ptvFBoaqpdeesnq8gAAAC6Z5QGrd%2B/e2rp1q7KyslRQUCBJ%2BtnPfqa77rrrkm6NAAAAcLWwPGBJUvv27TV27Fh9%2B%2B23zovJf/CDH1hcFQAAwOWx/CJ3wzC0YsUK3XLLLbr77rt17NgxzZs3T4sWLdKZM2esLg8AAOCSWR6wNm7cqC1btujRRx91/omaYcOGafv27W53QwcAAGgNLA9YGRkZ%2Bu1vf6vExETn3dt/9KMf6YknntCbb75pcXUAAACXzvKA9e2336pfv35u7eHh4W5/MBkAAKA1sDxgde/eXV988YVb%2BwcffMDd0wEAQKtk%2BW8R/vznP9djjz0mh8MhwzD0ySefKCMjQxs3btT8%2BfOtLg8AAOCSWR6w7r33XtXW1uoPf/iDqqqq9Nvf/lYdOnTQww8/rPHjx1tdHgAAwCWzPGBlZWVp5MiRGjdunI4fPy7DMNSxY0erywIAALhsll%2BDtWTJEufF7B06dCBcAQCAVs/ygHXdddfp66%2B/troMAAAA01h%2BijA8PFy//vWvtW7dOl133XXy9fV12Z6WlmZRZQAAAJfH8oB14MABRUdHSxL3vQIAAB7BkoC1bNkyzZo1SwEBAdq4caMVJQAAADQbS67B%2BuMf/6jKykqXtunTp6u4uNiKcgAAAExlScAyDMOt7bPPPlN1dbUF1QAAAJjL8t8iBAAA8DQELAAAAJNZFrBsNptVLw0AANCsLLtNwxNPPOFyz6szZ85o%2BfLlCgwMdOnHfbAAAEBrY0nAuuWWW9zueRUVFaXS0lKVlpZaURIAAIBpLAlY3PsKAAB4Mi5yBwAAMBkBCwAAwGSW/y1Cs1RXV%2Buxxx7T3/72N/n5%2BenBBx/Ugw8%2B6NZv4sSJ2rVrl1t7YmKi84L6mJgYnTp1ymX77t273S7ABwAAaIjHBKxly5Zp37592rBhg44cOaJ58%2BapW7duGjlypEu/lStX6syZM87HOTk5evjhh3X//fdLkoqKinTq1Clt375dfn5%2Bzn4BAQEtMxEAANDqeUTAqqioUGZmptauXav%2B/furf//%2BysvL08svv%2BwWsK655hrn/%2Bvq6vT0009r6tSpioiIkCQVFBQoNDRUPXv2bNE5AAAAz%2BER12Dl5uaqtrZWUVFRzrbo6Gjl5OSovr6%2B0edt3rxZJ0%2Be1LRp05xt%2Bfn5uv7665u1XgAA4Nk8ImA5HA6FhITIx8fH2dapUydVV1frxIkTDT7HMAytW7dOkyZNcrm2qqCgQJWVlZo4caJiY2M1bdo0HThwoNnnAAAAPIdHnCKsrKx0CVeSnI9ramoafM7OnTt17Ngx3XfffS7thYWFOnnypObMmaOgoCCtXbtWkydP1ltvvaWgoKAm1VNcXOx2I1W7PUBhYWFNnVKjvL29XP4FAMAT2O2e9b3mEQHL19fXLUide/z9C9W/b9u2bbrttttcrsmSpBdffFFnzpxxHtVasWKF4uLitGPHDo0ePbpJ9WRkZCg9Pd2lLSkpScnJyU16flMEB/ubNhYAAFYLCfGs39T3iIDVuXNnlZaWqra2Vnb72Sk5HA75%2BfkpODi4wed8%2BOGHmjVrllu7j4%2BPy9EwX19f9ejRQ0VFRU2uZ9y4cYqPj3dps9sDVFpa3uQxGuPt7aXgYH%2BVlVWqrq7x68sAAGhNzPiObIhVwc0jAla/fv1kt9u1Z88excTESJKys7MVEREhLy/3Q47Hjx/X4cOHFR0d7dJuGIaGDx%2BumTNnKjExUdLZ31A8ePCgevXq1eR6wsLC3E4HOhynVFtrXiCqq6s3dTwAAKzkad9pHnHC09/fXwkJCVq8eLH27t2r7du3a/369Zo0aZKks0ezqqqqnP3z8vKcR6a%2Bz2azaejQoVq5cqV27typvLw8paamqkuXLoqLi2vROQEAgNbLIwKWJC1YsED9%2B/fXAw88oMcee0yzZ8/WnXfeKUmKjY3V1q1bnX2/%2B%2B47BQcHy2azuY0zd%2B5cjRgxQikpKRo7dqxqa2u1Zs0aeXt7t9hcAABA62YzDMOwuoi2wOE4dfFOTWC3eykkJFClpeWqra3XqGc%2BNmVcAACs9PbDg5tl3NDQds0y7sV4zBEsAACAqwUBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQeE7Cqq6u1cOFCxcTEKDY2VuvXr2%2B074wZM9QFXRnZAAAYX0lEQVS3b1%2BXnx07dji3Z2VladiwYYqMjFRSUpKOHz/eElMAAAAewm51AWZZtmyZ9u3bpw0bNujIkSOaN2%2BeunXrppEjR7r1LSgo0PLly/XDH/7Q2da%2BfXtJ0t69e7Vo0SI99thjCg8P19KlS7VgwQKtXr26xeYCAABaN48IWBUVFcrMzNTatWvVv39/9e/fX3l5eXr55ZfdAlZNTY2%2B/fZbRUREKDQ01G2sTZs2adSoUUpISJB0NrjdfvvtOnz4sHr27Nki8wEAAK2bR5wizM3NVW1traKiopxt0dHRysnJUX19vUvfwsJC2Wy2RsNSTk6OYmJinI%2B7du2qbt26KScnp3mKBwAAHscjApbD4VBISIh8fHycbZ06dVJ1dbVOnDjh0rewsFBBQUFKTU1VbGysfvKTn%2Bj99993bi8uLlZYWJjLczp27Khjx4417yQAAIDH8IhThJWVlS7hSpLzcU1NjUt7YWGhqqqqFBsbq%2BnTp%2Bvdd9/VjBkzlJGRoYiICFVVVTU41vnjXEhxcbEcDodLm90e4BbcLoe3t5fLvwAAeAK73bO%2B1zwiYPn6%2BroFoHOP/fz8XNpnzpypiRMnOi9qDw8P15dffqnXXntNERERjY7l7%2B/f5HoyMjKUnp7u0paUlKTk5OQmj3ExwcFNrwcAgKtdSEig1SWYyiMCVufOnVVaWqra2lrZ7Wen5HA45Ofnp%2BDgYJe%2BXl5eznB1Tq9evZSfn%2B8cq6SkxGV7SUlJgxfEN2bcuHGKj493abPbA1RaWt7kMRrj7e2l4GB/lZVVqq6u/uJPAACgFTDjO7IhVgU3jwhY/fr1k91u1549e5wXqGdnZysiIkJeXq6HHOfPny%2Bbzaa0tDRnW25urvr06SNJioyMVHZ2thITEyVJR48e1dGjRxUZGdnkesLCwtxOBzocp1Rba14gqqurN3U8AACs5GnfaR5xwtPf318JCQlavHix9u7dq%2B3bt2v9%2BvWaNGmSpLNHs6qqqiRJ8fHxevPNN/XGG2/o4MGDSk9PV3Z2tiZMmCBJGj9%2BvLZs2aLMzEzl5uYqNTVVQ4cO5RYNAACgyWyGYRhWF2GGyspKLV68WH/7298UFBSkn//855o8ebIkqW/fvkpLS3MelcrMzNS6det05MgR3XjjjVqwYIFuueUW51ibN2/Wc889p5MnT2rw4MF6/PHHFRISckX1ORynruj559jtXgoJCVRpablqa%2Bs16pmPTRkXAAArvf3w4GYZNzS0XbOMezEeE7CudgQsAAAa52kByyNOEQIAAFxNCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAm85iAVV1drYULFyomJkaxsbFav359o33/8Y9/6J577lFUVJRGjx6t9957z2V7TEyM%2Bvbt6/JTXl7e3FMAAAAewm51AWZZtmyZ9u3bpw0bNujIkSOaN2%2BeunXrppEjR7r0y83N1axZs5Samqq4uDh99NFH%2BuUvf6nXX39d4eHhKioq0qlTp7R9%2B3b5%2Bfk5nxcQENDSUwIAAK2URwSsiooKZWZmau3aterfv7/69%2B%2BvvLw8vfzyy24BKysrS4MGDdKkSZMkSddee63%2B/ve/6%2B2331Z4eLgKCgoUGhqqnj17WjEVAADgATwiYOXm5qq2tlZRUVHOtujoaK1atUr19fXy8vq/M6FjxozRmTNn3MY4deqUJCk/P1/XX3998xcNAAA8lkdcg%2BVwOBQSEiIfHx9nW6dOnVRdXa0TJ0649O3du7fCw8Odj/Py8vTJJ5/ohz/8oSSpoKBAlZWVmjhxomJjYzVt2jQdOHCgZSYCAAA8gkccwaqsrHQJV5Kcj2tqahp93vHjxzV79mwNGDBAd9xxhySpsLBQJ0%2Be1Jw5cxQUFKS1a9dq8uTJeuuttxQUFNSkeoqLi%2BVwOFza7PYAhYWFXcq0GuTt7eXyLwAAnsBu96zvNY8IWL6%2Bvm5B6tzj71%2Bo/n0lJSWaMmWKDMPQc8895zyN%2BOKLL%2BrMmTMKDAyUJK1YsUJxcXHasWOHRo8e3aR6MjIylJ6e7tKWlJSk5OTkS5rXhQQH%2B5s2FgAAVgsJCbS6BFN5RMDq3LmzSktLVVtbK7v97JQcDof8/PwUHBzs1r%2BoqMh5kftLL72kDh06OLf5%2BPi4HA3z9fVVjx49VFRU1OR6xo0bp/j4eJc2uz1ApaVXfqsHb28vBQf7q6ysUnV19Vc8HgAAVwMzviMbYlVw84iA1a9fP9ntdu3Zs0cxMTGSpOzsbEVERLhc4C6d/Y3DqVOnysvLSy%2B99JJCQ0Od2wzD0PDhwzVz5kwlJiY6%2Bx88eFC9evVqcj1hYWFupwMdjlOqrTUvENXV1Zs6HgAAVvK07zSPCFj%2B/v5KSEjQ4sWL9bvf/U7FxcVav3690tLSJJ09mtWuXTv5%2Bflp9erVOnTokDZu3OjcJp09ldiuXTsNHTpUK1euVPfu3dWhQwc9%2B%2Byz6tKli%2BLi4iybHwAAaF08ImBJ0oIFC7R48WI98MADCgoK0uzZs3XnnXdKkmJjY5WWlqbExERt27ZNVVVVGjt2rMvzx4wZoyeffFJz586V3W5XSkqKTp8%2BrUGDBmnNmjXy9va2YloAAKAVshmGYVhdRFvgcJwyZRy73UshIYEqLS1XbW29Rj3zsSnjAgBgpbcfHtws44aGtmuWcS/Gs34nEgAA4CpAwAIAADAZAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkBCwAAACTEbAAAABMRsACAAAwGQELAADAZAQsAAAAkxGwAAAATEbAAgAAMBkBCwAAwGQELAAAAJMRsAAAAExGwAIAADAZAQsAAMBkHhOwqqurtXDhQsXExCg2Nlbr169vtO/%2B/fs1duxYRUZG6t5779W%2BfftctmdlZWnYsGGKjIxUUlKSjh8/3tzlAwAAD%2BIxAWvZsmXat2%2BfNmzYoEcffVTp6el655133PpVVFRo%2BvTpiomJ0ebNmxUVFaWHHnpIFRUVkqS9e/dq0aJFmjVrljIyMlRWVqYFCxa09HQAAEAr5hEBq6KiQpmZmVq0aJH69%2B%2Bv4cOHa%2BrUqXr55Zfd%2Bm7dulW%2Bvr5KTU1V7969tWjRIgUGBjrD2KZNmzRq1CglJCQoPDxcy5Yt0/vvv6/Dhw%2B39LQAAEAr5REBKzc3V7W1tYqKinK2RUdHKycnR/X19S59c3JyFB0dLZvNJkmy2WwaMGCA9uzZ49weExPj7N%2B1a1d169ZNOTk5LTATAADgCexWF2AGh8OhkJAQ%2Bfj4ONs6deqk6upqnThxQh06dHDpe8MNN7g8v2PHjsrLy5MkFRcXKywszG37sWPHmlxPcXGxHA6HS5vdHuA27uXw9vZy%2BRcAAE9gt3vW95pHBKzKykqXcCXJ%2BbimpqZJfc/1q6qquuD2psjIyFB6erpL26xZszR79uwmj9GY4uJibdiwTuPGjVNYWJj%2BtXTkFY95tSsuLlZGRoZzzm1BW5tzW5uv1Pbm3NbmKzHntjLnxnhEXPT19XULQOce%2B/n5NanvuX6Nbff3929yPePGjdPmzZtdfsaNG9fk51%2BIw%2BFQenq62xEyT8acPV9bm6/U9ubc1uYrMee2ziOOYHXu3FmlpaWqra2V3X52Sg6HQ35%2BfgoODnbrW1JS4tJWUlLiTNqNbQ8NDW1yPWFhYW0%2BuQMA0JZ5xBGsfv36yW63Oy9Ul6Ts7GxFRETIy8t1ipGRkfr8889lGIYkyTAM7d69W5GRkc7t2dnZzv5Hjx7V0aNHndsBAAAuxiMClr%2B/vxISErR48WLt3btX27dv1/r16zVp0iRJZ49mVVVVSZJGjhypsrIyLV26VPn5%2BVq6dKkqKys1atQoSdL48eO1ZcsWZWZmKjc3V6mpqRo6dKh69uxp2fwAAEDr4r148eLFVhdhhkGDBmn//v36/e9/r08%2B%2BUS/%2BMUvdO%2B990qSBgwYoGuvvVb9%2BvWTj4%2BPbr31Vr3yyitatWqVamtr9dRTT6lbt26Szt6WoUuXLkpPT9fLL7%2BsG2%2B8UUuXLr2ka7CaW2BgoG699VYFBgZaXUqLYc6er63NV2p7c25r85WYc1tmM86dKwMAAIApPOIUIQAAwNWEgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgXYWqq6u1cOFCxcTEKDY2VuvXr2%2B07/79%2BzV27FhFRkbq3nvv1b59%2B1qwUvMUFRUpOTlZt956q4YMGaK0tDRVV1c32HfGjBnq27evy8%2BOHTtauOIr8%2B6777rNITk5ucG%2BnrDGmzdvdptv3759FR4e3mD/1r7GNTU1uvvuu7Vz505n2%2BHDhzV58mTdfPPN%2BtGPfqSPPvrogmNkZWVp2LBhioyMVFJSko4fP97cZV%2B2hua7Z88e/fSnP1VUVJRGjBihzMzMC44RExPjtubl5eXNXfpla2jOTzzxhNscNm3a1OgYrWmNJfc5z58/v8H39bk/U9eQ1rbOV8TAVWfJkiXG6NGjjX379hl/%2B9vfjKioKOPtt99261deXm4MHjzYePLJJ438/Hzj8ccfN/7nf/7HKC8vt6Dqy1dfX2/cd999xtSpU42vv/7a%2BOyzz4zhw4cbTz75ZIP9hw8fbmzZssUoLi52/lRXV7dw1VfmhRdeMB566CGXOZw8edKtn6escWVlpctcjxw5YgwfPtxYunRpg/1b8xpXVVUZSUlJRp8%2BfYxPP/3UMIyz%2B/jo0aONlJQUIz8/31i1apURGRlp/Oc//2lwjJycHOO///u/jb/85S/GV199ZUyYMMGYPn16S06jyRqab3FxsRETE2P8/ve/Nw4cOGBkZWUZERERxo4dOxoc49ixY0afPn2MQ4cOuax5fX19C86k6Rqas2EYxuTJk43Vq1e7zKGioqLBMVrTGhtGw3MuKytzmevnn39u3HTTTca7777b4BitbZ2vFAHrKlNeXm5ERES4vGmff/55Y8KECW59MzMzjfj4eOfOWV9fbwwfPtz485//3GL1miE/P9/o06eP4XA4nG1vvvmmERsb69a3urra6Nevn1FYWNiSJZouJSXF%2BP3vf3/Rfp6yxudbtWqVMWzYsAZDU2te47y8POPHP/6xMXr0aJcvon/%2B85/GzTff7BKMH3jgAeO5555rcJy5c%2Bca8%2BbNcz4%2BcuSI0bdvX%2BPQoUPNO4FL1Nh8X3nlFWPkyJEufR955BFjzpw5DY7z8ccfG4MHD272es3Q2JwNwzCGDBlifPjhh00ap7WssWFceM7f9%2BCDDxq//vWvGx2nNa2zGThFeJXJzc1VbW2toqKinG3R0dHKyclRfX29S9%2BcnBxFR0fLZrNJkmw2mwYMGKA9e/a0aM1XKjQ0VOvWrVOnTp1c2k%2BfPu3Wt7CwUDabTT179myp8ppFQUGBrrvuuov285Q1/r4TJ05o7dq1SklJkY%2BPj9v21rzGu3bt0sCBA5WRkeHSnpOTo//6r/9SQECAsy06OrrRdczJyVFMTIzzcdeuXdWtWzfl5OQ0T%2BGXqbH5njvNf76G3tOSlJ%2Bfr%2Buvv75ZajRbY3M%2Bffq0ioqKmvS%2BllrPGkuNz/n7PvnkE3322WeaM2dOo31a0zqbwW51AXDlcDgUEhLi8sXTqVMnVVdX68SJE%2BrQoYNL3xtuuMHl%2BR07dlReXl6L1WuG4OBgDRkyxPm4vr5emzZt0qBBg9z6FhYWKigoSKmpqdq1a5e6dOmi2bNnKy4uriVLviKGYejAgQP66KOPtHr1atXV1WnkyJFKTk52Cxyessbf9%2BqrryosLEwjR45scHtrXuP777%2B/wXaHw6GwsDCXto4dO%2BrYsWMN9i8uLr6k/lZpbL49evRQjx49nI%2B/%2B%2B47vfXWW5o9e3aD/QsKClRZWamJEyfqwIED6tevnxYuXHhVfhk3NueCggLZbDatWrVKH3zwga655hpNmTJFY8aMabB/a1ljqfE5f9%2BaNWs0ZswYde3atdE%2BrWmdzcARrKtMZWWl25fsucc1NTVN6nt%2Bv9Zm%2BfLl2r9/v371q1%2B5bSssLFRVVZViY2O1bt06xcXFacaMGfriiy8sqPTyHDlyxLl2zzzzjObNm6c333xTy5Ytc%2BvraWtsGIYyMzM1YcKERvt4whqf71LXsaqqymPWvaqqSrNnz1anTp00bty4BvsUFhbq5MmTmjFjhl544QX5%2Bflp8uTJjR7xuhqdO/Laq1cvrVmzRmPHjtUjjzyid999t8H%2BnrTGhw8f1qeffqqJEydesJ8nrPOl4AjWVcbX19ftDXbusZ%2BfX5P6nt%2BvNVm%2BfLk2bNigp59%2BWn369HHbPnPmTE2cOFHt27eXJIWHh%2BvLL7/Ua6%2B9poiIiJYu97J0795dO3fuVPv27WWz2dSvXz/V19dr7ty5WrBggby9vZ19PW2Nv/jiCxUVFemuu%2B5qtI8nrPH5fH19deLECZe2C61jY%2Bvu7%2B/fbDU2h/Lycs2cOVPffPONXnnllUbrf/HFF3XmzBkFBgZKklasWKG4uDjt2LFDo0ePbsmSL1tCQoJuv/12XXPNNZLO7rfffPONXn31VQ0fPtytv6essSRt27ZN/fr1czvafj5PWOdLwRGsq0znzp1VWlqq2tpaZ5vD4ZCfn5%2BCg4Pd%2BpaUlLi0lZSUuB12bi0ef/xx/fGPf9Ty5cs1YsSIBvt4eXk5v3jP6dWrl4qKilqiRNNcc801zuuqJKl3796qrq7WyZMnXfp52hp/%2BOGHiomJcVvD7/OUNf6%2BS13HxvqHhoY2W41mO336tH7%2B858rLy9PGzZsuOC1ST4%2BPs4vXels%2BOjRo0erWnObzeYMV%2BdcaL/1hDU%2B58MPP9Qdd9xx0X6esM6XgoB1lenXr5/sdrvLxa/Z2dmKiIiQl5frckVGRurzzz%2BXYRiSzp5%2B2b17tyIjI1u0ZjOkp6frT3/6k5566qkLHt2YP3%2B%2BFixY4NKWm5urXr16NXeJpvnwww81cOBAVVZWOtu%2B%2BuorXXPNNS7X2EmetcaStHfvXg0YMOCCfTxhjc8XGRmpL7/8UlVVVc627OzsRtcxMjJS2dnZzsdHjx7V0aNHW82619fXa9asWfr222%2B1ceNG3XjjjY32NQxDw4YN0%2BbNm51tFRUVOnjwYKta82effVaTJ092abvQftva1/gcwzD0xRdfXPR97SnrfCkIWFcZf39/JSQkaPHixdq7d6%2B2b9%2Bu9evXO2/c5nA4nB/SI0eOVFlZmZYuXar8/HwtXbpUlZWVGjVqlJVTuGQFBQV64YUXNG3aNEVHR8vhcDh/JNc5x8fH680339Qbb7yhgwcPKj09XdnZ2Re8pudqExUVJV9fX/3mN79RYWGh3n//fS1btkxTp06V5JlrfE5eXl6DpxE8bY3Pd%2Butt6pr165asGCB8vLytGbNGu3du1c/%2BclPJJ09NeRwOFRXVydJGj9%2BvLZs2aLMzEzl5uYqNTVVQ4cObTW/Wfn6669r586deuKJJxQcHOx8P587Tfr9%2BdpsNg0dOlQrV67Uzp07lZeXp9TUVHXp0qVV/GLDObfffrs%2B%2B%2Bwzvfjiizp06JBeeeUVvfHGG3rwwQcled4an/Of//xH5eXlDb6vPXGdL4llN4hAoyoqKozU1FTj5ptvNmJjY40//vGPzm19%2BvRxuQdSTk6OkZCQYERERBg/%2BclPjC%2B//NKCiq/M6tWrjT59%2BjT4Yxjuc37ttdeMO%2B%2B807jpppuMMWPGGLt27bKq9Mv29ddfG5MnTzZuvvlmY/DgwcbKlSud97ryxDU%2BJyIiwvjggw/c2j1xjc%2B/X9A333xj/OxnPzNuuukm46677jI%2B/vhj57ZPP/3U6NOnj3H48GFn25///GcjLi7OuPnmm42kpCTj%2BPHjLVr/pfr%2BfB988MEG38/n7ud3/nyrqqqMtLQ0Y/DgwUZkZKTx0EMPGUeOHLFsLk11/hq/%2B%2B67xujRo42IiAhj5MiRxrZt25zbPGGNDcN9znv27DH69OnT4D3tPGWdL5fNMP7/uQcAAACYglOEAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJvt/VU4MvWHAk00AAAAASUVORK5CYII%3D\">\n",
       "    </div>\n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">lastName<br/>\n",
       "            <small>Categorical, Unique</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-3 collapse in\" id=\"minivalues-1203938114005516078\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>First 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Alvarez$$%!</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>M$$ax%%well</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Nöether$</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-6 collapse in\" id=\"minivalues-1203938114005516078\"><table border=\"1\" class=\"dataframe example_values\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Last 3 values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Hoy&amp;&amp;&amp;le</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Ampère</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Ga%%%uss</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table></div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#values-1203938114005516078,#minivalues-1203938114005516078\" aria-expanded=\"false\"\n",
       "       aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"col-md-12 collapse\" id=\"values-1203938114005516078\">\n",
       "    <p class=\"h4\">First 20 values</p>\n",
       "    <table border=\"1\" class=\"dataframe sample table table-hover\">\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Alvarez$$%!</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M$$ax%%well</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Nöether$</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Planck!!!</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>COM%%%pton</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>KEPLER</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Einstein</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>H$$$ilbert</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Hertz</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Chadwick</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>CURIE</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Gilbert###</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Newton</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>GALiLEI</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Böhr//((%%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>dirac$</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Hoy&amp;&amp;&amp;le</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Ampère</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Ga%%%uss</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "    <p class=\"h4\">Last 20 values</p>\n",
       "    \n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">price<br/>\n",
       "            <small>Numeric</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-6\">\n",
       "    <div class=\"row\">\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "                <tr>\n",
       "                    <th>Distinct count</th>\n",
       "                    <td>8</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Unique (%)</th>\n",
       "                    <td>42.1%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Missing (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Infinite (n)</th>\n",
       "                    <td>0</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "\n",
       "        </div>\n",
       "        <div class=\"col-sm-6\">\n",
       "            <table class=\"stats \">\n",
       "\n",
       "                <tr>\n",
       "                    <th>Mean</th>\n",
       "                    <td>6.0526</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Minimum</th>\n",
       "                    <td>1</td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <th>Maximum</th>\n",
       "                    <td>10</td>\n",
       "                </tr>\n",
       "                <tr class=\"ignore\">\n",
       "                    <th>Zeros (%)</th>\n",
       "                    <td>0.0%</td>\n",
       "                </tr>\n",
       "            </table>\n",
       "        </div>\n",
       "    </div>\n",
       "</div>\n",
       "<div class=\"col-md-3 collapse in\" id=\"minihistogram-1453917864483493867\">\n",
       "    <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABLCAYAAAA1fMjoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAAjdJREFUeJzt3LFKW2EYx%2BE3pYsXkBjEzVsorq4ujiregzjpVMSpOGUTvAYFV8k1SMHdxUWQeMaIo6ebIC1/WqHH0/o82wmE783w40tO8mXQtm1bwC99eu8BoM8%2Bv/cAdO/L1%2BkfP%2Bf7t/W/MEn/2UEgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCD7seRBnIvgddhAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEHzYn7t34X/6Sf1bXstb9O3120EgEAgEAoFAIBAIBAKBQCAQCHr3PUhX99vfos%2Bz8XfYQSAQCAQCgUAgEAgEAoFAIBAIBm3btu89BCQPDw91dnZW29vbNRqNOl3bDkLvNU1TJycn1TRN52sLBAKBQCAQCARC7w2Hw9rd3a3hcNj52u5iQWAHgUAgEAgEAoFAIBAIBAKBQCAQCL30%2BPhYGxsbdXd3V1VVNzc3tbW1Vevr67W3t1dPT0%2BdzCEQeuf6%2Brp2dnbq9vb25bGDg4Pa39%2Bv6XRaKysrdXp62sksAqF3zs/P6%2Bjo6OXsx/39fc3n81pdXa2qqs3Nzbq8vOxklt79cRwcHx%2B/up7NZrW4uPhyPRqNajabdTKLHYTee35%2B/umxwWDQydoCoffG4/Gr04RN09R4PO5kbYHQe0tLS7WwsFBXV1dVVXVxcVFra2udrO0zCP%2BEyWRSh4eHNZ/Pa3l5uSaTSSfrOg8CgbdYEAgEAoFA8AO213WyLhfFOQAAAABJRU5ErkJggg%3D%3D\">\n",
       "\n",
       "</div>\n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#descriptives-1453917864483493867,#minihistogram-1453917864483493867\"\n",
       "       aria-expanded=\"false\" aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"row collapse col-md-12\" id=\"descriptives-1453917864483493867\">\n",
       "    <div class=\"col-sm-4\">\n",
       "        <p class=\"h4\">Quantile statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Minimum</th>\n",
       "                <td>1</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>5-th percentile</th>\n",
       "                <td>1.9</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q1</th>\n",
       "                <td>3</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Median</th>\n",
       "                <td>8</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Q3</th>\n",
       "                <td>8</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>95-th percentile</th>\n",
       "                <td>10</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Maximum</th>\n",
       "                <td>10</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Range</th>\n",
       "                <td>9</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Interquartile range</th>\n",
       "                <td>5</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "        <p class=\"h4\">Descriptive statistics</p>\n",
       "        <table class=\"stats indent\">\n",
       "            <tr>\n",
       "                <th>Standard deviation</th>\n",
       "                <td>2.9528</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Coef of variation</th>\n",
       "                <td>0.48786</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Kurtosis</th>\n",
       "                <td>-1.4482</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Mean</th>\n",
       "                <td>6.0526</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>MAD</th>\n",
       "                <td>2.6814</td>\n",
       "            </tr>\n",
       "            <tr class=\"\">\n",
       "                <th>Skewness</th>\n",
       "                <td>-0.22564</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Sum</th>\n",
       "                <td>115</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Variance</th>\n",
       "                <td>8.7193</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <th>Memory size</th>\n",
       "                <td>0.0 B</td>\n",
       "            </tr>\n",
       "        </table>\n",
       "    </div>\n",
       "    <div class=\"col-sm-8 histogram\">\n",
       "        <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD%2BnaQAAIABJREFUeJzt3XtQ1XX%2Bx/EXnBMIGAXKcZJtpOtmZuaNtMRN1l3ZcqMyIytrdVvKMKYty%2BviBYoSvEyDYmYXs0bZza7a5lTbmk1m3suxTMU1HTWOG2QogcD5/bET8ztAifWBD%2Bf7fT5mHIaPni9vzoevPj3fwyEsEAgEBAAAAGPCbQ8AAADgNAQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYQQWAACAYV7bA7iF3/%2Bd7RFcIzw8TPHxMfrmm%2BOqrw/YHseV2AP72AP72AP7wsPD1KlTRzsf28pHBVpReHiYwsLCFB4eZnsU12IP7GMP7GMP7LN53xNYAAAAhhFYAAAAhhFYAAAAhhFYAAAAhhFYAAAAhhFYAAAAhhFYAAAAhhFYAAAAhhFYzaipqdHMmTPVv39/XXXVVZo7d64CAV6FFwAAtAw/KqcZeXl52rBhg5555hkdP35cf/3rX9W1a1fdeuuttkcDAAAhgEewGqmoqNDKlSuVm5uryy%2B/XAMHDtTYsWO1fft226MBAIAQwSNYjWzevFkdO3ZUcnJyw1pmZqbFiQAAQKghsBo5cOCAEhMT9dprr2nRokU6efKkbrrpJo0bN07h4S17wK%2BsrEx%2Bvz9ozeuNls/na42R0YjHEx70Fm2PPbCPPbCPPbDP5n1PYDVy4sQJ7d%2B/XytWrFB%2Bfr78fr9ycnIUFRWlsWPHtugYJSUlKioqClrLyspSdnZ2a4yMHxEbG2V7BNdjD%2Bxr73vQb%2Brbtkc4LZseTTvt27T3PUDrILAa8Xq9qqys1Jw5c5SYmChJOnTokJYvX97iwMrIyFBqamqj40arvPy48XnRlMcTrtjYKB07VqW6unrb47gSe2Afe9A6TufvcfbAvh/2wAYCq5GEhARFRkY2xJUknXfeeTp8%2BHCLj%2BHz%2BZpcDvT7v1NtLSdYW6qrq%2Bc%2Bt4w9sI89MOvn3JfsgTtxYbiRXr16qbq6Wvv27WtYKy0tDQouAACAn0JgNXL%2B%2Befrmmuu0eTJk/XFF19o3bp1Wrx4sUaNGmV7NAAAECK4RNiMwsJC5ebmatSoUYqKitLtt9%2Bu0aNH2x4LAACECAKrGWeeeaZmz55tewwAABCiuEQIAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIEFAABgGIHVjHfeeUe//vWvg35lZ2fbHgsAAIQIr%2B0B2qM9e/ZoyJAhys3NbViLjIy0OBEAAAglBFYz9u7dq4svvlgJCQm2RwEAACGIS4TN2Lt3r5KSkmyPAQAAQhSPYDUSCAS0b98%2Bffjhh3rqqadUV1entLQ0ZWdnKyIiokXHKCsrk9/vD1rzeqPl8/laY2Q04vGEB71F22MP7GMPWofX2/L7kz2wz%2BZ9T2A1cujQIVVVVSkiIkLz58/XwYMHlZeXp%2B%2B//17Tpk1r0TFKSkpUVFQUtJaVlcUT5dtYbGyU7RFcjz2wjz0wKy4u5rRvwx64U1ggEAjYHqK9qaio0FlnnaWwsDBJ0po1a/Twww9r69at8ng8p7w9j2DZ5fGEKzY2SseOVamurt72OK7EHtgXKnvwu8J1tkc4Le9MSGnxnw2VPXCyH/bABh7BasbZZ58d9P4FF1yg6upqffvtt4qPjz/l7X0%2BX5OY8vu/U20tJ1hbqqur5z63jD2wjz0w6%2Bfcl%2ByBO3FhuJF169bpyiuvVFVVVcPa559/rrPPPrtFcQUAAEBgNdK7d29FRkZq2rRpKi0t1dq1azV79mzdfffdtkcDAAAhgkuEjXTs2FHPPPOMHnvsMY0YMUIxMTG69dZbCSwAANBiBFYzLrroIj333HO2xwAAACGKS4QAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVgAAACGEVinkJmZqUmTJtkeAwAAhBAC6yesXr1aa9eutT0GAAAIMQTWj6ioqNDs2bPVs2dP26MAAIAQ47U9QHv1xBNPKD09XWVlZbZHAQAAIYZHsJqxfv16bdq0Sffdd5/tUQAAQAjiEaxGqqurNX36dOXk5KhDhw4/6xhlZWXy%2B/1Ba15vtHw%2Bn4kRcQoeT3jQW7Q99sA%2B9qB1eL0tvz/ZA/ts3vcEViNFRUW67LLLlJKS8rOPUVJSoqKioqC1rKwsZWdn/9LxcBpiY6N%2B0e37TX3b0CRtY9OjabZHaOKX7gF%2BOfbArLi4mNO%2BDXvgTgRWI6tXr9bRo0fVu3dvSVJNTY0kac2aNdq6dWuLjpGRkaHU1NSgNa83WuXlx80Oi2Z5POGKjY3SsWNVqqurtz1Om2lPX19u3YP2hD1oHadznrEH9v2wBzYQWI0sW7ZMtbW1De8XFhZKkiZMmNDiY/h8viaXA/3%2B71RbywnWlurq6l11n7fHz9Vte9AesQdm/Zz7kj1wJwKrkcTExKD3Y2L%2B93Bwt27dbIwDAABCEM%2B8AwAAMIxHsE7h8ccftz0CAAAIMTyCBQAAYBiBBQAAYBiBBQAAYBiBBQAAYJijAmvkyJFasWKFvvvuO9ujAAAAF3NUYA0YMECLFi3SoEGD9OCDD%2BrDDz9UIBCwPRYAAHAZRwXWQw89pPfff18LFy6Ux%2BPR/fffr2uuuUbz5s3Tvn37bI8HAABcwnGvgxUWFqarr75aV199taqqqrRs2TItXLhQixcvVp8%2BfXTXXXfp97//ve0xAQCAgzkusCSprKxMb7zxht544w19%2BeWX6tOnj2688UYdOXJE06ZN08aNGzV16lTbYwIAAIdyVGC9/vrrev3117VhwwbFx8frhhtu0JNPPqmkpKSGP3POOefo0UcfJbAAAECrcVRgTZ06VUOGDNGCBQs0ePBghYc3fYrZ%2BeefrzvuuMPCdAAAwC0cFVgffPCB4uLiVFFR0RBXn376qXr06CGPxyNJ6tOnj/r06WNzTAAA4HCO%2Bi7CyspKpaWl6emnn25Yy8zMVHp6ug4fPmxxMgAA4CaOCqzHHntM3bp105gxYxrW3nrrLZ1zzjnKz8%2B3OBkAAHATRwXWpk2bNGnSJCUkJDSsxcfH65FHHtHHH39scTIAAOAmjgosr9erY8eONVmvqqriFd0BAECbcVRgDR48WHl5efrqq68a1g4cOKD8/HylpKRYnAwAALiJo76LcOLEiRozZoyGDRum2NhYSdKxY8fUo0cPTZ482fJ0AADALRwVWJ06ddKrr76qjz76SLt375bX69WFF16ogQMHKiwszPZ4AADAJRwVWJLk8XiUkpLCJUEAAGCNowLL7/dr/vz52rJli06ePNnkie3vvfeepckAAICbOCqw/va3v2nHjh267rrrdOaZZ9oeBwAAuJSjAuvjjz/WkiVL1K9fP9ujAAAAF3PUyzRER0erU6dOtscAAAAu56jASk9P15IlS1RXV2d7FAAA4GKOukRYUVGhVatW6d///rfOPfdcRUREBP3%2BCy%2B8YGkyAADgJo4KLEkaPny47REAAIDLOSqw8vPzbY8AAADgrOdgSVJZWZmKior00EMP6b///a/efvttlZaW2h4LAAC4iKMCa//%2B/frjH/%2BoV199VWvWrNGJEyf01ltvacSIEdq%2Bfbvt8QAAgEs4KrAef/xxDR06VO%2B%2B%2B67OOOMMSdLcuXOVmpqqwsJCy9MBAAC3cFRgbdmyRWPGjAn6wc5er1f33Xefdu7caXEyAADgJo4KrPr6etXX1zdZP378uDwej4WJAACAGzkqsAYNGqSnnnoqKLIqKipUUFCgAQMGWJwMAAC4iaMCa9KkSdqxY4cGDRqk6upqjRs3TkOGDNHBgwc1ceJE2%2BMBAACXcNTrYHXp0kWvvfaaVq1apc8//1z19fUaNWqU0tPT1bFjR9vjAQAAl3BUYElSVFSURo4caXsMAADgYo4KrDvvvPMnf5%2BfRQgAANqCowIrMTEx6P3a2lrt379fX375pe666y5LUwEAALdxVGD92M8iXLBggY4cOdLi4%2Bzfv1%2BzZs3Sli1bdNZZZ%2BmOO%2B7Q3XffbWpMAADgcI76LsIfk56ern/%2B858t%2BrP19fXKzMxUXFycXn31Vc2cOVPFxcV68803W3lKAADgFK4IrK1bt7b4hUaPHj2q7t27a8aMGUpKStJvfvMbDRw4UJs3b27lKQEAgFM46hJhc09yr6ys1K5du3Tbbbe16Bg%2Bn0/z58%2BXJAUCAW3ZskUbN27U9OnTjc4KAACcy1GB1bVr16CfQyhJZ5xxhu644w5df/31p3281NRUHTp0SEOGDNGwYcNMjQkAABzOUYH1%2BOOPGz3ek08%2BqaNHj2rGjBnKz8/XtGnTWnS7srIy%2Bf3%2BoDWvN1o%2Bn8/ofGiexxMe9NYtvN728/m6dQ/aE/agdZzOecYe2GfzvndUYG3cuLHFf7Z///6n/DM9e/aUJFVXV2vChAl65JFHFBERccrblZSUqKioKGgtKytL2dnZLZ4Pv1xsbJTtEdpUXFyM7RGacNsetEfsgVk/5zxjD9zJUYE1evTohkuEgUCgYb3xWlhYmD7//PNmj3H06FFt27ZNQ4cObVi78MILdfLkSVVWVio%2BPv6Uc2RkZCg1NTVozeuNVnn58dP7hPCzeDzhio2N0rFjVaqrqz/1DRyiPX19uXUP2hP2oHWcznnGHtj3wx7Y4KjAWrRokfLy8vTwww8rOTlZERER%2BuyzzzRr1izdeOONuvbaa095jIMHD2r8%2BPFau3atunTpIknasWOH4uPjWxRX0v%2BeKN/4cqDf/51qaznB2lJdXb2r7vP2%2BLm6bQ/aI/bArJ9zX7IH7uSoC8P5%2BfnKycnRsGHDFBcXp5iYGA0YMECzZs3S8uXLlZiY2PDrx/Ts2VM9evTQlClTtGfPHq1du1YFBQW699572/AzAQAAocxRgVVWVtZsPHXs2FHl5eUtOobH49HChQsVFRWljIwMTZ06VaNHjz7lzzkEAAD4gaMuEV5xxRWaO3eunnjiCXXs2FGSVFFRoYKCAg0cOLDFx%2BnSpUuTJ6kDAAC0lKMCa9q0abrzzjs1ePBgJSUlKRAI6D//%2BY8SEhL0wgsv2B4PAAC4hKMC64ILLtBbb72lVatWae/evZKk22%2B/Xdddd52iovg2WQAA0DYcFViSdNZZZ2nkyJE6ePCgzj33XEn/ezV3AACAtuKoJ7kHAgEVFhaqf//%2BGj58uI4cOaKJEydq6tSpOnnypO3xAACASzgqsJYtW6bXX39d06dPb3jF9aFDh%2Brdd9/lSesAAKDNOCqwSkpKlJOTo5tuuqnh1duvvfZa5eXl6c0337Q8HQAAcAtHBdbBgwfVvXv3JuuXXHJJkx%2B%2BDAAA0FocFViJiYn67LPPmqx/8MEHDU94BwAAaG2O%2Bi7CP//5z5o5c6b8fr8CgYDWr1%2BvkpISLVu2TJMmTbI9HgAAcAlHBdaIESNUW1ur4uJiff/998rJyVF8fLweeOABjRo1yvZ4AADAJRwVWKtWrVJaWpoyMjL0zTffKBAIqFOnTrbHAgAALuOo52DNmjWr4cns8fHxxBUAALDCUYGVlJSkL7/80vYYAADA5Rx1ifCSSy7RhAkTtGTJEiUlJSkyMjLo9/Pz8y1NBgAA3MRRgbVv3z717dtXknjdKwAAYE3IB9bs2bM1fvx4RUdHa9myZbbHAQAACP3nYD333HOqqqoKWsvMzFRZWZmliQAAgNuFfGAFAoEmaxs3blR1dbWFaQAAABwQWAAAAO0NgQUAAGCYIwIrLCzM9ggAAAANQv67CCUpLy8v6DWvTp48qYKCAsXExAT9OV4HCwAAtIWQD6z%2B/fs3ec2r3r17q7y8XOXl5ZamAgAAbhbygcVrXwEAgPbGEc/BAgAAaE8ILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMILAAAAMMIrGZ8/fXXys7OVnJyslJSUpSfn6/q6mrbYwEAgBDhtT1AexMIBJSdna3Y2Fi99NJL%2BvbbbzVlyhSFh4dr4sSJtscDAAAhgEewGiktLdW2bduUn5%2Bviy66SP369VN2drZWrVplezQAABAiCKxGEhIStGTJEnXu3DlovbKy0tJEAAAg1HCJsJHY2FilpKQ0vF9fX68XX3xRAwYMaPExysrK5Pf7g9a83mj5fD5jc%2BLHeTzhQW/dwuttP5%2BvW/egPWEPWsfpnGfsgX0273sC6xQKCgq0c%2BdOvfzyyy2%2BTUlJiYqKioLWsrKylJ2dbXo8/ITY2CjbI7SpuLgY2yM08WN70G/q2208yS%2Bz6dE02yP8bG47D1rb7wrX2R7BsUL5PGsOgfUTCgoKtHTpUs2bN08XX3xxi2%2BXkZGh1NTUoDWvN1rl5cdNj4hmeDzhio2N0rFjVaqrq7c9TptpT19fTtuD9nTftpTT9gDO1xrn2Q/ngQ0E1o/Izc3V8uXLVVBQoGHDhp3WbX0%2BX5PLgX7/d6qt5S%2B5tlRXV%2B%2Bq%2B7w9fq5O2YNQ/hycsgdwPqd9nRJYzSgqKtKKFSs0d%2B5cpaU56yFLAADQ%2BgisRvbu3auFCxcqMzNTffv2DXqyekJCgsXJAABAqCCwGnnvvfdUV1en4uJiFRcXB/3erl27LE0FAABCCYHVSGZmpjIzM22PAQAAQhgvzgEAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgQUAAGAYgfUTampqNHz4cG3YsMH2KAAAIIQQWD%2BiurpaDz74oHbv3m17FAAAEGIIrGbs2bNHt9xyi7766ivbowAAgBBEYDXjk08%2B0ZVXXqmSkhLbowAAgBDktT1Ae3Tbbbf9otuXlZXJ7/cHrXm90fL5fL/ouGgZjyc86K1beL3t5/N12h60p/u2pZy2B3C%2B1jjPbH79E1itoKSkREVFRUFrWVlZys7ONv6x%2Bk192/gxEZp%2BV7jO9giOFRcXY3uEny02Nsr2CECLhPJ51hwCqxVkZGQoNTU1aM3rjVZ5%2BXFLEwH4JULx3PV4whUbG6Vjx6pUV1dvexzglFrjPPvhPLCBwGoFPp%2BvyeVAv/871dbylxwQikL53K2rqw/p%2BeEeTvs65eI8AACAYQQWAACAYQQWAACAYTwH6xR27dplewQAABBieAQLAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAILAADAMAKrGdXV1ZoyZYr69eunQYMG6dlnn7U9EgAACCFe2wO0R7Nnz9aOHTu0dOlSHTp0SBMnTlTXrl2VlpZmezQAABACCKxGTpw4oX/84x96%2Bumn1aNHD/Xo0UO7d%2B/WSy%2B9RGABAIAW4RJhI1988YVqa2vVu3fvhrW%2Bfftq%2B/btqq%2BvtzgZAAAIFTyC1Yjf71dcXJwiIiIa1jp37qzq6mpVVFQoPj7%2BlMcoKyuT3%2B8PWvN6o%2BXz%2BYzPC6D1eb2h939Rjyc86C3Q3rXGeWbz65/AaqSqqiooriQ1vF9TU9OiY5SUlKioqChobfz48br//vvNDPn/bHqUy5aNlZWVqaSkRBkZGUStJeyBfWVlZVq6dEm73wMn/x3GeWCfzfOA/9o0EhkZ2SSkfni/Q4cOLTpGRkaGXnnllaBfGRkZxmdF8/x%2Bv4qKipo8ioi2wx7Yxx7Yxx7YZ3MPeASrkS5duqi8vFy1tbXyev939/j9fnXo0EGxsbEtOobP5%2BN/KwAAuBiPYDXSvXt3eb1ebdu2rWFt8%2BbN6tmzp8LDubsAAMCpUQyNREVF6YYbbtCMGTP06aef6t1339Wzzz6rO%2B%2B80/ZoAAAgRHhmzJgxw/YQ7c2AAQO0c%2BdOzZkzR%2BvXr9e9996rESNG2B4LpyEmJkbJycmKiYmxPYprsQf2sQf2sQf22dqDsEAgEGjTjwgAAOBwXCIEAAAwjMACAAAwjMACAAAwjMACAAAwjMACAAAwjMACAAAwjMACAAAwjMACAAAwjMCCo3z99dfKzs5WcnKyUlJSlJ%2Bfr%2BrqattjuVJmZqYmTZpkewxXqqmp0cyZM9W/f39dddVVmjt3rnhN6bZ1%2BPBh3XPPPerTp49SU1P1/PPP2x7JNWpqajR8%2BHBt2LChYe3AgQP605/%2BpCuuuELXXnutPvzww1afg8CCYwQCAWVnZ6uqqkovvfSS5s2bp/fff1/z58%2B3PZrrrF69WmvXrrU9hmvl5eXpo48%2B0jPPPKM5c%2Bbo73//u0pKSmyP5SoPPPCAoqOj9corr2jKlCmaP3%2B%2B3nnnHdtjOV51dbUefPBB7d69u2EtEAgoKytLnTt31sqVK5Wenq7x48fr0KFDrToLgQXHKC0t1bZt25Sfn6%2BLLrpI/fr1U3Z2tlatWmV7NFepqKjQ7Nmz1bNnT9ujuFJFRYVWrlyp3NxcXX755Ro4cKDGjh2r7du32x7NNb799ltt27ZN48aNU1JSkoYOHaqUlBStX7/e9miOtmfPHt1yyy366quvgtY//vhjHThwQLNmzdIFF1yge%2B65R1dccYVWrlzZqvMQWHCMhIQELVmyRJ07dw5ar6ystDSROz3xxBNKT0/XhRdeaHsUV9q8ebM6duyo5OTkhrXMzEzl5%2BdbnMpdOnTooKioKL3yyis6efKkSktLtWXLFnXv3t32aI72ySef6Morr2zyaO327dt16aWXKjo6umGtb9%2B%2B2rZtW6vOQ2DBMWJjY5WSktLwfn19vV588UUNGDDA4lTusn79em3atEn33Xef7VFc68CBA0pMTNRrr72mtLQ0/fa3v9WCBQtUX19vezTXiIyMVE5OjkpKStSrVy/94Q9/0ODBgzVy5EjboznabbfdpilTpigqKipo3e/3y%2BfzBa116tRJR44cadV5vK16dMCigoIC7dy5Uy%2B//LLtUVyhurpa06dPV05Ojjp06GB7HNc6ceKE9u/frxUrVig/P19%2Bv185OTmKiorS2LFjbY/nGnv37tWQIUM0ZswY7d69W7m5uRo4cKCuv/5626O5TlVVlSIiIoLWIiIiVFNT06ofl8CCIxUUFGjp0qWaN2%2BeLr74YtvjuEJRUZEuu%2ByyoEcR0fa8Xq8qKys1Z84cJSYmSpIOHTqk5cuXE1htZP369Xr55Ze1du1adejQQT179tTXX3%2Bt4uJiAsuCyMhIVVRUBK3V1NS0%2Bn8ECSw4Tm5urpYvX66CggINGzbM9jiusXr1ah09elS9e/eWpIb/Ha5Zs0Zbt261OZqrJCQkKDIysiGuJOm8887T4cOHLU7lLjt27FC3bt2C/gG/9NJLtWjRIotTuVeXLl20Z8%2BeoLWjR482uWxoGoEFRykqKtKKFSs0d%2B5cpaWl2R7HVZYtW6ba2tqG9wsLCyVJEyZMsDWSK/Xq1UvV1dXat2%2BfzjvvPEn/%2Bw7b/x9caF0%2Bn0/79%2B9XTU1Nw6Wp0tJS/epXv7I8mTv16tVLixcv1vfff98QvZs3b1bfvn1b9ePyJHc4xt69e7Vw4UL95S9/Ud%2B%2BfeX3%2Bxt%2BofUlJiaqW7duDb9iYmIUExOjbt262R7NVc4//3xdc801mjx5sr744gutW7dOixcv1qhRo2yP5hqpqak644wzNG3aNO3bt0//%2Bte/tGjRIo0ePdr2aK6UnJysc845R5MnT9bu3bu1ePFiffrpp7r55ptb9ePyCBYc47333lNdXZ2Ki4tVXFwc9Hu7du2yNBXQ9goLC5Wbm6tRo0YpKipKt99%2BO/%2B4t6HTYugFAAAAmUlEQVQzzzxTzz//vB599FHdfPPNio%2BP17hx45SRkWF7NFfyeDxauHChpk6dqptuukndunXTggUL1LVr11b9uGEBfn4CAACAUVwiBAAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMIzAAgAAMOz/AFvvh8Xs%2BGkeAAAAAElFTkSuQmCC\">\n",
       "    </div>\n",
       "</div>\n",
       "</div><div class=\"row variablerow\">\n",
       "    <div class=\"col-md-3 namecol\">\n",
       "        <p class=\"h4\">product<br/>\n",
       "            <small>Categorical</small>\n",
       "        </p>\n",
       "    </div> <div class=\"col-md-3\">\n",
       "    <table class=\"stats \">\n",
       "        <tr class=\"\">\n",
       "            <th>Distinct count</th>\n",
       "            <td>13</td>\n",
       "        </tr>\n",
       "        <tr>\n",
       "            <th>Unique (%)</th>\n",
       "            <td>68.4%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Missing (%)</th>\n",
       "            <td>0.0%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Missing (n)</th>\n",
       "            <td>0</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Infinite (%)</th>\n",
       "            <td>0.0%</td>\n",
       "        </tr>\n",
       "        <tr class=\"ignore\">\n",
       "            <th>Infinite (n)</th>\n",
       "            <td>0</td>\n",
       "        </tr>\n",
       "    </table>\n",
       "</div>\n",
       "<div class=\"col-md-6 collapse in\" id=\"minifreqtable-1676247420538665343\">\n",
       "    <table class=\"mini freq\">\n",
       "        <tr class=\"\">\n",
       "    <th>pizza</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:40%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 21.1%\">\n",
       "            4\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> <tr class=\"\">\n",
       "    <th>taco</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:30%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 15.8%\">\n",
       "            3\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> <tr class=\"\">\n",
       "    <th>pasta</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:20%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 10.5%\">\n",
       "            &nbsp;\n",
       "        </div>\n",
       "        2\n",
       "    </td>\n",
       "</tr> <tr class=\"other\">\n",
       "    <th>Other values (10)</th>\n",
       "    <td>\n",
       "        <div class=\"bar\" style=\"width:100%\" data-toggle=\"tooltip\" data-placement=\"right\" data-html=\"true\"\n",
       "             data-delay=500 title=\"Percentage: 52.6%\">\n",
       "            10\n",
       "        </div>\n",
       "        \n",
       "    </td>\n",
       "</tr> \n",
       "    </table>\n",
       "</div> \n",
       "<div class=\"col-md-12 text-right\">\n",
       "    <a role=\"button\" data-toggle=\"collapse\" data-target=\"#freqtable-1676247420538665343, #minifreqtable-1676247420538665343\"\n",
       "       aria-expanded=\"true\" aria-controls=\"collapseExample\">\n",
       "        Toggle details\n",
       "    </a>\n",
       "</div>\n",
       "<div class=\"col-md-12 collapse extrapadding\" id=\"freqtable-1676247420538665343\">\n",
       "    <table class=\"freq table table-hover\">\n",
       "        <thead>\n",
       "        <tr>\n",
       "            <td class=\"fillremaining\">Value</td>\n",
       "            <td class=\"number\">Count</td>\n",
       "            <td class=\"number\">Frequency (%)</td>\n",
       "            <td style=\"min-width:200px\">&nbsp;</td>\n",
       "        </tr>\n",
       "        </thead>\n",
       "        <tr class=\"\">\n",
       "        <td class=\"fillremaining\">pizza</td>\n",
       "        <td class=\"number\">4</td>\n",
       "        <td class=\"number\">21.1%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:100%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">taco</td>\n",
       "        <td class=\"number\">3</td>\n",
       "        <td class=\"number\">15.8%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:75%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">pasta</td>\n",
       "        <td class=\"number\">2</td>\n",
       "        <td class=\"number\">10.5%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:50%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">taaaccoo</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">piza</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">hamburguer</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">BEER</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">pizzza</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">arepa</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">Rice</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">110790</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">Cake</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> <tr class=\"\">\n",
       "        <td class=\"fillremaining\">null</td>\n",
       "        <td class=\"number\">1</td>\n",
       "        <td class=\"number\">5.3%</td>\n",
       "        <td>\n",
       "            <div class=\"bar\" style=\"width:25%\">&nbsp;</div>\n",
       "        </td>\n",
       "</tr> \n",
       "    </table>\n",
       "</div> \n",
       "</div>\n",
       "    <div class=\"row headerrow highlight\">\n",
       "        <h1>Sample</h1>\n",
       "    </div>\n",
       "    <div class=\"row variablerow\">\n",
       "    <div class=\"col-md-12\" style=\"overflow:scroll; width: 100%%; overflow-y: hidden;\">\n",
       "        <table border=\"1\" class=\"dataframe sample\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>firstName</th>\n",
       "      <th>lastName</th>\n",
       "      <th>billingId</th>\n",
       "      <th>product</th>\n",
       "      <th>price</th>\n",
       "      <th>birth</th>\n",
       "      <th>dummyCol</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Luis</td>\n",
       "      <td>Alvarez$$%!</td>\n",
       "      <td>123</td>\n",
       "      <td>Cake</td>\n",
       "      <td>10</td>\n",
       "      <td>1980/07/07</td>\n",
       "      <td>never</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>André</td>\n",
       "      <td>Ampère</td>\n",
       "      <td>423</td>\n",
       "      <td>piza</td>\n",
       "      <td>8</td>\n",
       "      <td>1950/07/08</td>\n",
       "      <td>gonna</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>NiELS</td>\n",
       "      <td>Böhr//((%%</td>\n",
       "      <td>551</td>\n",
       "      <td>pizza</td>\n",
       "      <td>8</td>\n",
       "      <td>1990/07/09</td>\n",
       "      <td>give</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>PAUL</td>\n",
       "      <td>dirac$</td>\n",
       "      <td>521</td>\n",
       "      <td>pizza</td>\n",
       "      <td>8</td>\n",
       "      <td>1954/07/10</td>\n",
       "      <td>you</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Albert</td>\n",
       "      <td>Einstein</td>\n",
       "      <td>634</td>\n",
       "      <td>pizza</td>\n",
       "      <td>8</td>\n",
       "      <td>1990/07/11</td>\n",
       "      <td>up</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "    </div>\n",
       "</div>\n",
       "</div>"
      ],
      "text/plain": [
       "<spark_df_profiling_optimus.ProfileReport at 0x1128f3198>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Instance of profiler class\n",
    "profiler = op.DataFrameProfiler(df)\n",
    "profiler.profiler()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Instantiation of analyzer class"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But if you want more information for data exploration, Optimus has the DataFrameAnalizer which has several functions for analyzing your dataset. It presents a table that specifies the existing datatypes in each column dataFrame and other features. Also, for this particular case, the table of dataType is shown in order to visualize a sample of column content. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Instance of analyzer class\n",
    "analyzer = op.DataFrameAnalyzer(df=df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "DataFrameAnalizer has a method called columnAnalize. This method can check all rows of\n",
    "dataFrame and tries to parse each element of each row to determine if the corresponding \n",
    "element is a string or a number. Besides, it can show 20 distinct values of each column\n",
    "classified according the possible datatype value, i.e: a number can be a string, so this \n",
    "function can recognize a number in a column of string dataType by trying to parse the string. \n",
    "\n",
    "Also the function can plot numerical or categorical histograms."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### General view of DataFrame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Initially it is a good idea to see a general view of the DataFrame to be analyzed. \n",
    "\n",
    "In the following cell, the basic results of analyzing the DataFrame are made are shown. Basic results include a table that specifies the existing datatypes in each column dataFrame and other features. Also, for this particular case, the table of dataType is shown in order to visualize a sample of column content. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>id</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a237b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  1\n",
      "Max value:  19\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a7aeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 6.364997863769531\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>firstName</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a1b518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a3da90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.980332851409912\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>lastName</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a7a3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a1b438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.8731741905212402\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>billingId</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a50cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  111\n",
      "Max value:  992\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112723400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 3.079150915145874\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>product</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>18</td><td>94.74 %</td></tr><tr><td>Integer</td><td>1</td><td>5.26 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x1075e8470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112ac4828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.797947883605957\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>price</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a7a160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  1\n",
      "Max value:  10\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a50198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 2.50827693939209\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>birth</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112ac4240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a1ba58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.4246118068695068\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>dummyCol</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a3ddd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a370f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.3449747562408447\n",
      "Total execution time:  20.480989933013916\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><th colspan=3>General description</td></tr><tr><th colspan=1>Features</td><th colspan=2>Name or Quantity</td></tr><tr><th colspan=1>File Name</td><td colspan=2>file with no path</td></tr><tr><th colspan=1>Columns</td><td colspan=2>8</td></tr><tr><th colspan=1>Rows</td><td colspan=2>19</td></tr>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.GeneralDescripTable at 0x107b47240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "analyzer_tables = analyzer.column_analyze(column_list=\"*\", print_type=True, plots=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The results obtained by running the analyzer class, details the presence of special chars, \n",
    "string columns with possible numbers on them and None and empty string values in columns."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also plot histograms for individual columns using the `plot_hist` function. This is an interesting feature because you are plotting from a Spark Dataframe:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nffv0u9/9Tr1799bAgQO1bNkyu0sKGuPHj9fMmTPtLsNW7733nq644grLl8vlsrssIOgcPHhQ9957\nr6666io5nU699NJLdpdkm8OHD8vlcqlv3766/vrrtXr1artLssW5Mtf+/fv1m9/8Rr169dJNN92k\njz76yOfnjfZnkYHkdrs1depU7dmzx+5SbOXxeORyuZSUlKTXXntNx44d06xZsxQZGakZM2bYXZ5R\nNTU1Gj9+vDIyMrRmzRrt27dPDz74oNq0aaNbbrnF7vJs9fbbb6ugoEDDhw+3uxRbFRYWatCgQcrK\nyqpdFhsba2NFQHCaPHmy2rZtq9WrV6uwsFDTpk1Tu3btdP3119tdmlEej0cTJ05UTU2NXn75ZR06\ndEgzZsxQ8+bNdcMNN9hdnjHnylxnetOlSxe99dZb2rhxoyZNmqS//vWvatu2rdfP3SSueBYWFuqO\nO+7Qv/71L7tLsV1xcbG2b9+u7OxsXX755erbt69cLpc2bNhgd2nGlZWVqWvXrpozZ47S09N13XXX\n6ZprrtG2bdvsLs1WR48eVU5OjjIyMuwuxXZFRUXq0qWLWrduXfuVlJRkd1lAUDl27Ji2b9+uCRMm\nKD09XYMHD9aAAQO0ZcsWu0szbufOnfrss880f/58devWTYMGDdK4ceO0fPlyu0sz5nyZ6+9//7v2\n79+vJ554Qpdddpnuvfde9erVS2+99ZZPz98kgucnn3yi/v37Kz8/3+5SbNe6dWstW7ZMaWlpluXl\n5eU2VWQfh8OhhQsXqnnz5vJ4PNq2bZu2bt2qfv362V2arZ5++mkNGzZMnTt3trsU2xUVFSk9Pd3u\nMoCgFhcXp/j4eK1evVqVlZUqLi7WP/7xD3Xt2tXu0ozbv3+/UlJSdOmll9Yuu+KKK7Rz505VVlba\nWJk558tcn3/+ubp166aEhITaZX369NH27dt9ev4mcat99OjRdpcQNJKSkjRgwIDaxzU1NXr11Vd1\n9dVX21iV/ZxOpw4cOKBBgwbpxhtvtLsc22zZskWffvqp1q9frzlz5thdjq08Ho/27t2rjz76SEuX\nLlV1dbWGDBkil8ulmJgYu8sDgkZsbKweffRRZWVl6eWXX1Z1dbVGjBih22+/3e7SjEtLS9OJEyd0\n6tQpxcfHS5K+++47VVVV6cSJE0pJSbG5wsA7X+YqLS2Vw+GwLEtNTdV3333n0/M3iSueOL/c3Fzt\n2rVLU6ZMsbsUWz333HNasmSJvvzyS2VnZ9tdji3cbrcee+wxPfroo4qLi7O7HNsdOHBAp06dUkxM\njBYuXKgZM2Zo/fr1ysnJsbs0IOgUFRVp0KBBys/PV3Z2tv77v/9b69ats7ss46688ko5HA5lZWXp\nhx9+0L59+7RixQpJCpsrnudz5nz6YzExMaqoqPDpeZrEFU+cW25urlauXKkFCxaoS5cudpdjqzPv\nZ3S73Zo2bZoeeuihsLuqlZeXpx49eliuiIezdu3a6eOPP1bLli0VERGhrl27qqamRtOnT9fDDz+s\nqKgou0sEgsKWLVv05ptvqqCgQHFxccrIyNChQ4e0ePFi/epXv7K7PKNiY2O1cOFCTZ48WX369FFq\naqrGjRun7OxsNW/e3O7ybBUbG6ujR49allVUVPh8oYPg2URlZWXp9ddfV25ubtjeWi4rK9P27ds1\nePDg2mWdO3dWZWWlysvLw+KWyI+9/fbbKisrU+/evSWp9v9C3333XX322Wd2lmabVq1aWR5fdtll\ncrvdOnbsWNgdH8D57Ny5Ux06dLAEiG7dumnJkiU2VmWfnj17atOmTSotLVVycrL+53/+R8nJyUpM\nTLS7NFu1adNGhYWFlmVlZWU/uf3eEG61N0F5eXlatWqVnnnmGd188812l2Obb775RpMmTdKhQ4dq\nl+3cuVMpKSlhGSpeeeUVrV+/XmvXrtXatWvldDrldDq1du1au0uzxebNm9W/f3+dOnWqdtmXX36p\nVq1aheXxAZyPw+HQvn37LLdMi4uLdckll9hYlT2OHj2qUaNG6ciRI2rdurWio6P1t7/9Lew/tCr9\n+20IX3zxhU6fPl27bNu2bbryyit9eh6CZxNTVFSkRYsW6b/+67/Up08flZaW1n6Fm4yMDHXv3l2z\nZs1SYWGhCgoKlJubq/vuu8/u0mzRrl07dejQofYrMTFRiYmJ6tChg92l2aJ3796KjY3V7NmzVVxc\nrIKCAuXk5GjcuHF2lwYEFafTqWbNmmn27Nnau3evNm3apCVLlmjMmDF2l2Zcq1at9MMPPyg3N1f7\n9+/XG2+8obfeeovzhqR+/frp4osv1sMPP6w9e/boT3/6k3bs2KHbbrvNp+fhVnsT8/7776u6ulqL\nFy/W4sWLLf+2e/dum6qyR1RUlBYtWqSsrCxlZmYqPj5eY8aM0dixY+0uDUGgefPmWr58uebOnauR\nI0cqMTFRd955Jz9AgLO0aNFCL730kv74xz/qtttuU0pKiiZMmKDMzEy7S7PFggUL9Nhjj+mWW27R\nJZdcomeffVY9e/a0uyzbnfmZ+8gjj2jEiBHq0KGDXnjhBZ9+ebwkRXg8Hk+AagQAAABqcasdAAAA\nRhA8AQAAYATBEwAAAEYQPAEAAGAEwRMAAABGEDwBAABgBMETAAAARhA8AQAAYATBEwAAAEYQPAEA\nAGAEwRMAAABGEDwBAABgxP8HKZHDaxLgYs4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1075e8470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "analyzer.plot_hist(\"price\",\"numerical\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Instantiation of DataFrameTransformer\n",
    "DataFrameTransformer is a specialized class to make dataFrame transformations. Transformations are optimized as much as possible to internally used native spark \n",
    "transformation functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Instance of transformer class \n",
    "transformer = op.DataFrameTransformer(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+---+---------+--------------------+---------+--------+-----+----------+--------+\n",
      "| id|firstName|            lastName|billingId| product|price|     birth|dummyCol|\n",
      "+---+---------+--------------------+---------+--------+-----+----------+--------+\n",
      "|  1|     Luis|         Alvarez$$%!|      123|    Cake|   10|1980/07/07|   never|\n",
      "|  2|    André|              Ampère|      423|    piza|    8|1950/07/08|   gonna|\n",
      "|  3|    NiELS|          Böhr//((%%|      551|   pizza|    8|1990/07/09|    give|\n",
      "|  4|     PAUL|              dirac$|      521|   pizza|    8|1954/07/10|     you|\n",
      "|  5|   Albert|            Einstein|      634|   pizza|    8|1990/07/11|      up|\n",
      "|  6|  Galileo|             GALiLEI|      672|   arepa|    5|1930/08/12|   never|\n",
      "|  7|     CaRL|            Ga%%%uss|      323|    taco|    3|1970/07/13|   gonna|\n",
      "|  8|    David|          H$$$ilbert|      624|taaaccoo|    3|1950/07/14|     let|\n",
      "|  9| Johannes|              KEPLER|      735|    taco|    3|1920/04/22|     you|\n",
      "| 10|    JaMES|         M$$ax%%well|      875|    taco|    3|1923/03/12|    down|\n",
      "+---+---------+--------------------+---------+--------+-----+----------+--------+\n",
      "only showing top 10 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "transformer.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Trimming blanck spaces at beginning and endings of cells dataFrames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "| id|firstName|   lastName|billingId|product|price|     birth|dummyCol|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "|  1|     Luis|Alvarez$$%!|      123|   Cake|   10|1980/07/07|   never|\n",
      "|  2|    André|     Ampère|      423|   piza|    8|1950/07/08|   gonna|\n",
      "|  3|    NiELS| Böhr//((%%|      551|  pizza|    8|1990/07/09|    give|\n",
      "|  4|     PAUL|     dirac$|      521|  pizza|    8|1954/07/10|     you|\n",
      "|  5|   Albert|   Einstein|      634|  pizza|    8|1990/07/11|      up|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Trimmed dataFrame:\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "| id|firstName|   lastName|billingId|product|price|     birth|dummyCol|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "|  1|     Luis|Alvarez$$%!|      123|   Cake|   10|1980/07/07|   never|\n",
      "|  2|    André|     Ampère|      423|   piza|    8|1950/07/08|   gonna|\n",
      "|  3|    NiELS| Böhr//((%%|      551|  pizza|    8|1990/07/09|    give|\n",
      "|  4|     PAUL|     dirac$|      521|  pizza|    8|1954/07/10|     you|\n",
      "|  5|   Albert|   Einstein|      634|  pizza|    8|1990/07/11|      up|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "# Triming string blank spaces:\n",
    "transformer.trim_col(\"*\")\n",
    "\n",
    "# Printing trimmed dataFrame:\n",
    "print('Trimmed dataFrame:')\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Removing especial chars and accents:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "| id|firstName|   lastName|billingId|product|price|     birth|dummyCol|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "|  1|     Luis|Alvarez$$%!|      123|   Cake|   10|1980/07/07|   never|\n",
      "|  2|    André|     Ampère|      423|   piza|    8|1950/07/08|   gonna|\n",
      "|  3|    NiELS| Böhr//((%%|      551|  pizza|    8|1990/07/09|    give|\n",
      "|  4|     PAUL|     dirac$|      521|  pizza|    8|1954/07/10|     you|\n",
      "|  5|   Albert|   Einstein|      634|  pizza|    8|1990/07/11|      up|\n",
      "+---+---------+-----------+---------+-------+-----+----------+--------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Removing special chars and accents dataFrame:\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|dummyCol|\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "|  1|     Luis| Alvarez|      123|   Cake|   10|19800707|   never|\n",
      "|  2|    Andre|  Ampere|      423|   piza|    8|19500708|   gonna|\n",
      "|  3|    NiELS|    Bohr|      551|  pizza|    8|19900709|    give|\n",
      "|  4|     PAUL|   dirac|      521|  pizza|    8|19540710|     you|\n",
      "|  5|   Albert|Einstein|      634|  pizza|    8|19900711|      up|\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "# Remove special chars:\n",
    "transformer.remove_special_chars(\"*\").clear_accents(\"*\")\n",
    "\n",
    "# This can also be done by passing a Regex if you want something more personalized\n",
    "\n",
    "#####################################################################\n",
    "\n",
    "#transformer.remove_special_chars_regex(\"*\",'[^\\w\\s]').clear_accents(\"*\")\n",
    "\n",
    "#####################################################################\n",
    "\n",
    "# Printing trimmed dataFrame:\n",
    "print('Removing special chars and accents dataFrame:')\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Drop dummy column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|dummyCol|\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "|  1|     Luis| Alvarez|      123|   Cake|   10|19800707|   never|\n",
      "|  2|    Andre|  Ampere|      423|   piza|    8|19500708|   gonna|\n",
      "|  3|    NiELS|    Bohr|      551|  pizza|    8|19900709|    give|\n",
      "|  4|     PAUL|   dirac|      521|  pizza|    8|19540710|     you|\n",
      "|  5|   Albert|Einstein|      634|  pizza|    8|19900711|      up|\n",
      "+---+---------+--------+---------+-------+-----+--------+--------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Dataframe without dummy column:\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "|  1|     Luis| Alvarez|      123|   Cake|   10|19800707|\n",
      "|  2|    Andre|  Ampere|      423|   piza|    8|19500708|\n",
      "|  3|    NiELS|    Bohr|      551|  pizza|    8|19900709|\n",
      "|  4|     PAUL|   dirac|      521|  pizza|    8|19540710|\n",
      "|  5|   Albert|Einstein|      634|  pizza|    8|19900711|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "# Droping a column:\n",
    "transformer.drop_col(\"dummyCol\")\n",
    "\n",
    "# Printing trimmed dataFrame:\n",
    "print('Dataframe without dummy column:')\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Setting all letters to lowerCase"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "|  1|     Luis| Alvarez|      123|   Cake|   10|19800707|\n",
      "|  2|    Andre|  Ampere|      423|   piza|    8|19500708|\n",
      "|  3|    NiELS|    Bohr|      551|  pizza|    8|19900709|\n",
      "|  4|     PAUL|   dirac|      521|  pizza|    8|19540710|\n",
      "|  5|   Albert|Einstein|      634|  pizza|    8|19900711|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Setting all letters to lowerCase:\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|19800707|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|19500708|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|19900709|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|19540710|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|19900711|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "print('Setting all letters to lowerCase:')\n",
    "transformer.lower_case(\"*\")\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Date Transformation (Format of date is changed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "| id|firstName|lastName|billingId|product|price|   birth|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|19800707|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|19500708|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|19900709|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|19540710|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|19900711|\n",
      "+---+---------+--------+---------+-------+-----+--------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Dataframe without dummy column:\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "| id|firstName|lastName|billingId|product|price|     birth|\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "# Priting the new date format:\n",
    "print('Dataframe without dummy column:')\n",
    "transformer.date_transform(\"birth\", \"yyyyMMdd\", \"dd-MM-YYYY\") \\\n",
    "           .show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Age calculation from birth date client"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataFrame:\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "| id|firstName|lastName|billingId|product|price|     birth|\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|\n",
      "+---+---------+--------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Printing calculation of age born date client\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "| id|firstName|lastName|billingId|product|price|     birth|clientAge|\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|  37.7823|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|  67.7769|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|  27.7796|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|  63.7903|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|  27.7796|\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing of original dataFrame:\n",
    "print('Original dataFrame:')\n",
    "transformer.show(5)\n",
    "\n",
    "print(\"Printing calculation of age born date client\")\n",
    "transformer.age_calculate(\"birth\", \"dd-MM-YYYY\", \"clientAge\") \\\n",
    "           .show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Renaming columns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataframe\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "| id|firstName|lastName|billingId|product|price|     birth|clientAge|\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|  37.7823|\n",
      "|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|  67.7769|\n",
      "|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|  27.7796|\n",
      "|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|  63.7903|\n",
      "|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|  27.7796|\n",
      "+---+---------+--------+---------+-------+-----+----------+---------+\n",
      "only showing top 5 rows\n",
      "\n",
      "Renaming some columns of dataFrame\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "|    age| id|firstName|lastName|billingId|product|price|     birth|\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "|37.7823|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|\n",
      "|67.7769|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|\n",
      "|27.7796|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|\n",
      "|63.7903|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|\n",
      "|27.7796|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing original dataframe:\n",
    "print (\"Original dataframe\")\n",
    "transformer.show(5)\n",
    "print (\"Renaming some columns of dataFrame\")\n",
    "transformer.rename_col(columns=[(\"clientAge\", \"age\")])\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Changing positions of columns dataframe:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataframe\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "|    age| id|firstName|lastName|billingId|product|price|     birth|\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "|37.7823|  1|     luis| alvarez|      123|   cake|   10|07-07-1980|\n",
      "|67.7769|  2|    andre|  ampere|      423|   piza|    8|08-07-1950|\n",
      "|27.7796|  3|    niels|    bohr|      551|  pizza|    8|09-07-1990|\n",
      "|63.7903|  4|     paul|   dirac|      521|  pizza|    8|10-07-1954|\n",
      "|27.7796|  5|   albert|einstein|      634|  pizza|    8|11-07-1990|\n",
      "+-------+---+---------+--------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n",
      "age column moved\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "| id|firstName|lastName|    age|billingId|product|price|     birth|\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "|  1|     luis| alvarez|37.7823|      123|   cake|   10|07-07-1980|\n",
      "|  2|    andre|  ampere|67.7769|      423|   piza|    8|08-07-1950|\n",
      "|  3|    niels|    bohr|27.7796|      551|  pizza|    8|09-07-1990|\n",
      "|  4|     paul|   dirac|63.7903|      521|  pizza|    8|10-07-1954|\n",
      "|  5|   albert|einstein|27.7796|      634|  pizza|    8|11-07-1990|\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing original dataframe:\n",
    "print (\"Original dataframe\")\n",
    "transformer.show(5)\n",
    "\n",
    "# This action is to move column age, just after the lastName column\n",
    "print (\"age column moved\")\n",
    "transformer.move_col(\"age\", \"lastName\", \"after\")\n",
    "transformer.show(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Setting a custom transformation\n",
    "The core of this function is base on the user define function provide from the lambda function provided in the 'func' argument. \n",
    "\n",
    "In this example, cells that are not greater than 20, are multiplied by 20, the rest of them stay intact."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original dataframe\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "| id|firstName|lastName|    age|billingId|product|price|     birth|\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "|  1|     luis| alvarez|37.7823|      123|   cake|   10|07-07-1980|\n",
      "|  2|    andre|  ampere|67.7769|      423|   piza|    8|08-07-1950|\n",
      "|  3|    niels|    bohr|27.7796|      551|  pizza|    8|09-07-1990|\n",
      "|  4|     paul|   dirac|63.7903|      521|  pizza|    8|10-07-1954|\n",
      "|  5|   albert|einstein|27.7796|      634|  pizza|    8|11-07-1990|\n",
      "+---+---------+--------+-------+---------+-------+-----+----------+\n",
      "only showing top 5 rows\n",
      "\n",
      " Multiplying by 20 a number if value in cell is greater than 20:\n",
      "+---+------------+--------+--------+---------+----------+-----+----------+\n",
      "| id|   firstName|lastName|     age|billingId|   product|price|     birth|\n",
      "+---+------------+--------+--------+---------+----------+-----+----------+\n",
      "|  1|        luis| alvarez| 37.7823|      123|      cake|  200|07-07-1980|\n",
      "|  2|       andre|  ampere| 67.7769|      423|      piza|  160|08-07-1950|\n",
      "|  3|       niels|    bohr| 27.7796|      551|     pizza|  160|09-07-1990|\n",
      "|  4|        paul|   dirac| 63.7903|      521|     pizza|  160|10-07-1954|\n",
      "|  5|      albert|einstein| 27.7796|      634|     pizza|  160|11-07-1990|\n",
      "|  6|     galileo| galilei| 87.7849|      672|     arepa|  100|12-08-1930|\n",
      "|  7|        carl|   gauss| 47.7876|      323|      taco|   60|13-07-1970|\n",
      "|  8|       david| hilbert| 67.7769|      624|  taaaccoo|   60|14-07-1950|\n",
      "|  9|    johannes|  kepler| 97.7876|      735|      taco|   60|22-04-1920|\n",
      "| 10|       james| maxwell| 94.7796|      875|      taco|   60|12-03-1923|\n",
      "| 11|       isaac|  newton| 18.7903|      992|     pasta|  180|15-02-1999|\n",
      "| 12|        emmy| noether| 24.7903|      234|     pasta|  180|08-12-1993|\n",
      "| 13|         max|  planck| 23.7930|      111|hamburguer|   80|04-01-1994|\n",
      "| 14|        fred|   hoyle| 20.7849|      553|    pizzza|  160|27-06-1997|\n",
      "| 15|   heinrich |   hertz| 61.7769|      116|     pizza|  160|30-11-1956|\n",
      "| 16|     william| gilbert| 59.7849|      886|      beer|   40|26-03-1958|\n",
      "| 17|       marie|   curie| 17.7930|      912|      rice|   20|22-03-2000|\n",
      "| 18|      arthur| compton|118.7769|      812|    110790|  100|01-01-1899|\n",
      "| 19|       james|chadwick| 96.7930|      467|      null|  200|03-05-1921|\n",
      "+---+------------+--------+--------+---------+----------+-----+----------+\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Printing original dataframe:\n",
    "print (\"Original dataframe\")\n",
    "transformer.show(5)\n",
    "\n",
    "print (' Multiplying by 20 a number if value in cell is greater than 20:')\n",
    "# Replacing a number:   \n",
    "func = lambda cell: (cell * 20) if ((cell != None) and (cell < 20)) else cell\n",
    "transformer.set_col(['price'], func, 'integer')\n",
    "transformer.show(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After the transformation process detailed in the previous cells. It is a good idea to\n",
    "analyze to see if the transformations have solved issued related with special characters, \n",
    "presence of number in column where is to supposed only letters, etc."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analyzing columns after transformations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>id</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112a7a5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  1\n",
      "Max value:  19\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112a40400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nJ0rboLi4OIYMGRZDhgxLPQoAQLvmNaX7UH19ffz610+kHgMA4IAnSvehzZs3xa233pR6DACAA54o\n3Ye6d+80m6kWAAAHlklEQVQRzz77X6nHAAA44IlSAACS80anvbR48YutXnfgwJP24SQAAO2fKN1L\nt98+OV599ZWIiGhubt7lenl5efHMM4v211gAAO2SKN1L99zzYIwf/y/x9ttvxowZ90dRUVHqkQAA\n2i1R+lc+d9szrV/54G9Ep5d+EF+69F+iacDQFg/915gvZjwZAEDu8kantigojMZTvh3NnyhLPQkA\nQLvmTmkbNZf2iubSXqnHAABo19wpBQAgOVEKAEByohQAgOREKQAAyYlSAACSE6UAACQnSgEASE6U\nAgCQnCgFACA5UQoAQHKiFACA5EQpAADJiVIAAJITpQAAJCdKAQBITpQCAJCcKAUAIDlRCgBAcqIU\nAIDkRCkAAMllGqX19fVxww03xCmnnBKnn3563HfffVluHgCAHFWY5camTJkSS5cujVmzZsVbb70V\n1113XRx66KHx9a9/PcvdAACQYzKL0r/85S/xyCOPxE9/+tPo379/9O/fP1auXBk///nPRSkAALuV\n2Y/vX3755WhsbIwTTzxxx7KTTz45Xnrppdi+fXtWuwEAIAdldqe0rq4uunXrFp07d96xrKysLOrr\n62P9+vXRvXv3j91GbW1t1NXVtRywsCTKy8uzGnO/KSzcf+8hKyjIb/EV2uLjzl3nW/vjmELHk6JD\n2iqzKN2yZUuLII2IHd83NDS0ahs1NTVRXV3dYtno0aPjiiuuyGbIVnh10t/tt31lpba2NmbNuicq\nKyvbZcCTnf1x/jrf9i/HFDqWjtwhmUVpUVHRTvH54ffFxcWt2kZlZWVUVFS0WNazZ89sBsxhdXV1\nUV1dHRUVFf5BYZ9zvuUexxRoi6yuIZlFaa9evWLdunXR2NgYhYWFO4YsLi6O0tLSVm2jvLzcBREA\noAPK7AUHxx57bBQWFsbixYt3LHvhhRdiwIABkZ/vdUoAAOxaZrXYpUuXOOuss2L8+PGxZMmSmDt3\nbtx3333x93//91ntAgCAHFUwfvz48Vlt7POf/3wsX748brvttliwYEFcdtllce6552a1eXaja9eu\nMWjQoOjatWvqUegAnG+5xzEF2iKLa0hec3Nzc4YzAQDAHvNiTwAAkhOlAAAkJ0oBAEhOlAIAkJwo\nBQAgOVEKAEByohQAgOREKQAAyYnSHDFixIgYO3Zs6jHIcW+//XZceumlcdJJJ0VFRUXMnDkz9Ujs\npYaGhhgyZEgsXLhwp8fWrFkTJ554YoKpgPbio64hzz//fJxzzjkxcODAGDZsWPznf/7nHm1TlOaA\nJ598MubPn596DDqAK6+8MkpKSmL27Nlxww03xJ133hn/8R//kXos9lB9fX1cffXVsXLlyp0ee/PN\nN2PkyJFRX1+fYDKgPfioa8jatWvjsssui29+85vx+OOPxze+8Y24/PLL45133mn1dkVpO7d+/fqY\nMmVKDBgwIPUo5LgNGzbE4sWLY+TIkdG3b98488wzY/DgwbFgwYLUo7EHVq1aFcOHD4/XX399p8ee\neuqpOPfcc6OoqCjBZEB7sKtryIsvvhgFBQVxySWXxKc//em47LLLoqioKBYvXtzqbYvSdm7y5Mkx\nbNiwOOqoo1KPQo4rLi6OLl26xOzZs2Pbtm2xZs2aePHFF+PYY49NPRp7YNGiRXHqqadGTU3NTo89\n/fTTcfXVV3spELBLu7qGHHzwwbF+/fr47W9/G83NzTF37tzYvHlzHH300a3edmHWw7L/LFiwIJ5/\n/vl4/PHHY/z48anHIccVFRXFuHHjYsKECfHAAw9EU1NTnHPOOXH++eenHo09cOGFF+7ysYkTJ0ZE\n7PHrwICOY1fXkFNOOSUuuuiiqKqqivz8/GhqaoqJEyfGkUce2eptu1PaTtXX18f3v//9GDduXBQX\nF6cehw5i9erVccYZZ0RNTU1MnDgxfvOb38ScOXNSjwVAYps3b4433ngjRo8eHY888khcdtllcfPN\nN8fq1atbvQ13Stup6urqOO6442Lw4MGpR6GDWLBgQTz66KMxf/78KC4ujgEDBsS7774b06dPj6FD\nh6YeD4CE7rnnnmhubo7Ro0dHRET//v1jyZIl8cADD8RNN93Uqm2I0nbqySefjPfee2/Hx7Y0NDRE\nxP+8UeFPf/pTytHIUUuXLo0+ffq0uDPfr1+/mDFjRsKpADgQLFu2LI455pgWy4499tiP/JSPXRGl\n7dSDDz4YjY2NO76fNm1aRERcc801qUYix5WXl8drr70WDQ0N0blz54j4n8+zPOywwxJPBkBq5eXl\nsWrVqhbL9vTfCK8pbad69+4dffr02fG/rl27RteuXaNPnz6pRyNHVVRURKdOneLGG2+MV155JebN\nmxczZsyIiy++OPVoACR2/vnnxzPPPBMzZ86MN954I2bOnBl/+MMfdvvmyr8mSoFWOeigg2LmzJlR\nV1cX5513XkycODFGjhwZlZWVqUcDILGBAwfGj370o/jlL38ZQ4cOjTlz5sTdd98df/M3f9PqbeQ1\nNzc378MZAQDgY7lTCgBAcqIUAIDkRCkAAMmJUgAAkhOlAAAkJ0oBAEhOlAIAkJwoBQAgOVEKAEBy\nohQAgOREKQAAyYlSAACS+7+dX+YtPCSZpwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112b5f550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 4.61762809753418\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>firstName</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x1084afc88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112abada0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nW6f7779fO3bs0JEjR9S9e3d99NFH6t+/v/7973+bHq9QLF++XGfPnjU9BgALW716tX7//XfTY6AA\nhg0bpnPnzuVa/scffygqKsrAREUjOztbkpSSkqK1a9cqOTnZ8ES3FnfTAxRn06dPV1RUlP72t79p\nypQpuvPOO7V69Wp9+eWXeu2119SjRw/TIxbYokWLNGbMGN13333q1KmT2rZtK29vb9NjFcixY8fy\nvG6lSpWKcJKiEx8fn+d1H3300SKcBIUlMTFRCxYsUHJysrKyslS1alV1795dISEhpkcrsDFjxigu\nLk6333676VGKRFJSkqZOnark5GRlZGTk+vr69esNTFVwu3bt0pEjRyRd/plTt25dlSlTxmGd5ORk\nff311ybGK1Q7duzQ888/r5iYGAUEBCg8PFzp6em6ePGiYmJi1LFjR9Mj3hIopQb9/PPPOW/E9evX\nq0OHDpKkGjVq6LfffjM5WqFZtWqVkpKStHbtWs2dO1evvvqqWrVqpU6dOqlVq1by8PAwPaLTwsLC\nZLPZci232+2S5PC177///qbNVZhmzpzp8Pnx48fl4eGhKlWqqGTJkjpy5IjS09NVu3ZtSqkL+OKL\nL/TCCy+offv2Cg8PV1ZWlhISEvT0009r+vTpeuCBB0yPWCDNmjXT6tWr1bdvX5f8mfJXBg8eLC8v\nL/Xs2VNeXl6mxyk03t7emjVrlux2u+x2u+bPny83t//twLXZbCpVqpReeuklg1MWjgkTJujBBx9U\ncHCwFixYIE9PT23YsEGffPKJZs6cSSn9/yilBlWqVEnbtm2Tv7+/fvzxR4WFhUm6XOTuvfdes8MV\nomrVqmngwIEaOHCgkpKS9PHHH+vll1+Wu7u72rVrpy5duqhRo0amx8yzq7dKfPXVV1qyZImGDRum\noKAgeXh4aP/+/Zo4caK6du1qcMqC2bBhQ86f58yZo71792r8+PE5W6LOnTunkSNHytfX19SIcMKM\nGTP00ksvqVevXg7LFy1apFmzZrl8KT116pRmz56tuXPnqnz58vL09HT4uqtuSbzip59+0vLly1Wt\nWjXToxSq2rVr53xvwsPDtWjRIvn4+Bieqmj88MMPmjlzpry9vbVhwwa1b99eHh4eCgkJ0ejRo02P\nd8uglBoUFRWl6OhoZWVlqXXr1goKCtKkSZP0/vvvKzY21vR4herEiRP67LPP9PnnnyshIUH169fX\ngw8+qNTUVPXr109du3bV4MGDTY+ZJ3fddVfOn99++23NmDFDwcHBOcuaNWumsWPHql+/fnriiSdM\njFioFixYkGvXaJkyZTRw4EA9/vjjGj58uMHpCkdycrIOHjyYc9Lh1aywJfiXX35RmzZtci1v06aN\npk6damCiwtW1a1eX/kfgX7ly7oHVSunVTp8+raNHj6pOnTqmRykSvr6+Onz4sC5cuKDExEQNHTpU\nkvTNN9/ozjvvNDzdrYNSatCDDz6o5s2b68SJEwoMDJQkdenSRb1797bMFqhFixbps88+0+7du1Wz\nZk116tRJMTExDn8J7733Xo0dO9ZlSunVzp8/r8zMzFzLz507p0uXLhmYqPDddtttSkxMzPULcceO\nHSpfvryhqQrPokWLNHHiRPn4+OQ6ns1ms1milFarVk2bNm1SRESEw/KNGzc6/CPLVT322GOmRyhS\nQ4cO1WOPPaZVq1bprrvuynX40IQJEwxNVnhKlChhmZ+Z19KrVy8NGDBAbm5uCgoKUkhIiObOnavY\n2FhLfP8KC6XUsLJly2rPnj3atm2bwsPDdfbsWVWsWNH0WIXmvffeU6dOnfT6669f91/5derU0Suv\nvHKTJyscDz/8sKKjo/X888+rdu3astvt2rt3r2bOnKl//vOfpscrFH369NGIESO0bds2BQYG5mRc\nu3atJX6Yvv322xo6dGiuXdtWMmjQIA0aNEi7d+/O2aqfkJCgzz77TJMnTzY8XcFFRERc8zjvK955\n552bOE3he/XVV+Xm5iZfX98b5nRlrVu31r/+9S+1adNGd911V65jgwcOHGhossLRs2dPNWnSRMeO\nHVNoaKgkqXnz5mrdurVq165teLpbh81+5ewM3HTHjx/X008/rT/++EN//PGHPv30U02ePFm7du3S\nggULVKtWLdMj4i9kZmZq5syZWrZsWc7Jab6+vurevbv69u1rmV8gmzdv1rJly5SUlCTp8sl43bt3\nV5MmTQxPVnCNGzdWfHy8qlSpYnqUIrV161a9++67SkpKkqenp6pWrapevXqpfv36pkcrsD8f7pSZ\nmalffvlFGzduVL9+/dS7d29DkxWO4OBgvffee5bdtS0p11b8q9lsNpf/hwXyhlJqUL9+/eTr66vR\no0erSZMmWrlype644w6NGDFCx48f15IlS0yPWGBWvZTJtVwppVbYpV2cjB07Vp6enhoyZIjpUVDI\n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\nc+nSJc2bN0+BgYFq27atpk2bpri4ON1+++0aP368GjVqZHrEAps+fbreffdd9ezZU3Xr1lV2drb2\n7NmjJUuWKCoqSr169TI9otP+6i5O0uUTDm02m8sf91xYKKUGzZ8/X1OnTs25xMfVrPQmPXDgwHVP\n5nLFXxZbtmxR06ZN5eHhcc1dMlfOjrXK99But2v9+vU6dOiQsrKycpZfuRzN/PnzDU6XPz179lRs\nbKx8fHwc7u50LVa5o5PVhIWF5Wk9m83m8luCi4MWLVpo/PjxatOmjcPytWvXaty4cfr6668NTZZ/\nv/76a57XtdoeqPxi971Bb731ll5++WU9+eSTubawWcWUKVM0f/58VahQ4Zonc7liKR04cKDWrl2r\nO+64Q5UqVdLMmTMtfRjGa6+9pmXLlqlOnTras2ePGjZsqJ9//lknT57UE088YXq8fAkJCVHJkiUl\nWfdOK1Yv3hs2bMjTer/99lsRT1I0YmNj1bt3b3l7eys2NvaG61rhSi1XbnbwZ1WrVr3mFRVcAUXT\neZRSgzw8PNSmTRvLFlJJiouL07hx49S5c2fToxQaHx8fvfnmm2rUqJGOHz+uhISE694W1go/lNas\nWaMpU6aoffv26tChg0aPHq2qVatq6NChunTpkunx8uXqX+K///67JU9WKw7F+4rAwEBt2bIl140d\nfv31Vz300EPatWuXocnyb9u2berZs6e8vb21bdu2665nlWMSBw4cqFGjRmn8+PE5N3o4fvy4xo0b\np759+xqeDjcLu+8NWr58udatW6dhw4apcuXKuY4ptYKwsDDNnTtXNWvWND1KoVm/fr1mzZqls2fP\n6tixY/L397/m984quw3r1aunzz//XJUqVVJUVJRatWqlzp0769ChQ+rdu7c2bdpkesQCCQkJ0YoV\nK1S5cmXTo8AJ8fHxWrFihSRp+/btatiwYU4JvyIlJUXZ2dn6/PPPTYyIv/DnYy6vHPbk7e0tNzc3\nnT9/XjabTWXLltXWrVsNToqbhS2lBr355ptKSUnRV199dc2vW+F4xCFDhmjs2LGKioq65slcrngi\nUNu2bdW2bVtJl0v38uXLLb37vkqVKkpMTFSlSpVUo0YN7dmzR507d5bdbtfZs2dNj1dgvXr10pgx\nYyx3stqwYcPyvK4r3u63Xbt2Onr0qKTLpbRBgwa5rrlaqlQpl724/NUncv0VVzwMSpIWL15smS29\nKByUUoMmTpxoeoQil5aWpv3796tnz57X/BexqxfvvB7X5sqefvppvfTSSxo/frwefPBBhYeHy93d\nXTt37rTEWb8zZ86UJG3evFnS/3aHWuU9alWlS5fOOQzD3d1djz32mPz9/Q1PVXiuvC//iqsemy9Z\n/7ASOI/d97eolJQUS1yYPDQ0VJ06dVLXrl3l5eWV6+tWOOayOPj2229VunRp1alTR19//bU++OAD\nlStXToMGDZKvr6/p8Qrkr86Q5T1662vatKni4uK4dJmLKU7X0kXeUEoNSk5O1pQpU3T48OGcS+3Y\n7XZlZGTot99+U2JiouEJCy4kJETLly936YuQF0d/dbb21VzxzO3ixoqX9brawIEDVbNmTfXt21ce\nHh6mxykU17ot5bXYbDY1adKkiKcpGh999FGe1rt06ZK6du1axNPgVsDue4NeffVVZWVlqXfv3ho/\nfryio6P166+/6t1339W4ceNMj1conn76ac2bN0+vvvqqpa8yYDVX71Y7ffq04uLi9MADDygoKEgl\nS5bU999/rzVr1qh79+4GpywciYmJev3117V3715lZmbm+roVdt9b8bJeVzt16pRmz56tuXPnqnz5\n8rl+1rjiVraIiIg8refKh5hcfdOG1NRUvfXWW7k20ly6dElJSUmU0mKCUmrQ3r17FRcXp8DAQMXH\nxysgIEDdu3dX1apVtWzZMpe8y8qfbdmyRQkJCYqPj5evr2+uO6244i+L4uDqSyb16tVLw4cP15NP\nPumwzpVdpq5u+PDhuu222zRjxozrXtrL1Vnxsl5X69q163VLi6vmO3DggOkRbqoRI0bo559/Vvv2\n7bVw4UL961//0i+//KLPP/9cQ4cONT0ebhJKqUHu7u667bbbJEkBAQH6/vvv1aJFC/3tb3/TpEmT\nDE9XOMLDwxUeHi7p8vUgy5QpI5vNlquc4taVkJCgUaNG5VoeHByssWPHGpiocCUnJ2vVqlWWuof4\nn507d0716tWTJNWsWVN79uxRjRo11KdPH/Xu3dvwdAUXGhpqua1sx44d05133imbzeZwD/VrcdUr\nRFzt22+/1cKFC9WwYUNt2bJFrVu3VuPGjfXWW29p06ZN6tmzp+kRcRNY78KYLqRhw4ZasGCB0tLS\nVK9ePW3YsEF2u1379u2zzK7uRx55RMePH9fEiRMVExOj5s2b6z//+Y927dqlTp06mR4PeVCnTh29\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1128f3668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 2.2484610080718994\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>lastName</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x1127a06d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112f60da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIOCAYAAACBA3QfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt8z/X///H7DtnmsNrMRs5JGYaZJK0T5eKQsCVSTiUq\np6KcyxAhH6JVI98V4kMqQk6VjvJBc4qa8zE+vDGMnezw+8PP++PdKO8denq9drteLi61117v9/tx\n7/Vuu3ud3h45OTk5AgAAAAzyND0AAAAAQCkFAACAcZRSAAAAGEcpBQAAgHGUUgAAABhHKQUAAIBx\nlFIAAAAYRykFAACAcZRSAChgfCYJALiPUgqgyLrzzjv1zjvvFOhzJiQkqGfPnrle58EHH9T58+dz\nrX/kyBHdeeed+vzzzwt0DgCwGkopABSghQsXau/evbmWHzt2TOPHjzcwEQBYA6UUAP4B/v7+Wrhw\nodauXWt6FAC4IVFKAeD/S0xMVJ8+fdSoUSPVqlVL9913n9544w2lpaU511m7dq2eeOIJhYeH6667\n7tILL7zg3DM6ZMgQLVq0SH/88UeuQ/IdOnRQ1apVNWLEiKsexr/SkSNHNGjQIEVGRqpWrVq65557\nNGjQICUlJTnXadKkiWJjYzVu3DjdfffdCg8P18CBA3XhwgXNmDFD999/vyIiItS3b1+Xx0mX9ua2\natVKtWvX1oMPPqh33nlHWVlZBfGfEADyjFIKAJJOnDihp556SqmpqRo/frw++OADtWrVSnPmzNHs\n2bMlSYcPH9aLL76o2rVr6/3339fYsWO1f/9+9ezZU9nZ2XrxxRf1wAMPqEyZMlqwYIEefPBB5/P7\n+PjozTff1H//+19NnDjxmnOkpqaqS5cu2rt3r0aOHKn/+7//U5cuXfTll19qypQpLuvGx8fr2LFj\nmjJlil544QUtW7ZM0dHR+umnnzRmzBgNGDBA33zzjaZNm+Z8zPTp0/Xaa6/pnnvuUVxcnJ566il9\n8MEHeu211wr2PygAuMnb9AAAcCPYtWuXQkNDNXXqVJUsWVKS1LhxY61du1br169Xz549tW3bNqWl\npalXr14KCQmRJJUtW1bffPONUlJSVKlSJQUGBqpYsWKqV69ertcIDw9X165d9eGHH6p58+Zq3Lhx\nrnUOHDigsmXLasKECapYsaIkqVGjRtq6das2bNjgsm7JkiU1ZcoUeXt7q3Hjxlq0aJGOHz+uhQsX\nqlSpUpKkH3/8UZs2bZIkJScn67333lOHDh00YsQISVJkZKRuueUWjRgxQt27d1f16tUL6L8oALiH\nUgoAulTOIiMjdfHiRe3Zs0cHDx7Url27dPr0ad1yyy2SpLp168rHx0ePP/64mjdvrvvvv1933323\n6tSpc92v89JLL+nbb7/ViBEjtGTJklzfDw0N1bx585Sdna0DBw7o4MGD2rNnj/bt26fMzEyXdevU\nqSNv7//9GA8KClLx4sWdhVSSbrnlFu3atUuStHnzZqWlpalJkyYuz9WkSRNJl05NoJQCMIVSCgCS\nsrOzNXnyZM2dO1cpKSkqV66c6tSpIx8fH+c6FSpU0Mcff6wZM2bo008/1ezZs+Xv769OnTrppZde\nkoeHx9++jq+vr8aNG6enn35aEydOzHX7KEn68MMPFRcXpzNnzigoKEi1a9eWn5+fkpOTXda7vEf3\nSsWLF7/ma585c0aSrvqa0qVTGADAFEopAEiaMWOGPvroI40aNUrNmjVz7m18/PHHXdarU6eOYmNj\nlZGRoYSEBC1YsEBxcXGqUaOGWrRocV2vFRERoc6dO2v27NkKCwtz+d7SpUs1fvx4vfrqq4qKilJg\nYKAkqX///vr111/zldHf31+SNGnSJFWpUiXX94OCgvL1/ACQH1zoBAC6dNP722+/XdHR0c5Cevz4\nce3atUvZ2dmSpI8++kgPPfSQMjIyVKxYMd1zzz0aM2aMJOno0aOSJE/P6/uxOmDAAFWqVEkTJkzI\nNYe/v7969OjhLKQXLlxQQkKCc468qlu3rm666SYdP35cYWFhzj/e3t6aPHmyjhw5kq/nB4D8oJQC\ngC7tAd25c6dmzJihDRs2aOHChXrqqaeUkZGh1NRUSZcuOHI4HOrdu7e+//57/fTTTxo6dKiKFSum\nhx56SNKlvZEnT57U999//5eHwy8fxv/z7aHq1Kmjc+fOafz48Vq/fr2WLl2qp556SidPnnTOkVcB\nAQHq0aOHpk6dqrffflvr1q3T4sWL9eKLL+rgwYOqUaNGvp4fAPKDw/cAIKlXr15KSkrS7Nmz9e67\n76pcuXJq06aNPDw8NH36dJ07d041atRQXFyc3n33XQ0YMEBZWVmqXbu24uPjddttt0mSoqKi9P33\n36t3797q16/fNc/flKQGDRro6aef1pw5c5zL2rVrpyNHjuizzz7TvHnzFBISogceeECdOnXSa6+9\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112d71278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 2.093127727508545\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>age</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>19</td><td>100.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x11306cb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x11305f198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n2LHat2+f7rrrLrVp00YLFy5Ur169dPfdd9t+PjRl7Nix+uKLLzRz5kxlZGTozTffVFZWlkpLSzVo\n0CBFRkbq7bff1t/+9jc9+uij+v77750uGQ578MEHVbduXS1evFhPPPGEXnjhBX344YfOnzMtOCYn\nJ8fq3bu3df3111tt2rSxvvzyS8uyLGv58uVWSkpKwNyUlBTrn//8Z8BYbm6u1aZNG8vr9frHli5d\nal166aXWF198YSUnJ1tHjhzxP3fnnXdaL730kq17OFkNv/nqq6+sK6+80vrTn/5kLVq0yNbjw70K\nCwutyy67zLrpppusxx57zLIsy/ryyy+tsWPHBsy76KKLrGXLljlRIgwbNmyYlZGRcdz4jBkzrL/8\n5S9WaWmpf+xvf/ubNWnSJJPl2aKwsNBKTEy0Vq9e7R+bPn269fjjj1srVqywunTpYh06dMj/3H33\n3WctWLDAiVIRJPbv32+1adPG2rp1q39syJAh1ujRox0/Z3Il1EFr1qxR165dlZWVFTDeoEED7d+/\nX8uXL5dlWVqxYoWOHDmiNm3aBMxr0qSJZsyYofj4+IDxw4cP69tvv1ViYqLq1q3rH+/SpYvtt6BO\nVoP0622jESNGaOTIkYqKirL12HC38ePHq0+fPjr33HP9Y127dtWTTz4pSSopKdFbb72l4uJidezY\n0akyYVBeXp5atGhx3PjOnTvVrl07RURE+MfOP//8WnlLft26dTrjjDOUkpLiHxs4cKDGjRunNWvW\nqFu3bjrjjDP8z02ZMkVpaWlOlIogERMTo9jYWC1evFglJSXatm2bvv76a7Vt29bxc2akkaPghG6/\n/fYTjl944YXq37+/0tPTFR4errKyMo0bN06tWrUKmBcXF6fu3bv7H5eXl+v111/XxRdfLK/XK4/H\nEzC/cePGx93Sr66T1SBJ06ZNU2Jioi699FJbjwt3y87O1tq1a7V06VKNGjXquOd37Niha665RmVl\nZRo2bJjOOecc80XCKMuytH37dn3++eeaPn26ysrK1LNnT6Wnpys+Pl5btmwJmL97924VFhY6VO3p\n27lzpxISEvTOO+9o2rRpKikpUd++fXXffff5n5s0aZLeffddNWzYUOnp6briiiucLhsOio6O1siR\nIzVmzBi99tprKisrU9++fdWvXz//HKfOmYTQIHTkyBHt3LlTQ4YMUY8ePbR8+XKNHTtWSUlJat26\n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\noQAAADDu/wMuToR3QchYPwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112f737f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 5.873319864273071\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>billingId</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x11373a0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  111\n",
      "Max value:  992\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x1137320f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ntdesmJgY9/PkK3s6EXrGoUOHrGeeecY6fvy4+1hSUpI1bty48+775JNPWsOGDXPfnj17tvXoo4+6\nb588edJKSEiwPvroo4uuuXDhQqtz585WcXGx+2tPPfWUNWPGDMuyLGvIkCHW2LFjPc7bpUsXKy0t\nrdyPNTc31+rYsaPVu3dvd4S+/fbbVrdu3Tzu97e//c169tlnLcuyrP79+1t//etf3V8rKCiw2rVr\nZ23YsKHc8wAAzMrLy7OaNGli7dy5031s0KBB1oQJE351Pzhr7ty51kMPPUSEesnWrVutJk2aWD/8\n8IP72CuvvGL16dPH+vzzz61JkyZ53L9t27bW6tWrLcvynT2dl+PPiI6O1uzZs1WjRg1ZlqVNmzbp\nyy+/VLt27Tzul5GRoS+//FLPPvus+9iWLVvUpk0b9+3g4GDFxMRo7969F10zOztbMTExCggIcH9f\n06ZN3S/JP/3003riiSfOm/P48ePlfqxTp05Vz549dfPNN7uPdejQQVOmTDnvvidOnJAkZWdnKy4u\nzn08KChI9evXP+8tBAAA3xcUFKTg4GAtX75cRUVF2rNnj77++ms1a9bsV/cDScrKytJbb73l8ZYu\nmJWdna2IiAjdeOON7mNNmzbVtm3b1KpVK40ZM0aSVFRUpPfff1+FhYXufdxX9nQi9AIcDoceeeQR\n93thfmnBggW67777dMMNN7iPOZ1ORUdHe9yvdu3aOnjw4EXXjIyM1KFDhzy+5+DBg8rNzZUkxcTE\nqGHDhu6vbdiwQXv37tXtt99erseWkZGhr776SgMHDvQ4Xq9ePbVs2dJ9+8iRI1q9erXat2/vfjw5\nOTnur5eWlurQoUPueQEAlUf16tU1duxYpaWlKT4+Xr///e/VsWNHPfjgg7+6H1iWpbFjx2rw4MGq\nXbu2tx7CVS8yMlLHjx9XQUGB+9jBgwdVXFzsvmC1b98+xcfH67nnntPAgQNVr149Sb6zpxOhF/DS\nSy9p/vz5+u9//+vxr8Hs7Gx9/vnn6tevn8f9CwoKVK1aNY9j1apVU2Fh4UXX7NKli7Zu3ar33ntP\nxcXF2rhxoz755BMVFRWdN88PP/ygUaNG6d5771VMTMwVPy6Xy6Vx48Zp7NixCgoKuuj9Tp06pcGD\nBysyMlKJiYmSpHvuuUfvvPOOvvnmGxUVFWn+/Pk6cuTIBecFAPi+3bt3q1OnTkpLS9OUKVP00Ucf\naeXKlR73udB+sHTpUhUVFalPnz7eGBtnxMfHKzo6WhMnTtTJkye1b98+LV68WJLce3NERISWLl2q\nsWPHas6cOVqzZo0k39nTA42erZKIjY2VdDrahg0bpr/+9a+qVq2a1qxZo2bNmnm8jC2d/hflL4NT\nkgoLCxUWFlbmmhMnTtSkSZM0btw4NWvWTA8//LC++OILj3WysrL0xBNP6MYbb9SkSZPK9bhSUlLU\nokULdejQ4aL3yc/P18CBA7V37169/fbbCg4OliT16dNH33//vfr27StJ6tq1qzp27KgaNWqUayYA\ngHkZGRlaunSp0tPTFRQUpNjYWB06dEjz5s1Tjx49JF14P3A6nZo1a5Zef/11+fn5eflRXN2qV6+u\n2bNna8iQIWrdurVq166tp59+WlOmTHHvzTVr1lTz5s3VvHlz7d69W2+++aa6du3qM3s6V0LPOHz4\nsNauXetx7Oabb1ZRUZH7fTAbN25U586dz/ve6667TocPHz5vvZCQkDLX7N27t7766iulp6dr+fLl\n8vPzc18ql6Rdu3bp0Ucf1fXXX6+FCxeWefXyUqxevVpr165VQkKCEhIS9MEHH+iDDz5QQkKCpNPv\n93nqqae0a9cupaamerwdICAgQOPGjdOmTZv073//W7NmzZLT6VTdunXLNRMAwLxt27apQYMGHvtK\n8+bNtX//fkkX3w8+++wz5ebmun+8YPfu3SVJ3bt31/z5840/jqtdXFyc1q1bpw0bNmj9+vVq1KiR\nwsPDtX//fn311Vce973pppvcL7f7yp5OhJ7x448/atCgQR7v09y2bZsiIiIUEREhy7L07bffqlWr\nVud9b3x8vMfP8CwoKNCOHTsUHR190TW///57/eUvf1FAQICio6NlWZY2btyo2267TZKUk5OjJ598\nUg0aNNCiRYts+dfJkiVL9MEHH2jFihVasWKFHA6HHA6HVqxYodLSUg0aNEg//vijlixZoltuucXj\ne19//XUtWLBAwcHBqlWrlnJycvTf//73vA9uAQB8X3R0tPbt2+fxKt6ePXtUr169MveDu+++Wx99\n9JF7H1mwYIGk05+XeOihh4w/jqtZXl6eHn74YeXm5ioqKkqBgYFav3692rVrp08//VTPPfecLMty\n33/79u1q3LixJN/Z04nQM2JjYxUTE6PRo0crMzNT6enpmj59uv70pz9Jkn766Sfl5+ef91K8JPXu\n3Vtff/21FixYoF27dmnUqFGqV6+eHnrooYuu2ahRI3366ad6++23lZ2drQkTJujo0aPq1auXpNOf\nYC8tLdXzzz+vkydPyul0yul0Kj8//4ofY926ddWgQQP3n9DQUIWGhqpBgwZaunSpvvjiC02aNElh\nYWHu8+Xl5Uk6/cGlV199VZ9//rl27dql5ORk3XHHHWrSpMkVzwMA8A6Hw6FrrrlGzz33nLKysrRu\n3TrNnz9f/fr1K3M/qFGjhsc+UqdOHUlSnTp1VKtWLS8/qqtLrVq1dPLkSU2fPl3Z2dl6//33tWzZ\nMj399NPq0aOHnE6nZsyYob179+qtt97SypUrNWDAAEm+s6f7Wb/M5KvcoUOHNHHiRGVkZCg4OFiP\nPvqoBgwYID8/P23ZskV9+vTRt99+e96HkCQpPT1dkydP1sGDB5WQkKCJEyfqxhtvLHPN9evXa+rU\nqTpw4IDi4+M1duxY3XTTTbIsSy1bttSpU6fOO8+gQYM0ePBgWx7v2R+t8cILL+ipp57SZ599dt59\n2rVrpyVLlkiSXnnlFS1ZskQul0t33XWXxowZw3tCAaCSyszM1PPPP6+tW7cqIiJCffv21eOPP66n\nn376V/eDs3788Ud17txZn3zyicfbyWDGnj17NG7cOH377beqV6+ehg4dqk6dOkk6/VuvJk+erJ07\nd6pu3boaOnSox1sKfWFPJ0IBAABgHC/HAwAAwDgiFAAAAMYRoQAAADCOCAUAAIBxRCgAAACMI0IB\nAABgHBEKAAAA44hQAAAAGEeEAgAAwDgiFAAAAMYRoQAAADCOCAUAAIBx/x9SbF8ADaZMuQAAAABJ\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11372d390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 4.413137912750244\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>product</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>18</td><td>94.74 %</td></tr><tr><td>Integer</td><td>1</td><td>5.26 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x11304d908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112fc9ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nclq3bp0ef/xxbdiwQePGjVPNmjVVo0YNuyPmyoEDB/Thhx/qzjvvVMmSJTOuaV+xYoV+++03devW\nze6IuRIQEKBRo0bp7Nmz+uGHH1SyZEl98MEHevvttzV69GjVqlXL7oi54u3trSlTpsjb21sbN25U\n9erVtWbNGkVFRemFF15wxc9CEzws6/9elQJjUlJSFBMTo7p166ply5aaPn26lixZIl9fX02ePDnj\n+g2n+uCDD/Tee+/p4MGD8vb2VrVq1dSzZ0+1a9fO7mjGWJalxMREFS9eXJcvX9aWLVvk6+urkJAQ\nu6MZ0b17dzVu3DjjeqKVK1fq9ttvV2RkpDZv3uyK64lWrFihihUrqkmTJnr//fe1ePFi+fr6avTo\n0a5YCWHr1q0qUaKEgoODtWHDBr3//vvy9fVV//79VaFCBbvj5VqXLl3UoUOHjGv6rn2NvvPOO1q2\nbNkNryd2kosXL2rixIlq2rSpOnbsqCFDhujjjz9WiRIlFBkZqdDQULsj5tq+ffs0f/78TCuR9OzZ\nU3feeafd0YxYu3at5s2bl2U+p79oyyhbT9YXMsnJydaWLVvsjpFrKSkpVnx8fMbb3333nZWUlGRj\nIrNCQ0OtM2fOZNn+22+/Wffcc48Nicxz+/VEJ06cuOH2xMREa/ny5fmcJu9cuHDB2rVrl/Xjjz9a\nly9ftjuOUW6/pu9GLly4YCUlJWVcb+t0p06dsg4dOpTx9scff2zFxcXZmMiclJSUP3xs9+7d+Zik\nYOOazDxQt25dRUZGZqzPd825c+fUvXt3m1KZsXfvXrVs2VLz58/P2DZ48GC1bdtWP//8s43Jcuez\nzz7TiBEjNGLECB0/flzjx4/PePvanyFDhrhmbUm3X08UGhqqgQMH6tKlS5m2X7hwQSNGjLAplTmX\nL1/WkCFDdM899+jRRx/VI488oqZNm2rs2LGueXW526/pa9Wqlf75z39m2laqVCmdP39eLVu2tCmV\nOd98841at26tjz76KGPbwoUL9cADD7jiutrnn39eSUlJmbadP39eY8eOVZcuXWxKVfBQMvOAZVn6\n9NNP1bVr1yxLb1gOvzph/Pjxat26tQYOHJix7csvv1RoaKjGjx9vY7Lc+f11ljf6PNWqVUuzZ8/O\nr0h56rnnntPo0aO1aNEiWZalb7/9VlFRURo/fryefvppu+PlmmVZOnbsmGvvbPTyyy9r3759mjdv\nnrZv366tW7dqzpw52rZtmyZPnmx3PCMGDBigMWPGaMqUKUpLS9OKFSs0bNgwTZkyRf3797c7Xq79\n8ssveuONNzRo0KAst9B0+s8JSZoyZYp69+6t8PDwjG2LFy/Ws88+q0mTJtmYzIzLly+rR48eGS+0\nW7Zsme6//359++23rvk5YYSdh1HdKigoyDp69Kg1cOBAq1mzZtbGjRsty7Ks+Ph4KygoyOZ0uXP9\nKazrHTlyxAoJCbEhkXkzZ8503anHG1mzZo315JNPWk2bNrUaN25sPfbYY9bHH39sdywjgoKCrJMn\nT1qRkZFWSEiI9f7771uWdfX0ndO/By3r6jJbNzolt2PHDuvuu++2IVHe2Lt3rzVkyBDrkUcesTp2\n7GgNGDDA2rFjh92xjAgKCrL27NljPfHEE1bbtm2tn376ybIsd/ycsKyrPyuuXZJzvSNHjrhiubuk\npCSrT58+Vvv27a2wsDDrrrvusv7xj39YycnJdkcrUFiMPQ9YlqUSJUro9ddf18KFC9W7d28999xz\neuqpp+yOlmu33XabvvnmG91+++2Ztn/33XeuWcKoX79+Wr9+vYKDg1W+fHktW7ZMX3zxhe644w71\n6dMny51HnCo0NNQVLy64Ecuy5OnpqcGDByskJEQjRozQtm3bMh2Bd7Ly5csrISEhy/bk5GSVKlXK\nhkR5IygoSFOnTrU7Rp6wLEsBAQF69913NXXqVHXp0kVjxoxRixYt7I5mRPXq1fXpp5/q+eefz7R9\n7dq1rrghQrFixRQdHa0JEyZo8eLFWrhwoWtul2kSJTOPde/eXfXq1dOAAQO0detWu+PkWu/evTVq\n1Ch9//33qlevnqSrryBcuXKlxo4da3M6M2bNmqW5c+fqnXfe0cGDB/Xyyy/rscce05dffqlz5865\nZs7t27drwYIFOnLkiObMmaOPPvpIlSpV0oMPPmh3NKNatWqlWrVqqX///vr73/9udxwjnn/+eY0a\nNUrPP/+8GjZsKC8vL+3du1dRUVHq1KlTpn9r7r77bhuT5tyfXTvr9MsCrt21yNPTUyNGjFBISIhG\njRqlb7/91uZkZgwYMEB9+vTRxo0bFRwcLOnqXZy2bdummTNn2pwuZ7p165blblPXfqHt379/pmWZ\nFi5cmN/xCiRKZh6oWLGiihT57+Wud911lz744ANXHEXp2LGj/Pz8tHTpUv3rX/+Sl5eXqlSponnz\n5rnmt7ilS5dq5syZuvPOOzVq1CjdfffdGjdunHbt2qVnn33WFSXziy++0IgRI9SlSxd9/fXXSk1N\nlZeXl4YPH65z587pySeftDtirtx9990qWrRoxttVqlTR0qVLNWbMGB04cMDGZGaMHj1a0tVb2/3e\nrFmzNGvWLElXi8y1m0E4XWpqqo4dO6a9e/eqa9eudsfJNet31122a9dOtWvXdsX1ppJ03333afny\n5fr3v/+tQ4cOycvLS0FBQRo3blyWM2FO0bRp02xtB+tk5olff/1Vt912W5btV65c0eeff+74+0K7\nXUhIiD755BPddtttat68uZ577jn17NlTsbGxeuyxx7Rt2za7I+Zahw4d9Nxzz+mhhx7KtAbhRx99\npKioKH355Zd2RwRuaO7cufrpp59cexr94sWL2rt3r2OPQAPX40hmHggNDVXbtm31yiuvqGTJkhnb\nL126pBEjRji6ZF65ckVLlizRgQMHlJaWlrE9OTlZe/bs0aeffmpjOjOCgoI0b948+fr66vTp02rd\nurVOnjyp119/3TWLsR85cuSGszRo0MCxtz7t3r27oqOjVaZMmZsuFebh4aEFCxbkY7K8kZaWpg0b\nNujw4cN65JFHFBsbq+rVq6t06dJ2R8tTbdu2zThS62R169bVM888o0GDBmU685WYmKju3bs78gj0\n9d+DNzq1fD2nn04uDD8LTaBk5gHruuVToqKiVKdOnUyPOdno0aP1zTffqFmzZvrss8/Url07HTly\nRLt27VK/fv3sjmdERESEhg0bpuPHj2vQoEGqVKmSJk6cqOPHj+uNN96wO54RNWvW1IYNG7KcFl++\nfLlq1qxpU6rcadKkScYp8mtLUlmWpbNnz8rDw0O+vr52xjPq119/1TPPPKNz587p3LlzatmypebO\nnavvv/9ec+fOVVBQkN0R88Tly5e1dOlSlStXzu4ouWb931J333//vWbMmKGAgIBMjznR9d+DtWvX\n1rlz51S1alV7Q+WR0aNHa9OmTfrf//1f1/4sNMKeF7W7m5uXT2ncuHHGkkwPPfSQtWvXLsuyLGvy\n5MlWeHi4ndHylJvuaGRZlrV161arUaNGVv/+/a3g4GBr5MiR1pNPPmk1aNDA2rRpk93xci01NdV6\n/fXXrWbNmll16tSx6tSpY913331WTEyM3dGM6N27tzV69GgrNTU14244ycnJ1pAhQ6yuXbvaHc+I\nOnXqWEFBQVn+3HnnndZHH31kd7xcc/NSd5ZlWXffffcNl7tzi8L6szC7OJKZBywXL5+SlJSU8Ztp\nrVq1tHv3btWrV09hYWGuuBj/mr179+rnn3/OuGuTZVkZp0HGjRtnc7rca9y4sT777DMtWrRIFy5c\n0G+//aa77rpLkZGRqlixot3xcm3KlCn64osvNHjwYNWrV0/p6enatWuXoqKilJyc7PgjDdu2bdPS\npUsz3YGqaNGi6tOnjzp16mRjMnMWLFiQ6XSrh4eHihYtqpo1a7pimSbLxUvdSVLPnj01fvx49ezZ\nUxUrVpS3t3emx53+70xh+VmYW5TMPOa25VNq1KihTZs26dFHH1WtWrW0fft2Pf7447pw4YISExPt\njmdEdHS0oqOj5e/vr4SEBAUGBurUqVNKS0tT69at7Y5nREpKihYvXqz3339fp06dkiQdOnRI/v7+\n6tGjh83pcm/58uWaNWtWpjs5BQUFqVKlSho8eLDjS6aPj48SEhJUrVq1TNtjY2NdUcCkwvWKXbct\ndSdJUVFRkqQNGzZI+u+STZZluWLVg5v9LPz97SYLM0pmHnDz8in9+/dXeHi40tPT1bFjRz344IPq\n3bu39u/fr/vuu8/ueEYsWbJE48aNU1hYmEJDQ7VgwQKVLVtWAwcOdMUiwpI0YcIEbdiwQYMHD9Yd\nd9yh9PR07dy5U1FRUUpISNBLL71kd8RcKV68eKbvwWvKlClz0xcjOMXjjz+ul19+WUOHDpV0tVxu\n2bJF06dP12OPPWZzOjOCgoL+8HNVtGhRVahQQe3atdOLL754w891Qefmpe4kac2aNXZHyFP9+vXT\niy++KMuyMv0s3Ldvn5o3b253vAKDJYyQLSNGjFCPHj1UvHhxValSRfv27dOHH36osmXL6scff3Ts\nIrvXq1evnr744gtVrFhRffv21f33368OHTpo9+7dCg8P19q1a+2OmGuNGjVSTExMlrVNN27cqJde\nekmbN2+2KZkZq1at0qxZszR06NCMxcr37duniRMnql27dmrfvn3Gvk49bffuu+9q3rx5+u233yRd\nvQtQz5499fe//z1TeXGqxYsXKzo6Wv3791dISIgsy9Lu3bs1c+ZMde7cWbVr19asWbN03333aciQ\nIXbHzTaWunO+hQsXytPTU0899ZT27dunhQsXqkqVKurRo4d8fHzsjlcgcCTTEDcvn/L999/ryJEj\n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\nUTIBAAAQuj/sk8PTROsttwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11304dba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 1.9454371929168701\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>price</td></tr><tr><td colspan=3 ><b> Column datatype: </b>int</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>0</td><td>0.00 %</td></tr><tr><td>Integer</td><td>19</td><td>100.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x1084a3080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value:  20\n",
      "Max value:  200\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x112b03a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nR82ePVMvvPCi6tatV7I8IeEp5ec7lZj4nO677wFJ/pUb9ubvxzO7Pq99NXelv4x92rRp2rNnj5Yv\nX17hbVJTU5WSkuKybOTIkUpISKjsGB4VEVHT2yN4hb/nrlcvvNTl/p67NL6cOWbcJ64LQn+vGtvf\nUa/e3VXwn8NlOa7Twcm3SZJefvklXXWVQ3PmzJHk27mB8/nb8awiz2tJOjj5Nr96XvvL8axSJXPa\ntGlavHixXnvtNbVo0aLC28XHxysuLs51gOBaOnHibGXG8JigoEBFRNTU6dPnVFTkP7+i6lLskvvC\n/c8uuc/nl5lrXqGCrk8q4Ey2rLBffh3a+Y/13Xc/oC5duumrr/7mX7lha35/PCvleS39O7ffPq+r\nwfGsrH/AlMftkpmUlKSlS5dq2rRp6tWrl1vbOhyOiy6N5+Sc8ZnfLVpUVOwzs5rk77nLyubvuUvj\nj5mtOv8+5lyY7eqrY9S2bSu/+x3HsC+7HM/Of15Lrrn9+Xnta8czt0pmSkqKli1bpldffVW9e/eu\nqpkAAADg4ypcMtPT0zV79mwNHz5cHTp0cPkAT3R0dJUMBwAAAN9U4ZL52WefqaioSHPmzCl5c+mv\n9u3bZ3wwAAAA+K4Kl8zhw4dr+PDhVTkLAAAA/ET1+TIlAAAA+A1KJgAAAIyjZAIAAMA4SiYAAACM\no2QCAADAOEomAAAAjKNkAgAAwDhKJgAAAIyjZAIAAMA4SiYAAACMo2QCAADAOEomAAAAjKNkAgAA\nwDhKJgAAAIyjZAIAAMA4SiYAAACMo2QCAADAOEomAAAAjKNkAgAAwDhKJgAAAIyjZAIAAMA4SiYA\nAACMo2QCAADAOEomAAAAjKNkAgAAwDhKJgAAAIyjZAIAAMA4SiYAAACMo2QCAADAOEomAAAAjKNk\nAgAAwDhKJgAAAIyjZAIAAMA4SiYAAACMC/b2ANWJ05mn9evXaffu75Sdna2CgnyFhYUpKipanTt3\n1I03/peCg0O8PaZRZWWOjIxSbGwb3XnnHd4eEYbwWAMAPIkzmf+yb99eDR7cT4sXL1R+fr6aNm2m\n1q3b6OqrY+R0OjVnzhwNGtRPBw7s9/aoxlwq86JFb6tHjx7av/8f3h4Vl4nHGgDgaZzJ/Jfp05MV\nF9dTTz45+qL7goMDVa9euF54IVHTpr2iefMWeWFC88rLLP2S+803X9OUKS9r7lz/yGxXPNYAAE/j\n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\nI+rXr59++uknRUZGei5AJZWVOy0t7ZLdxJvHMy6Xnyc6Olpvv/12ScH8VW5urrKystSqVSsFBQWV\nLL/uuuv85pL5lClT1K9fP11zzTWl3r9p0yZt2bJFTz/9tIcnqxrbtm1T7dq11alTp5Jlw4cPV3Jy\nsnJzc3X06FG/LBhhYWGqWbOmVqxYoYKCAmVkZOibb75Ry5Yt1blzZz3//POSpIKCAn344YfKz88v\nKeG+5uuvv1bnzp2VmprqsnzHjh26/vrrVatWrZJlHTp0cHku/+1vf9OCBQvUs2dPj80LuKusffxS\nx7ADBw7oqquu8rmCKZWd+XylvV7dfffdio+Pl/RL4fzggw907bXXqn79+lU+swll5a5IN/Hm8Ywz\nmeeJiIhQly5dSm4XFxdryZIluvHGGxUVFaW9e/e6rP/jjz/qxIkTnh7TuE2bNmnr1q1avXq1EhMT\nS11n/vz56t+/v6666irPDldFsrKy1KhRI6WlpWnu3LkqKCjQgAEDNGLECKWnpysgIEBz587VF198\nobp16+qBBx5Q//79vT32ZQsNDdWECROUlJSkd999V0VFRRowYIAGDRpUss6hQ4f03//93yoqKtLo\n0aN98iymJA0dOrTU5Tk5OXI4HC7LIiMj9eOPP5bcXrp0qSS5vO8JqG7K2scvdQxLT09XjRo19Oij\nj2rXrl1q2rSp/vjHP/rEPyjLyny+8l6vli9frueff14hISFasGCBAgICqmJM48rKXZFu4s3jGWcy\nyzFt2jTt2bNHo0aNUs+ePbVz50796U9/UmFhoTZu3KjPPvtMBQUF3h7zsjidTk2cOFETJkxQWFhY\nqetkZWVp8+bNfvUBiJ9//lmHDh3SsmXLlJycrGeeeUbvvfee3nnnHWVkZCggIEDNmjXT/PnzNWjQ\nIL3wwgv69NNPvT22Eenp6erWrZtSU1OVnJysv/zlL1q1alXJ/fXr19fy5cs1YcIEvfHGG1q7dq0X\npzXv3LlzCgkJcVkWEhKi/Px8L00EmHWpY1hmZqZOnTqlQYMGaf78+WrevLnuu+8+HTlyxMuTX75L\nvV797ne/08qVKzV48GD94Q9/UFZWlocnNKu6dxPOZJZh2rRpWrx4sV577TW1aNFCkpSUlKRJkyZp\n4sSJatmypYYMGeLzZzpSUlLUunVrlzO4F1q7dq1atmxZ5qV0XxQcHKzc3FzNmDFDjRo1kiQdPnxY\nS5cu1V/+8hd169ZNdevWlST99re/1cGDB7V06VL16NHDm2Nftk2bNmn58uXasGGDwsLCFBsbq6NH\nj2rOnDnq27evpF/e23T99dfr+uuvV3p6upYsWaJevXp5eXJzQkNDdfLkSZdl+fn5Zf4jC/A1d9xx\nR7nHsKSkJOXl5al27dqSpMTERH3zzTf6+OOP9dhjj3lz9Mt2qderhg0bqmHDhmrZsqW+/vprpaWl\nlbwX2xe1aNGiWncTzmSWIikpSYsWLdK0adNcXlwHDhyorVu3asOGDVqxYoUCAgJ89lLirz755BOt\nW7dO7du3V/v27bV69WqtXr1a7du3L1ln48aNuuWWW7w4pXnR0dEKDQ0tKZiS1LRpUx05ckQBAQEl\nB+dfNWvWTEePHvX0mMbt2rVLTZo0cSlU119/vQ4fPqz9+/dr69atLus3b97cL94Scr4GDRro2LFj\nLsuOHTt20SV0wFdd6hgWHBxcUjB/Xd9fjnFlvV5t3rxZGRkZJbd/zewPx7fq3E0omRdISUnRsmXL\n9Oqrr+q2224rWb5582aNGjVKQUFBcjgcsixLGzduVOfOnb047eV77733tHr1aqWlpSktLU1xcXGK\ni4tTWlqaJMmyLH333Xe64YYbvDypWW3btpXT6VRmZmbJsoyMDDVq1EizZs0q+YT1r/bu3atmzZp5\neErzHA6HDh065HJpOCMjQ40bN9bnn3+u8ePHu3x6cffu3X6R+3xt27bV7t27lZeXV7Js27Ztatu2\nrRenAsy51DFs2LBhSklJKbmvuLhY+/bt8/nnenmvV2+99ZbLdwIXFRVp7969at68uQcnNK+6dxNK\n5nnS09M1e/ZsPfLII+rQoYNycnJK/jRt2lSff/65PvjgA2VlZenFF1/UqVOndMcdd3h77MvSqFEj\nNWnSpORPeHi4wsPD1aRJE0nSDz/8oLNnz/rVpXLpl3/Vd+3aVc8++6z27t2rjRs3av78+RoyZIi6\ndeumLVu2aMGCBfrnP/+pDz74QGlpaXrwwQe9PfZli4uLU40aNTR+/HhlZmZq/fr1mjt3roYNG6a+\nffsqJydH06dP18GDB/X+++9r1apVevTRR709tlGdOnXSVVddpWeffVb79+/X/PnztXPnTt15553e\nHg0w4lLHsF9/CcNnn32mjIwMvfTSSzpz5ozPf7ixvNeroUOHasWKFVq9erUyMjKUmJiovLw8n38N\nr+7dhPdknuezzz5TUVGR5syZozlz5rjct2/fPs2cOVNTpkzR1KlT1bZtWy1atEjh4eFemtYzjh8/\nLkm64oorvDyJedOnT1dSUpKGDBmimjVr6u6779awYcMUEBCgWbNm6fXXX9esWbPUqFEjzZgxw+Ut\nBL6qTp06euedd/Tyyy/rzjvvVP369TVixAjFx8crICBACxYs0CuvvKIlS5aUnNVt1aqVt8c2Kigo\nSLNnz9bzzz+vAQMGqEmTJnrzzTfVsGFDb48GGNGmTZtyj2H333+/nE6nJk2apGPHjpW8np1/Cd0X\nlfd6dcsttygxMVEpKSk6cuSI2rVrp4ULF/r8a3iDBg2qdTcJsEr7FlcAAADgMnC5HAAAAMZRMgEA\nAGAcJRMAAADGUTIBAABgHCUTAAAAxlEyAQAAYBwlEwAAAMZRMgEAAGAcJRMAAADGUTIBAABgHCUT\nAAAAxlEyAQAAYNz/A9isV3Q3TXKrAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1136e0be0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 4.271012783050537\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><td colspan=3 ><b> Column name: </b>birth</td></tr><tr><td colspan=3 ><b> Column datatype: </b>string</td></tr><tr><th>Datatype</td><th>Quantity</td><th>Percentage</td></tr><tr><td>None</td><td>0</td><td>0.00 %</td></tr><tr><td>Empty str</td><td>0</td><td>0.00 %</td></tr><tr><td>String</td><td>19</td><td>100.00 %</td></tr><tr><td>Integer</td><td>0</td><td>0.00 %</td></tr><tr><td>Float</td><td>0</td><td>0.00 %</td></tr></table>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.ColumnTables at 0x112b57e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<optimus.df_analyzer.DataTypeTable at 0x11308bf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIlCAYAAADsaIHqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X2cjXX+x/H33DQ3QsbNyE2piNFgRkQxbaUSLetuRfqt\nSSHFaEtthEylQm1J0xZyV+mOjCLdq0hWrdsdxbo3cneGEZqbY2au3x8ec7bTYJ258Z3rO6/n4+HR\nnutcZ87nvdc1vM+5znWdIMdxHAEAAAAGBZseAAAAAKCUAgAAwDhKKQAAAIyjlAIAAMA4SikAAACM\no5QCAADAOEopAAAAjKOUAgAAwDhKKQCUM3ynCYCKiFIKAKWgQ4cOGjly5GnvHzlypDp06HDGn+H1\nevX0009r0aJFAT0OAGxAKQWAc+C+++5TSkrKGdc5ePCg5syZo7y8vHM0FQCUH6GmBwCAiuDiiy82\nPQIAlGu8UwoApeTEiRMaP368rrrqKrVu3VqPPPKIDh8+LKnoYfgOHTro6aefVmJiolq0aKE777xT\nN954oyRp1KhRRQ7ZL1iwQLfccouaN2+uP/3pT/rmm2/OXTAAOAcopQBQSj7++GNt3LhREyZM0COP\nPKKvv/5agwYNUn5+/inXnzt3rpo3b65//OMffof37733Xr9D/fv27dO0adN0//3366WXXlJQUJCG\nDx+uQ4cOnZNcAHAucPgeAEpJVFSUZsyYoUqVKvluDx06VMuWLTvl+nXr1tVDDz3ku71nzx5JJw/1\nX3HFFb7lBQUFevnll9WwYUNJUnh4uO68806tW7fO9+4qALgd75QCQCm57rrrfIVUOnmIPjQ0VD/8\n8MMp12/atOlZ/dyoqChfIZWk+vXrS5KOHTtWgmkBoHyhlAJAKalVq5bf7eDgYEVFReno0aOnXP+3\nBfZMfr9eUFCQpJPvoAKALSilAFBKjhw54nc7Pz9fmZmZqlGjhqGJAMA9KKUAUEpWrFjhd43RTz/9\nVHl5eWrbtu1ZPT4kJKSsRgOAco9SCgClxOPxKCkpSd99953eeustPfbYY2rfvr2uueaas3p8lSpV\nJEkrV67U+vXry3JUACh3OPseAEpJv379dOzYMQ0dOlRhYWHq2rWrHn74Yd9nQP+XypUra8CAAXr3\n3Xf1zTffaMWKFWU8MQCUH0GO4zimhwAAAEDFxuF7AAAAGEcpBQAAgHGUUgAAABhHKQUAAIBxlFIA\nAAAYRykFAACAcZRSAAAAGOe6i+d7PMdMj1BmgoODVL36+Tp8+FcVFNh5+VjbM5LP/WzPaHs+yf6M\n5HO/ipCxVq0qAT+Gd0rLkeDgIAUFBSk4+Oy+/cWNbM9IPvezPaPt+ST7M5LP/SpCxuKglAIAAMA4\nSikAAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIAAMA4SikAAACMo5QCAADAOEopAAAA\njKOUAgAAwDhKKQAAAIyjlAIAAMA4SikAAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIA\nAMA4SikAAACMo5QCAADAOEopAAAAjKOUAgAAwDhKKQAAAIyjlAIAAMC4YpdSr9erLl26aNWqVadd\n5+uvv1a3bt3UsmVLde3aVV9++WVxnw4AAAAWK1Ypzc3N1YMPPqgtW7acdp1NmzZp2LBh6tWrlxYu\nXKi+ffvq/vvv16ZNm4o9LAAAAOwUGugDtm7dqhEjRshxnDOut3jxYl199dXq37+/JKlBgwZaunSp\nPv74Y8XExBRvWgAAAFgp4FL6/fffq23btnrggQcUHx9/2vV69OihEydOFFl+7NixQJ8SAAAAlgu4\nlPbr1++s1mvYsKHf7S1btmjlypXq27fvWT/XwYMH5fF4/JaFhlZSdHT0Wf8MNwkJCfb7r41sz0g+\n97M9o+35JPszks/9KkLG4gi4lBbH4cOHlZSUpCuvvFI33njjWT/u3XffVUpKit+yoUOHavjw4aU9\nYrlStWqk6RHKnO0Zyed+tme0PZ9kf0byuV9FyBiIMi+lGRkZGjBggBzH0ZQpUxQcfPavCvr06aMO\nHTr4LQsNraTMzF9Le8xyISQkWFWrRuro0Wzl5xeYHqdM2J6RfO5ne0bb80n2ZySf+1WEjFFR5wf8\nmDItpQcOHPCd6PT666+revXqAT0+Ojq6yKF6j+eY8vLs3ICF8vMLyOhy5HM/2zPank+yPyP53K8i\nZAxEmX2YISsrSwMHDlRwcLDefPNN1a5du6yeCgAAAC5Xqu+UejweValSRREREZo6dap2796tN954\nw3efJEVERKhKlSql+bQAAABwuVJ9pzQhIUFLliyRJH366afKyclR7969lZCQ4Pvz1FNPleZTAgAA\nwAIleqd08+bNp739ySeflORHAwAAoALhAlkAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAAADCO\nUgoAAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIKAAAA\n4yilAAAAMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAA\nADCOUgoAAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIK\nAAAA4yilAAAAMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMo\npQAAADCOUgoAAADjKKUAAAAwLtT0ALbLzc3R0qVfaOPGf+vgwYM6ccKriIgI1ahRU7GxzdWhw00K\nD48wPWax2Z5Psj8j+dydT7I/I/ncnU+yP6Pt+c6VIMdxHNNDBMLjOWZ6hLO2efMm/e1v9ysy8ny1\naBGnqKjqCgsLk9fr1eHDh/Tvf69XTk6Onntuiho1ulyhocGKijpfmZm/Ki+vwPT4/1Og+SRZn5F8\n5Qv7KNuwvGe0PZ/EPmrDNiyOWrWqBPwYSmkZGjQoUc2atdD994847TqTJz+nn37aqKlTZ7luJw00\nn+S+X0S2YcXKJ7GPlje2b0Pb80nso5L7t2FxFKeU8pnSMrRjxzb16NHrjOt0795L27ZtOUcTlS7b\n80n2ZySfu/NJ9mckn7vzSfZntD3fuUQpLUOXXdZIixd/eMZ1PvxwgS6++JJzM1Apsz2fZH9G8rk7\nn2R/RvK5O59kf0bb851LHL4vQ//5zyY9/PBfFRERoRYt4lWzZi2dd955OnHihA4dylBa2gYdP35c\nkya9oJiYK1z3dn6g+ST3HbJgG1asfBL7aHlj+za0PZ/EPmrDNiwOPlNaDuXk5OiLLz7Vjz+m6dCh\nDOXk5Co8PEw1a9ZSbGxz3XDDjapU6XxJ7txJA8kn2Z+RfOUP+yjbsLyzPZ/EPmrDNgwUpdTlKsJO\nantG8rmf7RltzyfZn5F87lcRMnKikwvl5ubq448Xmx6jzNieT7I/I/ncz/aM5HM/2zPanq+0UEoN\n+/XX43r66cdNj1FmbM8n2Z+RfO5ne0byuZ/tGW3PV1o4fF+OVIS3823PSD73sz2j7fkk+zOSz/0q\nQsZzevje6/WqS5cuWrVq1WnX+fHHH9W7d2/FxcWpV69eSktLK+7TAQAAwGKhxXlQbm6uRowYoS1b\nTn8h2KysLA0ePFhdu3bVhAkT9Pbbb+uee+7R559/rkqVKhV7YDdZt27NWa8bH39lGU5SNmzPJ9mf\nkXz/5cZ8kv0Zyfdfbswn2Z/R9nznUsCldOvWrRoxYoT+11H/JUuWKDw8XH/7298UFBSk0aNHa9my\nZfrkk0/Us2fPYg/sJs8/P1E7d+6QpDP+/xUUFKRly74/V2OVGtvzSfZnJN9Jbs0n2Z+RfCe5NZ9k\nf0bb851LAX+m9K233tLOnTv1wAMPKD4+Xq+//rratm1bZL2xY8cqNzdXkyZN8i0bOXKkwsLC9MQT\nT5zVcx08eFAej8dvWWhoJUVHRwcysjFer1djx47Svn17NX36bIWHh59x/ZCQYFWtGqmjR7OVn1/+\nP2MSaD7J/ozkK1/YR4uyPZ/kroy255PYR0/FbRmLIyrq/P+90u+U6ESnJk2anLaUDhkyRI0aNdJD\nDz3kW/bss89qy5YtmjZt2ln9/JdeekkpKSl+y4YOHarhw4cXd+SAXTLyo5L9gPw8nffNiyqodbny\nm//pf66+c8IfS/Z8xVCijAHmk859Rtu3oe35JPbR/6mcb8NznU9yWUbb80nso6dg4u/S8q5Ynyk9\nG9nZ2QoLC/NbFhYWJq/Xe9Y/o0+fPurQoYPfstDQSsrM/LVUZjwnQkKV1/r/FHRo21k/xFWvnIqR\nT7I/I/nKEfbRU7I9n+SijLbnk9hHT8NVGQNUnHdKy6yUhoeHFymgXq9XERERZ/0zoqOjixyq93iO\nue7yCU7V2nKq1j7r9fPzC1yVMdB8kv0ZyVe+sI8WZXs+yV0Zbc8nsY+eitsylrUyu3h+7dq1lZGR\n4bcsIyPDNZ8HBQAAwLlTZqU0Li5Oa9eu9Z2J5jiO1qxZo7i4uLJ6SgAAALhUqZZSj8ejnJwcSVKn\nTp109OhRPfXUU9q6daueeuopZWdnq3PnzqX5lAAAALBAqZbShIQELVmyRJJUuXJlTZ06VatXr1bP\nnj21fv16TZs2rcJcOB8AAABnr0QnOm3evPmMt1u0aKHU1NSSPAUAAAAqgDL7TCkAAABwtiilAAAA\nMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAAADCOUgoA\nAADjKKUAAAAwjlIKAAAA4yilAAAAMI5SCgAAAOMopQAAADCOUgoAAADjKKUAAAAwjlIKAAAA4yil\n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\nchzHcY4ePeo0adLE+emnn/zW2b59uxMXF2divFIxbNgw5+GHH3ZycnIcx3GcgoIC5+WXX3YefPBB\nx3Ec58CBA07fvn2dRx991OSYJZKYmOj89a9/dbKzs095f1ZWlnP//fc7d9111zmerORs/x10HLu3\nX6G7777bGTFihLNp0yZn7NixTosWLZwnn3zSd39+fr4zZswYJzEx0dyQJTBgwAAnKSnJ+fXXX095\n//Hjx52kpCTn7rvvPseTlU+UUgMKS2mh7OxsZ/78+c7gwYOd+Ph4p1mzZk7nzp2dPn36GJyyZE6c\nOOH84x//cK699lrnvffe8y2Pj493du/ebXCy0tGlSxdn1qxZZ1xn2rRpzi233HJuBipl119/vbNs\n2TLf7fnz5zv79u3zW2fRokVOx44dz/VopebKK690tm/f7rfsxIkTTmxsrPPLL784juM4//nPf5w2\nbdqYGK9U2FzcbP8ddBy7t18h218AV4RtWJo40akciIiIUK9evdSrVy95vV795z//0ZYtW5SRkWF6\ntGILDQ3Vvffeq06dOumxxx5TamqqnnjiCd9hfLcbNWqUhg4dqqVLl+qqq65SdHS077Cax+PRmjVr\ntGbNGr300kumRy2W/v37a8SIEXr44YfVu3dv9erVy3ffjh07NGvWLC1cuFDJycnmhiyhWrVqaeXK\nlbr00kt9y9LS0uQ4jsLDwyWd/JxbWFiYqRFL7KKLLtLy5cvVsGHD067z1VdfqXbt2udwqtJh+++g\nZPf2KxQVFaVdu3bp4osvVpUqVfTUU0+pWrVqfuts3LjRtRnr16+v77777ozbcNmyZYqOjj6HU5Vf\nlFID6tate9rPj4aFhalZs2Zq1qzZOZ6qbFx66aV64403NG/ePCUmJio3N9f0SKWiXbt2WrJkid57\n7z2tW7dOBw8eVE5OjsLDw1W7dm3Fx8frySefdO3nvAYMGKAaNWro+PHjRe47ePCg9u7dq8mTJ6tD\nhw4GpisdQ4YM0ejRo/Xvf/9bLVq00IEDB/T222+rb9++Cg8P17Rp0zRjxgzdfffdpkctNpuLW7t2\n7fTRRx9p3rx5Vv4OSnZvv0K2vwAeOXKkkpKS9NVXX6l169Z+2zAjI0OrV6/W999/rylTppgetVzg\nRCecMxkZGfr222/VsWNH1544ArssX75cc+fOVXp6umrUqKFbb71Vt912m4KDgzV79mzVr19fN910\n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\nfHy8s3XrVt/tDh06OGlpaX7rbNu2zYmPjz/Xo5WKzMxMp0+fPk63bt2cXbt2OXv27DntH7dq0qSJ\nk5GR4TiO42zfvt0ZPXq0Ex8f77Rr184ZPXq08/777zvr1693duzYYXbQYrryyiuLzF5QUOA8+OCD\nTsuWLZ01a9Y4Ho/HiYmJMTNgKbjxxhudb775xnc7JyfHuf/++534+Hjnhx9+cBzHcX3GTp06OfPn\nz3ccx3HWrFnjxMTEOLNnz/ZbJzU11enSpYuJ8UokLy/PmTp1qpOQkOC89957fvfFx8c7u3fvNjRZ\n6WnSpImzbds2Z+zYsU5sbKwzaNAgZ/ny5abHKlWdOnVyPvzwQ8dxHOfLL790YmJinMWLF/ut8+GH\nHzo33nijifFKrEmTJs7WrVudUaNGObGxsc6QIUOc7777zvRY5RZn3xvQoUMHjR49Wj///LMk6Y47\n7tArr7yi3NxcSSe/2eL555/XNddcY3LMYqtWrZqmTp2q48eP6+OPP1a9evVO+8etfvvu76WXXqrx\n48fr22+/1ZgxY+Q4jmbNmqV+/fqpc+fOBqcsvvj4eE2fPt3vkixBQUGaNGmS2rVrp4EDB+qrr74y\nOGHJZWZm6uKLL/bdDg8P1wsvvKAOHTpo8ODBWrt2rcHpSsf+/fvVpk0bSSe3aXBwsO92oVatWrny\nYxghISEaPHiw3nzzTX300Ufq16+ftm3bZnqsUnfBBRfoiSee0KJFixQdHa2kpCS1b99eY8aM0YIF\nC7Rhwwbt3LnT9JjFtm/fPrVs2VKSdMMNNygkJESXXXaZ3zrNmzf3HX1zo2rVqunpp5/WBx98oGrV\nqum+++7Ttddeq3HjxumDDz7Qxo0blZ6ebnrMcoFSasC4ceNUuXJl3XLLLerVq5fWr1+vVatWqV27\ndvrjH/+ohIQE/fzzz0pOTjY9arFdcMEFmjhxonJyckyPUiacU3zq5fzzz1fnzp311FNPadGiRVq/\nfr2+/fZbA9OV3OjRo3375A8//OBbHhISosmTJ6tjx44aO3aswQlLriIU72bNmumtt95Sdna23njj\nDQUFBWnBggV+67z33nu6/PLLDU1Ycg0aNNDs2bPVq1cvJSYm6oUXXjA9Uqmx/cWvdPLw9jvvvCPp\nZN61a9eqUaNGvvu9Xq9effVVxcfHmxqxRH67DRs2bKhnnnlGy5cv1yOPPKLc3Fy9+uqr6t27tzp2\n7GhwyvKDz5QatGnTJv3www9KT09XVlaWQkJCVKtWLcXHx6tdu3YKDuY1Q3mVkpKiu+++W5GRkaZH\nKTM5OTn64YcfdMUVV/id/FNoxYoV+uyzz/T4448bmK7ktm/frsGDB+vo0aN6+eWXddVVV/nuy8vL\n09ixY5Wamurqzz5v2bJFQ4YM8b0T+sADD2j79u3auHGjGjdurK1bt2r37t2aNWuWa//R/63Dhw9r\n/PjxWrJkiT7//HNddNFFpkcqkZiYGK1YseKUv3+F8vPzdeTIkTOuU579+9//1uDBg3XddddpwoQJ\nfvd9++23euCBB1SlShXNmDFDl156qaEpi+9stqHX61VmZqZq1659DicrnyilhmVkZGj//v3yer2K\njIxUrVq1VLNmTdNjlRrb80kVI6OtCot306ZNT7nN3F68pZP/4G3btk0XXHCB6tatq7y8PC1cuFAb\nN25UdHS0unbtqvr165ses0Rs/R2sCC9+pZMfWdu3b1+Rd+z37NmjDRs26Prrr1elSpUMTVcykydP\n1j333GP9NiwtlFJDZs2apTfffFN79+71OxQcFBSkOnXqKDExUYmJiQYnLBnb80kVI2NFYWup+S0b\nM57qd7DwcKltv4M2br/fsz1jZmamDhw4IK/Xq4iICNWqVUtRUVGmxypXuE6pAc8++6wWLVqkhx56\nSK1atVLNmjUVFhYmr9crj8ejf/3rX3r++ed1+PBhPfDAA6bHDZjt+ST7My5cuPCs1+3evXsZTlK2\nKsILC1sz2v47WMjW7fdbtmd8/fXXNXfuXO3evbtIvosuukiJiYm64447DE5Yjpzr0/3hOG3atHFW\nrVp1xnX++c9/Otdcc805mqh02Z7PcezPeNdddzkxMTFOmzZtnBtuuOG0fzp06GB61GKbNGmSc+21\n1zoffPCBs2fPHicnJ8cpKChwcnJynPT0dCc1NdW59tprneeff970qMVmc0bbfwcdx+7tV8j2jH//\n+9+d9u3bOwsWLHB27drlHD9+3PF6vc7x48ednTt3OvPnz3fat2/vTJ482fSo5QKl1ICrr77aWbNm\nzRnXWbVqldOmTZtzNFHpsj2f41SMjE888YRzww03OJmZmaZHKRMVodTYnLEi/A7avP0K2Z6xbdu2\nzsqVK8+4znfffefafKWN07sN6NWrl0aMGKGFCxdqz5498nq9kk6ekLB3714tWrRIDz/8sCu/vUKy\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1130a94a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "end of __analyze 2.1021029949188232\n",
      "Total execution time:  27.68661904335022\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table width=50%><tr><th colspan=3>General description</td></tr><tr><th colspan=1>Features</td><th colspan=2>Name or Quantity</td></tr><tr><th colspan=1>File Name</td><td colspan=2>file with no path</td></tr><tr><th colspan=1>Columns</td><td colspan=2>8</td></tr><tr><th colspan=1>Rows</td><td colspan=2>19</td></tr>"
      ],
      "text/plain": [
       "<optimus.df_analyzer.GeneralDescripTable at 0x113761ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Setting the new dataFrame transformed into the analyzer class\n",
    "analyzer.set_data_frame(transformer.get_data_frame)\n",
    "analyzer_table = analyzer.column_analyze(\"*\", print_type=True, plots=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It can be seen from output of the analyzer object, that there are columns with numbers\n",
    "even when ceratin column (for example) is supposed to be only of words or letters. \n",
    "\n",
    "In order to solve this problem, operationInType function of DataFrameTransformer class \n",
    "can be used. \n",
    "\n",
    "operationInType function is useful to make operations in a certain element of one dataType. In this particular example, it can be seen in the last output cell (specifically in 'product' column' that are values that don't fit the rest of the data, the aren't strings but they are numbers or empty strings. operationInType can take care about them and clean the column dataFrame."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the following example, operationInType of function of DataFrameTransformer class is run in order to converts all posible \n",
    "parsables strings to integer into a null or none value. Notice how the 110790 value in product\n",
    "column have been changed, but the rest of the column has remained intact."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Making transformation in the inferred dataType elements of a certains columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+---+---------+--------+-------+---------+-----+----------+--------+\n",
      "| id|firstName|lastName|    age|billingId|price|     birth| product|\n",
      "+---+---------+--------+-------+---------+-----+----------+--------+\n",
      "|  1|     luis| alvarez|37.7823|      123|  200|07-07-1980|    cake|\n",
      "|  2|    andre|  ampere|67.7769|      423|  160|08-07-1950|    piza|\n",
      "|  3|    niels|    bohr|27.7796|      551|  160|09-07-1990|   pizza|\n",
      "|  4|     paul|   dirac|63.7903|      521|  160|10-07-1954|   pizza|\n",
      "|  5|   albert|einstein|27.7796|      634|  160|11-07-1990|   pizza|\n",
      "|  6|  galileo| galilei|87.7849|      672|  100|12-08-1930|   arepa|\n",
      "|  7|     carl|   gauss|47.7876|      323|   60|13-07-1970|    taco|\n",
      "|  8|    david| hilbert|67.7769|      624|   60|14-07-1950|taaaccoo|\n",
      "|  9| johannes|  kepler|97.7876|      735|   60|22-04-1920|    taco|\n",
      "| 10|    james| maxwell|94.7796|      875|   60|12-03-1923|    taco|\n",
      "+---+---------+--------+-------+---------+-----+----------+--------+\n",
      "only showing top 10 rows\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# This function makes changes or transformation in the column specified only in the cells\n",
    "# that are recognized as the dataType specified. \n",
    "transformer.operation_in_type([('product', 'integer', None)]).show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sometimes there a some values that are different but actually are the same. In the product\n",
    "column for example, there are the following values: 'taaaccoo', 'piza'. It \n",
    "can be inferred that the correct value is taco and piza and not the rest of them. This problem can\n",
    "be solved with the lookup function of the DataFrameTransformer class."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Replacing multiple string values to a single string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+---+------------+--------+--------+---------+-----+----------+----------+\n",
      "| id|   firstName|lastName|     age|billingId|price|     birth|   product|\n",
      "+---+------------+--------+--------+---------+-----+----------+----------+\n",
      "|  1|        luis| alvarez| 37.7823|      123|  200|07-07-1980|      cake|\n",
      "|  2|       andre|  ampere| 67.7769|      423|  160|08-07-1950|     pizza|\n",
      "|  3|       niels|    bohr| 27.7796|      551|  160|09-07-1990|     pizza|\n",
      "|  4|        paul|   dirac| 63.7903|      521|  160|10-07-1954|     pizza|\n",
      "|  5|      albert|einstein| 27.7796|      634|  160|11-07-1990|     pizza|\n",
      "|  6|     galileo| galilei| 87.7849|      672|  100|12-08-1930|     arepa|\n",
      "|  7|        carl|   gauss| 47.7876|      323|   60|13-07-1970|      taco|\n",
      "|  8|       david| hilbert| 67.7769|      624|   60|14-07-1950|      taco|\n",
      "|  9|    johannes|  kepler| 97.7876|      735|   60|22-04-1920|      taco|\n",
      "| 10|       james| maxwell| 94.7796|      875|   60|12-03-1923|      taco|\n",
      "| 11|       isaac|  newton| 18.7903|      992|  180|15-02-1999|     pasta|\n",
      "| 12|        emmy| noether| 24.7903|      234|  180|08-12-1993|     pasta|\n",
      "| 13|         max|  planck| 23.7930|      111|   80|04-01-1994|hamburguer|\n",
      "| 14|        fred|   hoyle| 20.7849|      553|  160|27-06-1997|     pizza|\n",
      "| 15|   heinrich |   hertz| 61.7769|      116|  160|30-11-1956|     pizza|\n",
      "| 16|     william| gilbert| 59.7849|      886|   40|26-03-1958|      beer|\n",
      "| 17|       marie|   curie| 17.7930|      912|   20|22-03-2000|      rice|\n",
      "| 18|      arthur| compton|118.7769|      812|  100|01-01-1899|      null|\n",
      "| 19|       james|chadwick| 96.7930|      467|  200|03-05-1921|      null|\n",
      "+---+------------+--------+--------+---------+-----+----------+----------+\n",
      "\n"
     ]
    }
   ],
   "source": [
    "transformer.lookup('product', str_to_replace='taco', list_str=['taaaccoo']) \n",
    "transformer.lookup('product', str_to_replace='pizza', list_str=['piza', 'pizzza']) \n",
    "transformer.show(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As can be notice above, string specified in the list argument 'list_str' have been\n",
    "replaced to 'str_to_replace' value. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Chaining and lazy evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The past transformations were done step by step, but this can be achieved by chaining\n",
    "all operations into one line of code, like the cell below. This way is much more efficient and scalable because it uses all optimization issues from the lazy evaluation approach."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "All the transformation set before can be done into a single line of code thanks to the \n",
    "chaining feature of the DataFrameTransformer class. This option is a optimal way to \n",
    "make different transformations, because it uses as much as possible all advantages of\n",
    "the lazy evaluation approach. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+---+--------------------+--------------------+---------+----------+-----+----------+--------+\n",
      "| id|           firstName|            lastName|billingId|   product|price|     birth|dummyCol|\n",
      "+---+--------------------+--------------------+---------+----------+-----+----------+--------+\n",
      "|  1|                Luis|         Alvarez$$%!|      123|      Cake|   10|1980/07/07|   never|\n",
      "|  2|               André|              Ampère|      423|      piza|    8|1950/07/08|   gonna|\n",
      "|  3|               NiELS|          Böhr//((%%|      551|     pizza|    8|1990/07/09|    give|\n",
      "|  4|                PAUL|              dirac$|      521|     pizza|    8|1954/07/10|     you|\n",
      "|  5|              Albert|            Einstein|      634|     pizza|    8|1990/07/11|      up|\n",
      "|  6|             Galileo|             GALiLEI|      672|     arepa|    5|1930/08/12|   never|\n",
      "|  7|                CaRL|            Ga%%%uss|      323|      taco|    3|1970/07/13|   gonna|\n",
      "|  8|               David|          H$$$ilbert|      624|  taaaccoo|    3|1950/07/14|     let|\n",
      "|  9|            Johannes|              KEPLER|      735|      taco|    3|1920/04/22|     you|\n",
      "| 10|               JaMES|         M$$ax%%well|      875|      taco|    3|1923/03/12|    down|\n",
      "| 11|               Isaac|              Newton|      992|     pasta|    9|1999/02/15|  never |\n",
      "| 12|              Emmy%%|            Nöether$|      234|     pasta|    9|1993/12/08|   gonna|\n",
      "| 13|              Max!!!|           Planck!!!|      111|hamburguer|    4|1994/01/04|    run |\n",
      "| 14|                Fred|            Hoy&&&le|      553|    pizzza|    8|1997/06/27|  around|\n",
      "| 15|(((   Heinrich )))))|               Hertz|      116|     pizza|    8|1956/11/30|     and|\n",
      "| 16|             William|          Gilbert###|      886|      BEER|    2|1958/03/26|  desert|\n",
      "| 17|               Marie|               CURIE|      912|      Rice|    1|2000/03/22|     you|\n",
      "| 18|              Arthur|          COM%%%pton|      812|    110790|    5|1899/01/01|       #|\n",
      "| 19|               JAMES|            Chadwick|      467|      null|   10|1921/05/03|       #|\n",
      "+---+--------------------+--------------------+---------+----------+-----+----------+--------+\n",
      "\n",
      "+---+------------+--------+---------+-----+----------+---------+----------+\n",
      "| id|   firstName|lastName|billingId|price|     birth|clientAge|   product|\n",
      "+---+------------+--------+---------+-----+----------+---------+----------+\n",
      "|  1|        luis| alvarez|      123|   10|07-07-1980|  37.7823|      cake|\n",
      "|  2|       andre|  ampere|      423|    8|08-07-1950|  67.7769|     pizza|\n",
      "|  3|       niels|    bohr|      551|    8|09-07-1990|  27.7796|     pizza|\n",
      "|  4|        paul|   dirac|      521|    8|10-07-1954|  63.7903|     pizza|\n",
      "|  5|      albert|einstein|      634|    8|11-07-1990|  27.7796|     pizza|\n",
      "|  6|     galileo| galilei|      672|    5|12-08-1930|  87.7849|     arepa|\n",
      "|  7|        carl|   gauss|      323|    3|13-07-1970|  47.7876|      taco|\n",
      "|  8|       david| hilbert|      624|    3|14-07-1950|  67.7769|      taco|\n",
      "|  9|    johannes|  kepler|      735|    3|22-04-1920|  97.7876|      taco|\n",
      "| 10|       james| maxwell|      875|    3|12-03-1923|  94.7796|      taco|\n",
      "| 11|       isaac|  newton|      992|    9|15-02-1999|  18.7903|     pasta|\n",
      "| 12|        emmy| noether|      234|    9|08-12-1993|  24.7903|     pasta|\n",
      "| 13|         max|  planck|      111|    4|04-01-1994|  23.7930|hamburguer|\n",
      "| 14|        fred|   hoyle|      553|    8|27-06-1997|  20.7849|     pizza|\n",
      "| 15|   heinrich |   hertz|      116|    8|30-11-1956|  61.7769|     pizza|\n",
      "| 16|     william| gilbert|      886|    2|26-03-1958|  59.7849|      beer|\n",
      "| 17|       marie|   curie|      912|    1|22-03-2000|  17.7930|      rice|\n",
      "| 18|      arthur| compton|      812|    5|01-01-1899| 118.7769|      null|\n",
      "| 19|       james|chadwick|      467|   10|03-05-1921|  96.7930|      null|\n",
      "+---+------------+--------+---------+-----+----------+---------+----------+\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Instanciate DataFrameTransfomer\n",
    "transformer = op.DataFrameTransformer(df)\n",
    "# Get original dataFrame to show it.\n",
    "transformer.show(20)\n",
    "\n",
    "# Chaining function transformations\n",
    "transformer.trim_col(\"*\") \\\n",
    "           .remove_special_chars(\"*\") \\\n",
    "           .clear_accents(\"*\") \\\n",
    "           .lower_case(\"*\") \\\n",
    "           .drop_col(\"dummyCol\") \\\n",
    "           .date_transform(\"birth\", \"yyyyMMdd\", \"dd-MM-YYYY\") \\\n",
    "           .age_calculate(\"birth\", \"dd-MM-YYYY\", \"clientAge\") \\\n",
    "           .operation_in_type([('product', 'integer', None)]) \\\n",
    "           .lookup('product', str_to_replace='taco', list_str=['taaaccoo']) \\\n",
    "           .lookup('product', str_to_replace='pizza', list_str=['piza', 'pizzza'])  \\\n",
    "        \n",
    "        \n",
    "transformer.show(20)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}