{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "625cdddd",
   "metadata": {},
   "outputs": [],
   "source": [
    "#snowflake connector and pytest\n",
    "!pip -q install snowflake-connector-python pytest pytest-sugar "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "7abc3c06",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "DEBUG:absl:READY!!!\n"
     ]
    }
   ],
   "source": [
    "# main imports\n",
    "import snowflake.connector\n",
    "import pandas as pd\n",
    "import os\n",
    "import boto3 \n",
    "\n",
    "# utils\n",
    "from getpass import getpass\n",
    "\n",
    "# logging and re\n",
    "from absl import logging\n",
    "import re\n",
    "\n",
    "\n",
    "log_level = \"DEBUG\"\n",
    "ticket_code = \"EXP_1\"\n",
    "\n",
    "logging.set_verbosity(log_level)\n",
    "logging.debug(\"READY!!!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d940946",
   "metadata": {},
   "source": [
    "## (1) Direct Snowflake Access "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "a18bc275",
   "metadata": {},
   "outputs": [],
   "source": [
    "sec_id = 'dev/sagemaker-notebook-instance/SNOWFLAKE_PASSWORD'\n",
    "\n",
    "\n",
    "def get_secret_value(name, version=None):\n",
    "    \"\"\"Gets the value of a secret.\n",
    "\n",
    "    Version (if defined) is used to retrieve a particular version of\n",
    "    the secret.\n",
    "\n",
    "    \"\"\"\n",
    "    secrets_client = boto3.client(\"secretsmanager\")\n",
    "    kwargs = {'SecretId': name}\n",
    "    if version is not None:\n",
    "        kwargs['VersionStage'] = version\n",
    "    response = secrets_client.get_secret_value(**kwargs)\n",
    "    return response\n",
    "\n",
    "\n",
    "def get_snowflake_creds(username=\"SAGEMAKER\", account=\"orchard\",\n",
    "                        warehouse=\"DEV_OWS_ENGINEERING\"):\n",
    "    \"\"\"\n",
    "    Fetches and returns snowflake creds for connecting to snowflake\n",
    "\n",
    "    Please use this within the scope of a function if using this on a shared instance\n",
    "    This is so that the password is in memory only when its needed and gets dropped \n",
    "    once its no longer required.\n",
    "\n",
    "    returns:\n",
    "    - creds (dict) - a dictionary containing user creds\n",
    "\n",
    "    \"\"\"\n",
    "    creds = {\n",
    "      \"user\":  username,\n",
    "      \"password\": get_secret_value(sec_id)['SecretString'],\n",
    "      \"account\": \"orchard\",\n",
    "      \"warehouse\": warehouse,\n",
    "      \"protocol\": 'https'\n",
    "    }\n",
    "    return creds\n",
    "\n",
    "\n",
    "def snowflake_connector_factory(creds=None):\n",
    "    \"\"\"\n",
    "    A Factory for creating snowflake connectors.\n",
    "\n",
    "    This returns the cursor after opening a session with snowflake.\n",
    "\n",
    "    params:\n",
    "    - creds - snowflake credentials \n",
    "\n",
    "    returns:\n",
    "    - cursor - snowflake session cursor\n",
    "    \"\"\"\n",
    "    try:\n",
    "        if creds:\n",
    "            _creds = creds\n",
    "        else:\n",
    "            _creds = get_snowflake_creds()\n",
    "        return snowflake.connector.connect(**_creds).cursor()\n",
    "    except Exception as e:\n",
    "        logging.error(f\"Something went wrong - {str(e)}\")\n",
    "\n",
    "\n",
    "def _is_version_number(s):\n",
    "    \"Check and returns true if its a version number\"\n",
    "    return re.search(\"^[0-9][.0-9]*[0-9]$\", s) is not None\n",
    "\n",
    "\n",
    "def test_connection():\n",
    "    \"\"\" tests connection to snowflake \"\"\"\n",
    "    with snowflake_connector_factory() as cs:\n",
    "        try:\n",
    "            cs.execute(\"SELECT current_version()\")\n",
    "#             cs.execute(\"USE WAREHOUSE DEV_PERFORMANCE_WAREHOUSE;\")\n",
    "#             cs.execute(\"select * from INTELLIGENCE.DEV_TALLMAN.TALLMAN_K_PROTO_TABLE_JUNE_23 limit 1;\")\n",
    "            one_row = cs.fetchone()\n",
    "            # make sure its just one row\n",
    "            assert len(one_row) == 1\n",
    "            # make sure it is a version number\n",
    "            assert _is_version_number(one_row[0])\n",
    "            logging.info(f\"Your snowflake version - {one_row[0]} PASSED!\")\n",
    "        except Exception as e:\n",
    "            logging.error(f\"Something went wrong - {str(e)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "3d60c564",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:absl:Your snowflake version - 7.24.2 PASSED!\n"
     ]
    }
   ],
   "source": [
    "test_connection()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d99fc93b",
   "metadata": {},
   "outputs": [],
   "source": [
    "with snowflake_connector_factory() as cs:\n",
    "    try:\n",
    "        cs.execute(\"USE WAREHOUSE DEV_PERFORMANCE_WAREHOUSE;\")\n",
    "        cs.execute(\"SELECT * from INTELLIGENCE.DEV_TALLMAN.TALLMAN_K_PROTO_TABLE_JUNE_23 LIMIT 100;\")\n",
    "        rows = cs.fetchall()\n",
    "    except Exception as e:\n",
    "        logging.error(f\"Something went wrong - {str(e)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5da973b7",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_df = pd.DataFrame(rows, columns=map(lambda meta: meta[0], cs.description))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "64d2ee29",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ISRC</th>\n",
       "      <th>PRED_TYPE</th>\n",
       "      <th>MSE</th>\n",
       "      <th>RMSE</th>\n",
       "      <th>NRMSE</th>\n",
       "      <th>AVG_RMSE</th>\n",
       "      <th>MAE</th>\n",
       "      <th>AVG_MAE</th>\n",
       "      <th>SUM_FORECAST_ERRORS</th>\n",
       "      <th>AVG_FE</th>\n",
       "      <th>LEN_DF</th>\n",
       "      <th>FIRST_DAY_TRAIN_SET_STREAMS</th>\n",
       "      <th>LAST_DAY_TRAIN_SET_STREAMS</th>\n",
       "      <th>LINEAR_GRADIENT</th>\n",
       "      <th>AVERAGE_DAILY_STREAMS</th>\n",
       "      <th>TEST_DATA_MIN_DATE_STREAMS</th>\n",
       "      <th>TEST_DATA_MAX_DATE_STREAMS</th>\n",
       "      <th>TEST_DATA_LINEAR_GRADIENT</th>\n",
       "      <th>MEDIAN_STREAMS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>QMBZ92156553</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>149.136644</td>\n",
       "      <td>12.212151</td>\n",
       "      <td>0.872297</td>\n",
       "      <td>0.087230</td>\n",
       "      <td>4.182950</td>\n",
       "      <td>0.029878</td>\n",
       "      <td>11.864</td>\n",
       "      <td>0.084743</td>\n",
       "      <td>140</td>\n",
       "      <td>49</td>\n",
       "      <td>62</td>\n",
       "      <td>0.098485</td>\n",
       "      <td>47.917293</td>\n",
       "      <td>44</td>\n",
       "      <td>46</td>\n",
       "      <td>0.285714</td>\n",
       "      <td>46.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>USQE10910023</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>67.364856</td>\n",
       "      <td>8.207610</td>\n",
       "      <td>0.264762</td>\n",
       "      <td>0.058626</td>\n",
       "      <td>29.842434</td>\n",
       "      <td>0.213160</td>\n",
       "      <td>-18.904</td>\n",
       "      <td>-0.135029</td>\n",
       "      <td>140</td>\n",
       "      <td>155</td>\n",
       "      <td>77</td>\n",
       "      <td>-0.590909</td>\n",
       "      <td>111.187970</td>\n",
       "      <td>79</td>\n",
       "      <td>87</td>\n",
       "      <td>1.142857</td>\n",
       "      <td>107.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>QM4TX1960783</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>593.513701</td>\n",
       "      <td>24.362137</td>\n",
       "      <td>0.435038</td>\n",
       "      <td>0.174015</td>\n",
       "      <td>27.605189</td>\n",
       "      <td>0.197180</td>\n",
       "      <td>94.403</td>\n",
       "      <td>0.674307</td>\n",
       "      <td>140</td>\n",
       "      <td>84</td>\n",
       "      <td>88</td>\n",
       "      <td>0.030303</td>\n",
       "      <td>77.533835</td>\n",
       "      <td>79</td>\n",
       "      <td>72</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>72.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>USLZJ2190718</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>55013.011845</td>\n",
       "      <td>234.548528</td>\n",
       "      <td>0.282249</td>\n",
       "      <td>1.675347</td>\n",
       "      <td>411.313473</td>\n",
       "      <td>2.937953</td>\n",
       "      <td>-463.238</td>\n",
       "      <td>-3.308843</td>\n",
       "      <td>140</td>\n",
       "      <td>2448</td>\n",
       "      <td>3604</td>\n",
       "      <td>8.757576</td>\n",
       "      <td>3137.390977</td>\n",
       "      <td>4043</td>\n",
       "      <td>3212</td>\n",
       "      <td>-118.714286</td>\n",
       "      <td>3011.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>QMDA72177286</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>2572.358642</td>\n",
       "      <td>50.718425</td>\n",
       "      <td>0.405747</td>\n",
       "      <td>0.362274</td>\n",
       "      <td>28.128709</td>\n",
       "      <td>0.200919</td>\n",
       "      <td>243.024</td>\n",
       "      <td>1.735886</td>\n",
       "      <td>140</td>\n",
       "      <td>246</td>\n",
       "      <td>179</td>\n",
       "      <td>-0.507576</td>\n",
       "      <td>204.127820</td>\n",
       "      <td>178</td>\n",
       "      <td>282</td>\n",
       "      <td>14.857143</td>\n",
       "      <td>196.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>GBQCP1400107</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>11834.600948</td>\n",
       "      <td>108.786952</td>\n",
       "      <td>0.117862</td>\n",
       "      <td>0.777050</td>\n",
       "      <td>1674.939998</td>\n",
       "      <td>11.963857</td>\n",
       "      <td>-132.728</td>\n",
       "      <td>-0.948057</td>\n",
       "      <td>140</td>\n",
       "      <td>2952</td>\n",
       "      <td>3114</td>\n",
       "      <td>1.227273</td>\n",
       "      <td>3585.714286</td>\n",
       "      <td>3391</td>\n",
       "      <td>2915</td>\n",
       "      <td>-68.000000</td>\n",
       "      <td>3438.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>UK9951702001</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>635.697628</td>\n",
       "      <td>25.213045</td>\n",
       "      <td>0.319152</td>\n",
       "      <td>0.180093</td>\n",
       "      <td>24.344769</td>\n",
       "      <td>0.173891</td>\n",
       "      <td>-55.210</td>\n",
       "      <td>-0.394357</td>\n",
       "      <td>140</td>\n",
       "      <td>88</td>\n",
       "      <td>63</td>\n",
       "      <td>-0.189394</td>\n",
       "      <td>70.661654</td>\n",
       "      <td>117</td>\n",
       "      <td>54</td>\n",
       "      <td>-9.000000</td>\n",
       "      <td>68.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>USSTT2200007</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>141.878842</td>\n",
       "      <td>11.911291</td>\n",
       "      <td>0.441159</td>\n",
       "      <td>0.085081</td>\n",
       "      <td>5.439714</td>\n",
       "      <td>0.038855</td>\n",
       "      <td>-40.160</td>\n",
       "      <td>-0.286857</td>\n",
       "      <td>140</td>\n",
       "      <td>81</td>\n",
       "      <td>103</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>118.060150</td>\n",
       "      <td>97</td>\n",
       "      <td>93</td>\n",
       "      <td>-0.571429</td>\n",
       "      <td>95.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>ROCMA1911874</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>180.726762</td>\n",
       "      <td>13.443465</td>\n",
       "      <td>0.298744</td>\n",
       "      <td>0.096025</td>\n",
       "      <td>2.081031</td>\n",
       "      <td>0.014865</td>\n",
       "      <td>17.911</td>\n",
       "      <td>0.127936</td>\n",
       "      <td>140</td>\n",
       "      <td>32</td>\n",
       "      <td>119</td>\n",
       "      <td>0.659091</td>\n",
       "      <td>90.879699</td>\n",
       "      <td>115</td>\n",
       "      <td>109</td>\n",
       "      <td>-0.857143</td>\n",
       "      <td>97.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>JPQ941500014</td>\n",
       "      <td>actuals_crossing_predicted</td>\n",
       "      <td>80.232142</td>\n",
       "      <td>8.957240</td>\n",
       "      <td>0.373218</td>\n",
       "      <td>0.063980</td>\n",
       "      <td>1.697080</td>\n",
       "      <td>0.012122</td>\n",
       "      <td>-22.805</td>\n",
       "      <td>-0.162893</td>\n",
       "      <td>140</td>\n",
       "      <td>45</td>\n",
       "      <td>46</td>\n",
       "      <td>0.007576</td>\n",
       "      <td>41.593985</td>\n",
       "      <td>41</td>\n",
       "      <td>45</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>41.000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 19 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ISRC                   PRED_TYPE           MSE        RMSE  \\\n",
       "0   QMBZ92156553  actuals_crossing_predicted    149.136644   12.212151   \n",
       "1   USQE10910023  actuals_crossing_predicted     67.364856    8.207610   \n",
       "2   QM4TX1960783  actuals_crossing_predicted    593.513701   24.362137   \n",
       "3   USLZJ2190718  actuals_crossing_predicted  55013.011845  234.548528   \n",
       "4   QMDA72177286  actuals_crossing_predicted   2572.358642   50.718425   \n",
       "..           ...                         ...           ...         ...   \n",
       "95  GBQCP1400107  actuals_crossing_predicted  11834.600948  108.786952   \n",
       "96  UK9951702001  actuals_crossing_predicted    635.697628   25.213045   \n",
       "97  USSTT2200007  actuals_crossing_predicted    141.878842   11.911291   \n",
       "98  ROCMA1911874  actuals_crossing_predicted    180.726762   13.443465   \n",
       "99  JPQ941500014  actuals_crossing_predicted     80.232142    8.957240   \n",
       "\n",
       "       NRMSE  AVG_RMSE          MAE    AVG_MAE  SUM_FORECAST_ERRORS    AVG_FE  \\\n",
       "0   0.872297  0.087230     4.182950   0.029878               11.864  0.084743   \n",
       "1   0.264762  0.058626    29.842434   0.213160              -18.904 -0.135029   \n",
       "2   0.435038  0.174015    27.605189   0.197180               94.403  0.674307   \n",
       "3   0.282249  1.675347   411.313473   2.937953             -463.238 -3.308843   \n",
       "4   0.405747  0.362274    28.128709   0.200919              243.024  1.735886   \n",
       "..       ...       ...          ...        ...                  ...       ...   \n",
       "95  0.117862  0.777050  1674.939998  11.963857             -132.728 -0.948057   \n",
       "96  0.319152  0.180093    24.344769   0.173891              -55.210 -0.394357   \n",
       "97  0.441159  0.085081     5.439714   0.038855              -40.160 -0.286857   \n",
       "98  0.298744  0.096025     2.081031   0.014865               17.911  0.127936   \n",
       "99  0.373218  0.063980     1.697080   0.012122              -22.805 -0.162893   \n",
       "\n",
       "    LEN_DF  FIRST_DAY_TRAIN_SET_STREAMS  LAST_DAY_TRAIN_SET_STREAMS  \\\n",
       "0      140                           49                          62   \n",
       "1      140                          155                          77   \n",
       "2      140                           84                          88   \n",
       "3      140                         2448                        3604   \n",
       "4      140                          246                         179   \n",
       "..     ...                          ...                         ...   \n",
       "95     140                         2952                        3114   \n",
       "96     140                           88                          63   \n",
       "97     140                           81                         103   \n",
       "98     140                           32                         119   \n",
       "99     140                           45                          46   \n",
       "\n",
       "   LINEAR_GRADIENT AVERAGE_DAILY_STREAMS  TEST_DATA_MIN_DATE_STREAMS  \\\n",
       "0         0.098485             47.917293                          44   \n",
       "1        -0.590909            111.187970                          79   \n",
       "2         0.030303             77.533835                          79   \n",
       "3         8.757576           3137.390977                        4043   \n",
       "4        -0.507576            204.127820                         178   \n",
       "..             ...                   ...                         ...   \n",
       "95        1.227273           3585.714286                        3391   \n",
       "96       -0.189394             70.661654                         117   \n",
       "97        0.166667            118.060150                          97   \n",
       "98        0.659091             90.879699                         115   \n",
       "99        0.007576             41.593985                          41   \n",
       "\n",
       "    TEST_DATA_MAX_DATE_STREAMS TEST_DATA_LINEAR_GRADIENT MEDIAN_STREAMS  \n",
       "0                           46                  0.285714         46.000  \n",
       "1                           87                  1.142857        107.000  \n",
       "2                           72                 -1.000000         72.000  \n",
       "3                         3212               -118.714286       3011.000  \n",
       "4                          282                 14.857143        196.000  \n",
       "..                         ...                       ...            ...  \n",
       "95                        2915                -68.000000       3438.000  \n",
       "96                          54                 -9.000000         68.000  \n",
       "97                          93                 -0.571429         95.000  \n",
       "98                         109                 -0.857143         97.000  \n",
       "99                          45                  0.571429         41.000  \n",
       "\n",
       "[100 rows x 19 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "7f1a42f4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MSE</th>\n",
       "      <th>RMSE</th>\n",
       "      <th>NRMSE</th>\n",
       "      <th>AVG_RMSE</th>\n",
       "      <th>MAE</th>\n",
       "      <th>AVG_MAE</th>\n",
       "      <th>SUM_FORECAST_ERRORS</th>\n",
       "      <th>AVG_FE</th>\n",
       "      <th>LEN_DF</th>\n",
       "      <th>FIRST_DAY_TRAIN_SET_STREAMS</th>\n",
       "      <th>LAST_DAY_TRAIN_SET_STREAMS</th>\n",
       "      <th>TEST_DATA_MIN_DATE_STREAMS</th>\n",
       "      <th>TEST_DATA_MAX_DATE_STREAMS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1954.564974</td>\n",
       "      <td>22.652358</td>\n",
       "      <td>0.432630</td>\n",
       "      <td>0.161803</td>\n",
       "      <td>58.546334</td>\n",
       "      <td>0.418188</td>\n",
       "      <td>-26.183940</td>\n",
       "      <td>-0.187028</td>\n",
       "      <td>140.0</td>\n",
       "      <td>266.220000</td>\n",
       "      <td>215.170000</td>\n",
       "      <td>226.500000</td>\n",
       "      <td>207.010000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>9071.587954</td>\n",
       "      <td>38.157511</td>\n",
       "      <td>0.160146</td>\n",
       "      <td>0.272554</td>\n",
       "      <td>204.902925</td>\n",
       "      <td>1.463592</td>\n",
       "      <td>191.468657</td>\n",
       "      <td>1.367633</td>\n",
       "      <td>0.0</td>\n",
       "      <td>710.818813</td>\n",
       "      <td>590.032683</td>\n",
       "      <td>627.256355</td>\n",
       "      <td>537.015217</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>21.159766</td>\n",
       "      <td>4.599975</td>\n",
       "      <td>0.117862</td>\n",
       "      <td>0.032857</td>\n",
       "      <td>0.102923</td>\n",
       "      <td>0.000735</td>\n",
       "      <td>-1391.398000</td>\n",
       "      <td>-9.938557</td>\n",
       "      <td>140.0</td>\n",
       "      <td>16.000000</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>16.000000</td>\n",
       "      <td>14.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>74.034648</td>\n",
       "      <td>8.602911</td>\n",
       "      <td>0.321815</td>\n",
       "      <td>0.061449</td>\n",
       "      <td>4.683371</td>\n",
       "      <td>0.033453</td>\n",
       "      <td>-46.959250</td>\n",
       "      <td>-0.335423</td>\n",
       "      <td>140.0</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>37.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>136.140824</td>\n",
       "      <td>11.665348</td>\n",
       "      <td>0.415362</td>\n",
       "      <td>0.083324</td>\n",
       "      <td>9.779630</td>\n",
       "      <td>0.069855</td>\n",
       "      <td>-18.344500</td>\n",
       "      <td>-0.131032</td>\n",
       "      <td>140.0</td>\n",
       "      <td>74.500000</td>\n",
       "      <td>56.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>58.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>376.947665</td>\n",
       "      <td>19.414059</td>\n",
       "      <td>0.498062</td>\n",
       "      <td>0.138672</td>\n",
       "      <td>27.177568</td>\n",
       "      <td>0.194125</td>\n",
       "      <td>20.847000</td>\n",
       "      <td>0.148907</td>\n",
       "      <td>140.0</td>\n",
       "      <td>142.000000</td>\n",
       "      <td>120.000000</td>\n",
       "      <td>117.500000</td>\n",
       "      <td>97.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>70338.410860</td>\n",
       "      <td>265.213896</td>\n",
       "      <td>0.897460</td>\n",
       "      <td>1.894385</td>\n",
       "      <td>1674.939998</td>\n",
       "      <td>11.963857</td>\n",
       "      <td>685.377000</td>\n",
       "      <td>4.895550</td>\n",
       "      <td>140.0</td>\n",
       "      <td>4948.000000</td>\n",
       "      <td>3604.000000</td>\n",
       "      <td>4043.000000</td>\n",
       "      <td>3212.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                MSE        RMSE       NRMSE    AVG_RMSE          MAE  \\\n",
       "count    100.000000  100.000000  100.000000  100.000000   100.000000   \n",
       "mean    1954.564974   22.652358    0.432630    0.161803    58.546334   \n",
       "std     9071.587954   38.157511    0.160146    0.272554   204.902925   \n",
       "min       21.159766    4.599975    0.117862    0.032857     0.102923   \n",
       "25%       74.034648    8.602911    0.321815    0.061449     4.683371   \n",
       "50%      136.140824   11.665348    0.415362    0.083324     9.779630   \n",
       "75%      376.947665   19.414059    0.498062    0.138672    27.177568   \n",
       "max    70338.410860  265.213896    0.897460    1.894385  1674.939998   \n",
       "\n",
       "          AVG_MAE  SUM_FORECAST_ERRORS      AVG_FE  LEN_DF  \\\n",
       "count  100.000000           100.000000  100.000000   100.0   \n",
       "mean     0.418188           -26.183940   -0.187028   140.0   \n",
       "std      1.463592           191.468657    1.367633     0.0   \n",
       "min      0.000735         -1391.398000   -9.938557   140.0   \n",
       "25%      0.033453           -46.959250   -0.335423   140.0   \n",
       "50%      0.069855           -18.344500   -0.131032   140.0   \n",
       "75%      0.194125            20.847000    0.148907   140.0   \n",
       "max     11.963857           685.377000    4.895550   140.0   \n",
       "\n",
       "       FIRST_DAY_TRAIN_SET_STREAMS  LAST_DAY_TRAIN_SET_STREAMS  \\\n",
       "count                   100.000000                  100.000000   \n",
       "mean                    266.220000                  215.170000   \n",
       "std                     710.818813                  590.032683   \n",
       "min                      16.000000                   14.000000   \n",
       "25%                      45.000000                   35.000000   \n",
       "50%                      74.500000                   56.000000   \n",
       "75%                     142.000000                  120.000000   \n",
       "max                    4948.000000                 3604.000000   \n",
       "\n",
       "       TEST_DATA_MIN_DATE_STREAMS  TEST_DATA_MAX_DATE_STREAMS  \n",
       "count                  100.000000                  100.000000  \n",
       "mean                   226.500000                  207.010000  \n",
       "std                    627.256355                  537.015217  \n",
       "min                     16.000000                   14.000000  \n",
       "25%                     35.000000                   37.000000  \n",
       "50%                     57.000000                   58.000000  \n",
       "75%                    117.500000                   97.000000  \n",
       "max                   4043.000000                 3212.000000  "
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "40bd9732",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_df.to_csv(\"sample_df.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3fc5737f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "conda_tensorflow2_p310",
   "language": "python",
   "name": "conda_tensorflow2_p310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
