{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pandas in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (2.2.3)\n", "Collecting openpyxl\n", " Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m250.9/250.9 KB\u001b[0m \u001b[31m388.0 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", "\u001b[?25hRequirement already satisfied: matplotlib in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (3.10.0)\n", "Requirement already satisfied: scikit-learn in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (1.6.1)\n", "Requirement already satisfied: joblib in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (1.4.2)\n", "Requirement already satisfied: pytz>=2020.1 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from pandas) (2025.1)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from pandas) (2.9.0.post0)\n", "Requirement already satisfied: numpy>=1.22.4 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from pandas) (1.26.4)\n", "Requirement already satisfied: tzdata>=2022.7 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from pandas) (2025.1)\n", "Collecting et-xmlfile\n", " Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)\n", "Requirement already satisfied: contourpy>=1.0.1 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (1.3.1)\n", "Requirement already satisfied: packaging>=20.0 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (24.2)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (3.2.1)\n", "Requirement already satisfied: pillow>=8 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (11.1.0)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (1.4.8)\n", "Requirement already satisfied: cycler>=0.10 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from matplotlib) (4.56.0)\n", "Requirement already satisfied: scipy>=1.6.0 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from scikit-learn) (1.15.2)\n", "Requirement already satisfied: threadpoolctl>=3.1.0 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from scikit-learn) (3.5.0)\n", "Requirement already satisfied: six>=1.5 in /home/ayush/Dynamic-Pricing-Online-Retail/venv/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", "Installing collected packages: et-xmlfile, openpyxl\n", "Successfully installed et-xmlfile-2.0.0 openpyxl-3.1.5\n" ] } ], "source": [ "!pip install pandas openpyxl matplotlib scikit-learn joblib" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd # type: ignore\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.read_excel(\"./data/Online Retail.xlsx\") " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# df =df.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate',\n", " 'UnitPrice', 'CustomerID', 'Country'],\n", " dtype='object')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "InvoiceNo 0\n", "StockCode 0\n", "Description 1454\n", "Quantity 0\n", "InvoiceDate 0\n", "UnitPrice 0\n", "CustomerID 135080\n", "Country 0\n", "dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 541909 entries, 0 to 541908\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 InvoiceNo 541909 non-null object \n", " 1 StockCode 541909 non-null object \n", " 2 Description 540455 non-null object \n", " 3 Quantity 541909 non-null int64 \n", " 4 InvoiceDate 541909 non-null datetime64[ns]\n", " 5 UnitPrice 541909 non-null float64 \n", " 6 CustomerID 406829 non-null float64 \n", " 7 Country 541909 non-null object \n", "dtypes: datetime64[ns](1), float64(2), int64(1), object(4)\n", "memory usage: 33.1+ MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Maximum values:\n", "Quantity 80995.0\n", "UnitPrice 38970.0\n", "dtype: float64\n", "\n", "Minimum values:\n", "Quantity -80995.00\n", "UnitPrice -11062.06\n", "dtype: float64\n" ] } ], "source": [ "columns_to_check = ['Quantity', 'UnitPrice']\n", "\n", "max_values = df[columns_to_check].max()\n", "min_values = df[columns_to_check].min()\n", "\n", "print(\"Maximum values:\")\n", "print(max_values)\n", "\n", "print(\"\\nMinimum values:\")\n", "print(min_values)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df= df[(df['Quantity'] >= 0) & (df['UnitPrice'] >= 0)]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Invalid dates in 'InvoiceDate' column:\n", "Empty DataFrame\n", "Columns: [InvoiceNo, StockCode, Description, Quantity, InvoiceDate, UnitPrice, CustomerID, Country]\n", "Index: []\n" ] } ], "source": [ "invalid_dates = df[pd.isna(df['InvoiceDate'])]\n", "print(\"\\nInvalid dates in 'InvoiceDate' column:\")\n", "print(invalid_dates)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "df['hour'] = df['InvoiceDate'].dt.hour\n", "\n", "df['weekday'] = df['InvoiceDate'].dt.weekday\n", "\n", "df['month'] = df['InvoiceDate'].dt.month\n", "\n", "df['week'] = df['InvoiceDate'].dt.isocalendar().week" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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YejTTz/V119/re7du1vdmlPIzs6WJFWvXl2SlJqaqvz8fLu/702bNlXdunVv2L/vBLJy5LvvvtOCBQvUqFEjbdy4UQ8//LAeffRRLVu2zOrWnNaECRM0YMAANW3aVG5ubmrbtq3Gjh2rQYMGWd2a08vIyJAk+fn52S338/Mzx2CtCxcuaPz48Ro4cKC8vb2tbsdpvfDCC6pQoYIeffRRq1txeidPntSvv/6q559/Xj169NDHH3+su+++W3379tWWLVusbs9pvfLKKwoODladOnXk7u6uHj16aP78+eratavVrZV7hYWFGjt2rDp16qQWLVpI+u3vu7u7e7H/kXcj/32vYHUDKDuFhYVq3769nnvuOUlS27ZttW/fPi1cuFBRUVEWd+ec1qxZo5UrV2rVqlVq3ry5du/erbFjxyogIIBzAlxBfn6+7rvvPhmGoQULFljdjtNKTU3VnDlztGvXLtlsNqvbcXqFhYWSpN69eys2NlaS1KZNG33++edauHChbr31Vivbc1qvvPKKvvjiC33wwQeqV6+etm7dqujoaAUEBNhdpUHZi46O1r59+/Tvf//b6lb+FK6QlSO1a9dWcHCw3bJmzZox85KFxo0bZ14la9mypQYPHqzY2FhNnz7d6tacnr+/vyQVm3UpMzPTHIM1isLY0aNHlZSUxNUxC3322Wc6efKk6tatqwoVKqhChQo6evSoHnvsMdWvX9/q9pxOzZo1VaFCBf7W30DOnz+vJ598UrNmzVKvXr3UqlUrxcTEqH///nrppZesbq9ci4mJ0fr16/Xpp5+qTp065nJ/f3/l5eUpKyvLrv5G/vtOICtHOnXqVGzaz6+//lr16tWzqCOcO3dOLi72v2aurq7m/+WEdYKCguTv76/k5GRzWU5OjrZv366wsDALO3NuRWHs8OHD+uSTT1SjRg2rW3JqgwcP1p49e7R7927zFRAQoHHjxmnjxo1Wt+d03N3d1aFDB/7W30Dy8/OVn5/P3/rryDAMxcTE6L333tOmTZsUFBRkNx4SEiI3Nze7v+9paWlKT0+/Yf++85XFciQ2Nla33HKLnnvuOd13333asWOHFi1apEWLFlndmtPq1auXnn32WdWtW1fNmzfXV199pVmzZmn48OFWt+YUfv31V33zzTfm+yNHjmj37t2qXr266tatq7Fjx+qf//ynGjVqpKCgIE2e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Pl5g27ZtuuWWW/TII4+YNSVdeXvwwQc1cOBA1alTRw0aNCh2hRIAUHYIZACAG9pjjz2mDh066JlnnlH//v2VkpKiefPm6dVXXzVr/v73v2vevHkKCwtTQUGBxo8fX+xKVGmEh4erZcuWGjRokGbPnq2LFy/qkUce0a233nrVrzteytfXV15eXkpMTFSdOnXk6ekpHx+fq36ucePGGjRokIYMGaKZM2eqbdu2OnXqlJKTk9WqVStFRkZe9rO//PKLMjIylJ+fryNHjmjFihV6/fXXNX36dPMqZKNGjbR8+XJt3LhRQUFBevPNN7Vz507zClqRiIgIeXt765///KemTZtW6v0GADiOe8gAADe0du3aac2aNXrrrbfUokULxcfHa9q0aXYTesycOVOBgYHq0qWL7r//fj3++ON/6PlgNptN77//vqpVq6auXbsqPDxcN910k1avXu3QeipUqKC5c+fqX//6lwICAtS7d+9Sf3bJkiUaMmSIHnvsMTVp0kR9+vTRzp07Vbdu3St+Lj4+XrVr11bDhg01ePBgZWdnKzk5WePHjzdr/ud//kd9+/ZV//79FRoaqp9//tnualkRFxcXDR06VAUFBRoyZEjpdxwA4DCb8fsv3QMAAKc3YsQInTp1Sh988IHVrQBAucZXFgEAgCk7O1t79+7VqlWrCGMAcB0QyAAAgKl3797asWOHHnroId1xxx1WtwMA5R5fWQQAAAAAizCpBwAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgkf8DHxiUUNb6zbIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2wAAAHWCAYAAAALogprAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU15JREFUeJzt3X98zfX///H72WYbYxuyzTKzSH7/FgshY0nelAqtLC2VptiK6Af6oaE3SYk3Cr0j0jsKmd+shvnVyu8iRbFNfmw2DNvr+4fvXh/HNjaOziu7XS+Xc7k4z9fzvJ6P1zk7tfuer9fzZTMMwxAAAAAAwHJcnF0AAAAAAKBgBDYAAAAAsCgCGwAAAABYFIENAAAAACyKwAYAAAAAFkVgAwAAAACLIrABAAAAgEUR2AAAAADAoghsAAAAAGBRBDYAuEHatWundu3aObuMq7LZbBo5cuQNH2ft2rWy2Wxau3at2dauXTvVq1fvho8tSb/99ptsNptmzpz5t4x3qb/zOP/p3n33Xd12221ydXVVo0aNiv36vJ+zL7/80vHFWVhJPW6gJCCwAcD/t337dj300EMKDg6Wp6enbr31VnXs2FEffPCBs0srsmrVqslms8lms8nFxUW+vr6qX7++nn76aSUlJTlsnDlz5mjChAkO258jWbm2Gy3vs7fZbHJzc1OFChXUtGlTDRw4ULt27XJ2eVe1fPlyDRkyRK1atdKMGTP0zjvvFNrXmZ9zWlqabDabBg4cmG/bwIEDZbPZNGLEiHzb+vTpo1KlSun06dN/R5kAbhJuzi4AAKxg/fr1at++vapWrap+/fopICBAhw4d0saNG/X+++/r+eefd3aJRdaoUSO9+OKLkqRTp05p9+7dmj9/vqZNm6aYmBiNHz/erv+ZM2fk5la8/x3MmTNHO3bs0KBBg4r8mrvvvltnzpyRu7t7scYqrsJqCw4O1pkzZ1SqVKkbOr6zdezYUX369JFhGEpPT9ePP/6oWbNm6aOPPtKYMWMUGxvr7BILtXr1arm4uOjjjz++6s/JtfwMOoqfn59uv/12ff/99/m2JSYmys3NTYmJiQVua9y4scqUKfN3lAngJkFgAwBJo0aNko+PjzZv3ixfX1+7bWlpac4p6hrdeuuteuyxx+zaxowZo0cffVTvvfeebr/9dvXv39/c5unpeUPrOXv2rNzd3eXi4nLDx7oSm83m1PH/LjVr1sz3+Y8ePVpdu3bViy++qFq1aum+++5zUnVXlpaWptKlS9/wUO8IrVu31qeffqrMzEyVLVtWkpSVlaUff/xRjzzyiL755hvl5OTI1dVVknTkyBH9+uuv6tatmzPLBvAPxCmRACBp//79qlu3br6wJl38a/qlZsyYoXvuuUd+fn7y8PBQnTp1NHny5CKNk52drREjRqhGjRry8PBQUFCQhgwZouzsbLt+K1asUOvWreXr66uyZcvqjjvu0CuvvHLNx1e6dGn997//VYUKFTRq1CgZhmFuu/watlOnTmnQoEGqVq2aPDw85Ofnp44dO2rbtm2SLl6PtWTJEv3+++/m6XfVqlWT9H/X0cydO1evvfaabr31VpUpU0YZGRkFXsOWZ+vWrbrrrrtUunRphYSEaMqUKXbbZ86cKZvNpt9++82u/fJ9Xqm2wq5hW716tdq0aSMvLy/5+vqqW7du2r17t12fkSNHymazad++fXriiSfk6+srHx8f9e3bt1int13pODMzM+Xl5VXgaXZ//PGHXF1dFRcXV+SxLlWxYkXNnTtXbm5uGjVqlNl+7tw5DR8+XE2bNpWPj4+8vLzUpk0brVmzxuxjGIaqVatWYNA4e/asfHx89Mwzz1xx/AsXLuitt95S9erV5eHhoWrVqumVV16x+7m32WyaMWOGsrKyzM+usOsNr/Q558nNzdWoUaNUpUoVeXp6qkOHDtq3b1++fSUlJenee++Vj4+PypQpo7Zt2xY4O3a51q1bKycnRxs3brTb14ULF/TSSy8pMzNTycnJ5ra8fbZu3brYY//555968skn5e/vLw8PD9WtW1effPLJVWvMzs7W/fffLx8fH61fv/6q/QFYEzNsAKCLp8tt2LBBO3bsuOriEJMnT1bdunX1r3/9S25ublq0aJGee+455ebmKjo6utDX5ebm6l//+pe+//57Pf3006pdu7a2b9+u9957Tz///LMWLlwoSdq5c6fuv/9+NWjQQG+++aY8PDy0b9++Iv0SeSVly5bVAw88oI8//li7du1S3bp1C+z37LPP6ssvv9SAAQNUp04dHTt2TN9//712796tJk2a6NVXX1V6err++OMPvffee+a+L/XWW2/J3d1dL730krKzs684Y3LixAndd999euSRR9S7d2998cUX6t+/v9zd3fXkk08W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J574+wvCdUtLS1OfPn105MgR+fj4qEGDBlq2bJk6duzo7NIAXOKPP/5Q7969dezYMVWqVEmtW7fWxo0bValSJWeXhmvUvHlzLViwQMOGDdObb76pkJAQTZgwQREREc4urUi4DxsAAAAAWBTXsAEAAACARRHYAAAAAMCiCGwAAAAAYFEENgAAAACwKAIbAAAAAFgUgQ0AAAAALIrABgAAAAAWRWADAAAAAIsisAEAcA0SExNVv359lSpVSt27dy/y62bOnClfX98bVtffrV27dho0aJCzywCAmxaBDQBgOU888YRsNptsNptKlSolf39/dezYUZ988olyc3OdXZ4kKTY2Vo0aNdKBAwc0c+bMAvtUq1ZNEyZMuOG1TJkyReXKldOFCxfMtszMTJUqVUrt2rWz67t27VrZbDbt37//htcFALh+BDYAgCXde++9OnLkiH777TctXbpU7du318CBA3X//ffbBRNn2b9/v+655x5VqVLF6TNm7du3V2ZmprZs2WK2fffddwoICFBSUpLOnj1rtq9Zs0ZVq1ZV9erVnVEqAKCYCGwAAEvy8PBQQECAbr31VjVp0kSvvPKKvv76ay1dutRuRmv8+PGqX7++vLy8FBQUpOeee06ZmZmSpKysLHl7e+vLL7+02/fChQvl5eWlU6dOFTh2dna2XnjhBfn5+cnT01OtW7fW5s2bJUm//fabbDabjh07pieffFI2m63AGbZ27drp999/V0xMjDlbeKlly5apdu3aKlu2rBlOLzV9+nTVrl1bnp6eqlWrlj766KNC36s77rhDlStX1tq1a822tWvXqlu3bgoJCdHGjRvt2tu3by9Jys3NVVxcnEJCQlS6dGk1bNgw33u1Y8cOde7cWWXLlpW/v78ef/xx/fXXX4XWsmTJEvn4+Gj27NmF9gEAFB2BDQDwj3HPPfeoYcOG+uqrr8w2FxcXTZw4UTt37tSsWbO0evVqDRkyRJLk5eWlXr16acaMGXb7mTFjhh566CGVK1euwHGGDBmi//3vf5o1a5a2bdumGjVqKDw8XMePH1dQUJCOHDkib29vTZgwQUeOHFHPnj3z7eOrr75SlSpV9Oabb+rIkSN2gez06dP697//rf/+979KSEjQwYMH9dJLL5nbZ8+ereHDh2vUqFHavXu33nnnHb3++uuaNWtWoe9N+/bttWbNGvP5mjVr1K5dO7Vt29ZsP3PmjJKSkszAFhcXp08//VRTpkzRzp07FRMTo8cee0zr1q2TJJ08eVL33HOPGjdurC1btig+Pl6pqal65JFHCqxhzpw56t27t2bPnq2IiIhCawUAFIMBAIDFREZGGt26dStwW8+ePY3atWsX+tr58+cbFStWNJ8nJSUZrq6uxuHDhw3DMIzU1FTDzc3NWLt2bYGvz8zMNEqVKmXMnj3bbDt37pwRGBhojB071mzz8fExZsyYccXjCA4ONt577z27thkzZhiSjH379pltkyZNMvz9/c3n1atXN+bMmWP3urfeessIDQ0tdKxp06YZXl5exvnz542MjAzDzc3NSEtLM+bMmWPcfffdhmEYxqpVqwxJxu+//26cPXvWKFOmjLF+/Xq7/URFRRm9e/c2x+zUqZPd9kOHDhmSjL179xqGYRht27Y1Bg4caHz44YeGj49Poe8rAODauDk5LwIAUCyGYdidXrhy5UrFxcVpz549ysjI0IULF3T27FmdPn1aZcqU0Z133qm6detq1qxZGjp0qD777DMFBwfr7rvvLnD/+/fv1/nz59WqVSuzrVSpUrrzzju1e/duhxxDmTJl7K4hq1y5stLS0iRdPI1z//79ioqKUr9+/cw+Fy5ckI+PT6H7bNeunbKysrR582adOHFCNWvWVKVKldS2bVv17dtXZ8+e1dq1a3XbbbepatWq2rlzp06fPq2OHTva7efcuXNq3LixJOnHH3/UmjVrVLZs2Xzj7d+/XzVr1pQkffnll0pLS1NiYqKaN29+7W8MACAfAhsA4B9l9+7dCgkJkXTxerL7779f/fv316hRo1ShQgV9//33ioqK0rlz51SmTBlJ0lNPPaVJkyZp6NChmjFjhvr27ZvvmrK/U6lSpeye22w2GYYhSeb1d9OmTVOLFi3s+rm6uha6zxo1aqhKlSpas2aNTpw4obZt20qSAgMDFRQUpPXr12vNmjW655577MZZsmSJbr31Vrt9eXh4mH26du2qMWPG5BuvcuXK5r8bN26sbdu26ZNPPlGzZs2c+t4CwM2GwAYA+MdYvXq1tm/frpiYGEnS1q1blZubq3HjxsnF5eJl2V988UW+1z322GMaMmSIJk6cqF27dikyMrLQMapXry53d3clJiYqODhYknT+/Hlt3ry52Pcbc3d3V05OTrFe4+/vr8DAQP3666/Fvg6sffv2Wrt2rU6cOKHBgweb7XfffbeWLl2qTZs2qX///pKkOnXqyMPDQwcPHjTD3eWaNGmi//3vf6pWrZrc3Ar/laF69eoaN26c2rVrJ1dXV3344YfFqhsAUDgCGwDAkrKzs5WSkqKcnBylpqYqPj5ecXFxuv/++9WnTx9JF2eVzp8/rw8++EBdu3ZVYmKipkyZkm9f5cuX14MPPqjBgwerU6dOqlKlSqHjenl5qX///ho8eLAqVKigqlWrauzYsTp9+rSioqKKdQzVqlVTQkKCevXqJQ8PD91yyy1Fet0bb7yhF154QT4+Prr33nuVnZ2tLVu26MSJE4qNjS30de3bt1d0dLTOnz9vF8Latm2rAQMG6Ny5c+aCI+XKldNLL72kmJgY5ebmqnXr1kpPT1diYqK8vb0VGRmp6OhoTZs2Tb1799aQIUNUoUIF7du3T3PnztX06dPtZvxq1qxpLnTi5ub2t9x/DgBKAlaJBABYUnx8vCpXrqxq1arp3nvv1Zo1azRx4kR9/fXXZlBo2LChxo8frzFjxqhevXqaPXu24uLiCtxf3mmSTz755FXHHj16tHr06KHHH39cTZo00b59+7Rs2TKVL1++WMfw5ptv6rffflP16tVVqVKlIr/uqaee0vTp0zVjxgzVr19fbdu21cyZM81TQQvTvn17nTlzRjVq1JC/v7/Z3rZtW506dcpc/j/PW2+9pddff11xcXGqXbu27r33Xi1ZssQcJzAwUImJicrJyVGnTp1Uv359DRo0SL6+vuaM5qXuuOMOrV69Wp9//rlefPHFIh8vAKBwNiPvpHkAAG5i//3vfxUTE6PDhw/L3d3d2eUAAFAknBIJALipnT59WkeOHNHo0aP1zDPPENYAAP8onBIJALipjR07VrVq1VJAQICGDRvm7HIAACgWTokEAAAAAItihg0AAAAALIrABgAAAAAWRWADAAAAAIsisAEAAACARRHYAAAAAMCiCGwAAAAAYFEENgAAAACwKAIbAAAAAFjU/wOwI++qqoxheQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAHWCAYAAAAYdUqfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU8VJREFUeJzt3X98TvX/x/HntbEfxjbDNsuwUjE/M5qln1/L0lJCIWmhRCO2wqRGPkn0Vcivj36YPiH0kU8s0xrxiYWmFUK/VpS28cEuho3tfP/os/N1NbRL2w7b4367Xbeb67xf1/u8znX5fvP8nHPex2YYhiEAAAAAQKVzsboBAAAAAKiuCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZABQxd1+++26/fbbrW7jT9lsNk2cOLHC9/Ppp5/KZrPp008/NbfdfvvtatWqVYXvW5J++ukn2Ww2JSUlVcr+zlWZx3m5e/TRR1W7dm2r2wAAAhkAXG527typ3r17q0mTJvLw8NBVV12lO++8U6+//rrVrZVZ06ZNZbPZZLPZ5OLiIl9fX7Vu3VpDhgzR1q1by20/S5Ys0YwZM8ptvvJ0OfdW0Up++8cee+y84+PHjzdrDh8+XGF9nDx5UhMnTnQI3wBwualhdQMAgP+3ZcsW3XHHHWrcuLEef/xxBQYG6sCBA/r88881c+ZMjRgxwuoWy6xdu3Z6+umnJUnHjx/Xnj17tGLFCr3xxhuKi4vTq6++6lB/6tQp1ajh3H+WlixZol27dmnUqFFl/sytt96qU6dOyc3Nzal9OetCvTVp0kSnTp1SzZo1K3T/VvPw8NA///lPzZ07t9R3vXTpUnl4eOj06dMV2sPJkyf1wgsvSNIVcZYYQPVEIAOAy8jkyZPl4+Oj7du3y9fX12EsNzfXmqYu0VVXXaWHH37YYdvUqVP10EMP6bXXXtO1116rYcOGmWMeHh4V2s/p06fl5uYmFxeXCt/XxdhsNkv3X1nuuusuffjhh1q7dq3uu+8+c/uWLVuUlZWlXr166Z///KeFHQLA5YFLFgHgMvLDDz+oZcuWpcKYJPn7+zu8X7hwof7nf/5H/v7+cnd3V2hoqObNm1em/RQUFGjChAlq1qyZ3N3dFRwcrDFjxqigoMChLjU1VTfffLN8fX1Vu3ZtXX/99Xr22Wcv+fg8PT31j3/8Q35+fpo8ebIMwzDH/ngP2fHjxzVq1Cg1bdpU7u7u8vf315133qkdO3ZI+v2MR3Jysn7++Wfz8remTZtK+v/7xN577z0999xzuuqqq1SrVi3Z7fbz3kNWIiMjQzfddJM8PT0VEhKi+fPnO4wnJSXJZrPpp59+ctj+xzkv1tuF7iFbv369brnlFnl5ecnX11f33Xef9uzZ41AzceJE2Ww2ff/993r00Ufl6+srHx8fDRw4UCdPnizbj/Anx3nixAl5eXlp5MiRpT73yy+/yNXVVVOmTPnTfVx11VW69dZbtWTJEoftixcvVuvWrS94L9uKFSsUFhYmT09P1a9fXw8//LB+/fVXh5qS+79+/fVX9ejRQ7Vr11aDBg30zDPPqKioSNLv33ODBg0kSS+88IL5O/zxPsWLzQEAlYEzZABwGWnSpInS09O1a9euP118Yd68eWrZsqXuvfde1ahRQ6tXr9aTTz6p4uJixcbGXvBzxcXFuvfee/XZZ59pyJAhatGihXbu3KnXXntN3377rVatWiVJ2r17t+655x61adNGkyZNkru7u77//ntt3rz5Lx1j7dq1df/99+utt97SN998o5YtW563bujQoXr//fc1fPhwhYaG6j//+Y8+++wz7dmzR+3bt9f48eOVl5enX375Ra+99po597n+9re/yc3NTc8884wKCgouepni0aNHdffdd+vBBx9Uv379tHz5cg0bNkxubm4aNGiQU8dYlt7O9cknn6hbt266+uqrNXHiRJ06dUqvv/66OnfurB07dphhrsSDDz6okJAQTZkyRTt27NCbb74pf39/TZ069U97+7PjLPl9li1bpldffVWurq7mZ5cuXSrDMNS/f/8yfQ8PPfSQRo4cqRMnTqh27do6e/asVqxYofj4+PNerpiUlKSBAweqY8eOmjJlinJycjRz5kxt3rxZX375pcP/UFFUVKSoqCiFh4frf//3f/XJJ59o+vTpuuaaazRs2DA1aNBA8+bN07Bhw3T//ferZ8+ekqQ2bdqUeQ4AqBQGAOCy8fHHHxuurq6Gq6urERERYYwZM8ZYt26dUVhYWKr25MmTpbZFRUUZV199tcO22267zbjtttvM9//4xz8MFxcX49///rdD3fz58w1JxubNmw3DMIzXXnvNkGQcOnTI6eNo0qSJER0dfcHxkrn/9a9/mdskGRMmTDDf+/j4GLGxsRfdT3R0tNGkSZNS2zds2GBIMq6++upS31PJ2IYNG8xtt912myHJmD59urmtoKDAaNeuneHv729+/wsXLjQkGVlZWX8654V6y8rKMiQZCxcuNLeV7Oc///mPue2rr74yXFxcjEceecTcNmHCBEOSMWjQIIc577//fqNevXql9vVHZT3OdevWGZKMtWvXOny+TZs2Dn+XLkSSERsbaxw5csRwc3Mz/vGPfxiGYRjJycmGzWYzfvrpJ/NYSv5+FRYWGv7+/karVq2MU6dOmXOtWbPGkGQkJiaa22JiYgxJxqRJkxz2e8MNNxhhYWHm+0OHDpX6e+XsHABQ0bhkEQAuI3feeafS09N177336quvvtK0adMUFRWlq666Sh9++KFDraenp/nnvLw8HT58WLfddpt+/PFH5eXlXXAfK1asUIsWLdS8eXMdPnzYfP3P//yPJGnDhg2SZJ6N+Ne//qXi4uJyPc6Ss0XHjx+/YI2vr6+2bt2qgwcPXvJ+YmJiHL6ni6lRo4aeeOIJ872bm5ueeOIJ5ebmKiMj45J7+DO//fabMjMz9eijj8rPz8/c3qZNG91555366KOPSn1m6NChDu9vueUW/ec//5Hdbv/T/ZXlOCMjIxUUFKTFixebdbt27dLXX39d6r7Ai6lbt67uuusuLV26VNLvC53cdNNNatKkSanaL774Qrm5uXryyScd7rGLjo5W8+bNlZycXOoz5/sefvzxxzL3V15zAMBfQSADgMtMx44dtXLlSh09elTbtm3TuHHjdPz4cfXu3VvffPONWbd582ZFRkaa9xw1aNDAvL/rYoHsu+++0+7du9WgQQOH13XXXSfp/xcP6dOnjzp37qzHHntMAQEB6tu3r5YvX14u4ezEiROSpDp16lywZtq0adq1a5eCg4N14403auLEiU7/QzkkJKTMtUFBQfLy8nLYVvKd/PGesfL0888/S5Kuv/76UmMtWrTQ4cOHlZ+f77C9cePGDu/r1q0r6ffLEf9MWY7TxcVF/fv316pVq8x70xYvXiwPDw898MADZTiq//fQQw8pNTVV+/fv16pVq/TQQw+dt+5i30Pz5s3N8RIeHh7mPWIl6tatW6bvoDznAIC/ikAGAJcpNzc3dezYUS+99JLmzZunM2fOaMWKFZJ+X/yjS5cuOnz4sF599VUlJycrNTVVcXFxknTR0FRcXKzWrVsrNTX1vK8nn3xS0u9n4DZt2qRPPvlEAwYM0Ndff60+ffrozjvv/MuLHuzatUuS1KxZswvWPPjgg/rxxx/1+uuvKygoSK+88opatmyptWvXlnk/ZT07VlY2m+282yt7EYhz7+s6l3HOIil/1SOPPKITJ05o1apVMgxDS5Ys0T333CMfHx+n5rn33nvl7u6umJgYFRQU6MEHHyyX/i70HVT2HADwV7GoBwBcATp06CDp98vbJGn16tUqKCjQhx9+6HC2pORyw4u55ppr9NVXX6lLly4XDBglXFxc1KVLF3Xp0kWvvvqqXnrpJY0fP14bNmxQZGTkJR3LiRMn9MEHHyg4OFgtWrS4aG3Dhg315JNP6sknn1Rubq7at2+vyZMnq1u3bpIuHJAuxcGDB5Wfn+9w9ujbb7+VJHNRjZIzUceOHXP47B/P3jjTW8nle/v27Ss1tnfvXtWvX7/UGa2/oizHKUmtWrXSDTfcoMWLF6tRo0bav3//JT2c3NPTUz169NC7776rbt26qX79+uetO/d7KLl8tsS+ffvOe5njnynPvx8AUFE4QwYAl5ENGzac9yxHyX1EJZdzlfwv++fW5uXlaeHChX+6jwcffFC//vqr3njjjVJjp06dMi+PO3LkSKnxdu3aSVKp5fHL6tSpUxowYICOHDmi8ePHX/SM0x8vu/T391dQUJDDvr28vC56eaYzzp49q7///e/m+8LCQv39739XgwYNFBYWJun3MCtJmzZtcuh1wYIFpeYra28NGzZUu3bttGjRIoegt2vXLn388ce6++67L/WQzqssx1liwIAB+vjjjzVjxgzVq1fPDMLOeuaZZzRhwgQ9//zzF6zp0KGD/P39NX/+fIffeO3atdqzZ4+io6Od3m+tWrUklQ7QAHA54QwZAFxGRowYoZMnT+r+++9X8+bNVVhYqC1btmjZsmVq2rSpBg4cKEnq2rWr3Nzc1L17dz3xxBM6ceKE3njjDfn7+5tn0S5kwIABWr58uYYOHaoNGzaoc+fOKioq0t69e7V8+XKtW7dOHTp00KRJk7Rp0yZFR0erSZMmys3N1dy5c9WoUSPdfPPNf3osv/76q959911Jv58V++abb7RixQplZ2fr6aefdlhY4o+OHz+uRo0aqXfv3mrbtq1q166tTz75RNu3b9f06dPNurCwMC1btkzx8fHq2LGjateure7du5flqy4lKChIU6dO1U8//aTrrrtOy5YtU2ZmphYsWKCaNWtKklq2bKlOnTpp3LhxOnLkiPz8/PTee+/p7NmzpeZzprdXXnlF3bp1U0REhAYPHmwue+/j41PquVl/VVmOs8RDDz2kMWPG6IMPPtCwYcNKjZdV27Zt1bZt24vW1KxZU1OnTtXAgQN12223qV+/fuay902bNjUvx3WGp6enQkNDtWzZMl133XXy8/NTq1at/vSREgBQqaxd5BEAcK61a9cagwYNMpo3b27Url3bcHNzM5o1a2aMGDHCyMnJcaj98MMPjTZt2hgeHh5G06ZNjalTpxpvv/12qWXZ/7jsvWH8vsT41KlTjZYtWxru7u5G3bp1jbCwMOOFF14w8vLyDMMwjLS0NOO+++4zgoKCDDc3NyMoKMjo16+f8e233/7pcTRp0sSQZEgybDab4e3tbbRs2dJ4/PHHja1bt573MzpnefKCggJj9OjRRtu2bY06deoYXl5eRtu2bY25c+c6fObEiRPGQw89ZPj6+hqSzGXmS5ahX7FiRan9XGjZ+5YtWxpffPGFERERYXh4eBhNmjQxZs+eXerzP/zwgxEZGWm4u7sbAQEBxrPPPmukpqaWmvNCvZ1v2XvDMIxPPvnE6Ny5s+Hp6Wl4e3sb3bt3N7755huHmj8uFV/iQsvx/5Ezx1ni7rvvNiQZW7Zsuejc59J/l72/mAsdy7Jly4wbbrjBcHd3N/z8/Iz+/fsbv/zyi0NNTEyM4eXldcE5z7VlyxYjLCzMcHNzc/g75swcAFCRbIZRjncAAwCAKuX+++/Xzp079f3331vdCgBUSdxDBgAAzuu3335TcnKyBgwYYHUrAFBlcQ8ZAABwkJWVpc2bN+vNN99UzZo1L3q/HwDgr+EMGQAAcLBx40YNGDBAWVlZWrRokQIDA61uCQCqLO4hAwAAAACLcIYMAAAAACxCIAMAAAAAi7CoRzkpLi7WwYMHVadOHdlsNqvbAQAAAGARwzB0/PhxBQUFycXl4ufACGTl5ODBgwoODra6DQAAAACXiQMHDqhRo0YXrSGQlZM6depI+v1L9/b2trgbAAAAAFax2+0KDg42M8LFEMjKScllit7e3gQyAAAAAGW6lYlFPQAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALFLD6gYAAAAAKyztvtTqFipFv9X9rG4BF8EZMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLWBrIioqK9PzzzyskJESenp665ppr9Le//U2GYZg1hmEoMTFRDRs2lKenpyIjI/Xdd985zHPkyBH1799f3t7e8vX11eDBg3XixAmHmq+//lq33HKLPDw8FBwcrGnTppXqZ8WKFWrevLk8PDzUunVrffTRRxVz4AAAAAAgiwPZ1KlTNW/ePM2ePVt79uzR1KlTNW3aNL3++utmzbRp0zRr1izNnz9fW7dulZeXl6KionT69Gmzpn///tq9e7dSU1O1Zs0abdq0SUOGDDHH7Xa7unbtqiZNmigjI0OvvPKKJk6cqAULFpg1W7ZsUb9+/TR48GB9+eWX6tGjh3r06KFdu3ZVzpcBAAAAoNqxGeeejqpk99xzjwICAvTWW2+Z23r16iVPT0+9++67MgxDQUFBevrpp/XMM89IkvLy8hQQEKCkpCT17dtXe/bsUWhoqLZv364OHTpIklJSUnT33Xfrl19+UVBQkObNm6fx48crOztbbm5ukqSEhAStWrVKe/fulST16dNH+fn5WrNmjdlLp06d1K5dO82fP79U7wUFBSooKDDf2+12BQcHKy8vT97e3uX/ZQEAAKBcLe2+1OoWKkW/1f2sbqHasdvt8vHxKVM2sPQM2U033aS0tDR9++23kqSvvvpKn332mbp16yZJysrKUnZ2tiIjI83P+Pj4KDw8XOnp6ZKk9PR0+fr6mmFMkiIjI+Xi4qKtW7eaNbfeeqsZxiQpKipK+/bt09GjR82ac/dTUlOynz+aMmWKfHx8zFdwcPBf/ToAAAAAVDM1rNx5QkKC7Ha7mjdvLldXVxUVFWny5Mnq37+/JCk7O1uSFBAQ4PC5gIAAcyw7O1v+/v4O4zVq1JCfn59DTUhISKk5Ssbq1q2r7Ozsi+7nj8aNG6f4+HjzfckZMgAAAAAoK0sD2fLly7V48WItWbJELVu2VGZmpkaNGqWgoCDFxMRY2dqfcnd3l7u7u9VtAAAAALiCWRrIRo8erYSEBPXt21eS1Lp1a/3888+aMmWKYmJiFBgYKEnKyclRw4YNzc/l5OSoXbt2kqTAwEDl5uY6zHv27FkdOXLE/HxgYKBycnIcakre/1lNyTgAAAAAlDdL7yE7efKkXFwcW3B1dVVxcbEkKSQkRIGBgUpLSzPH7Xa7tm7dqoiICElSRESEjh07poyMDLNm/fr1Ki4uVnh4uFmzadMmnTlzxqxJTU3V9ddfr7p165o15+6npKZkPwAAAABQ3iwNZN27d9fkyZOVnJysn376SR988IFeffVV3X///ZIkm82mUaNG6cUXX9SHH36onTt36pFHHlFQUJB69OghSWrRooXuuusuPf7449q2bZs2b96s4cOHq2/fvgoKCpIkPfTQQ3Jzc9PgwYO1e/duLVu2TDNnznS4B2zkyJFKSUnR9OnTtXfvXk2cOFFffPGFhg8fXunfCwAAAIDqwdJLFl9//XU9//zzevLJJ5Wbm6ugoCA98cQTSkxMNGvGjBmj/Px8DRkyRMeOHdPNN9+slJQUeXh4mDWLFy/W8OHD1aVLF7m4uKhXr16aNWuWOe7j46OPP/5YsbGxCgsLU/369ZWYmOjwrLKbbrpJS5Ys0XPPPadnn31W1157rVatWqVWrVpVzpcBAAAAoNqx9DlkVYkzzxoAAACA9XgOGSrKFfMcMgAAAACozghkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFrE0kDVt2lQ2m63UKzY2VpJ0+vRpxcbGql69eqpdu7Z69eqlnJwchzn279+v6Oho1apVS/7+/ho9erTOnj3rUPPpp5+qffv2cnd3V7NmzZSUlFSqlzlz5qhp06by8PBQeHi4tm3bVmHHDQAAAACSxYFs+/bt+u2338xXamqqJOmBBx6QJMXFxWn16tVasWKFNm7cqIMHD6pnz57m54uKihQdHa3CwkJt2bJFixYtUlJSkhITE82arKwsRUdH64477lBmZqZGjRqlxx57TOvWrTNrli1bpvj4eE2YMEE7duxQ27ZtFRUVpdzc3Er6JgAAAABURzbDMAyrmygxatQorVmzRt99953sdrsaNGigJUuWqHfv3pKkvXv3qkWLFkpPT1enTp20du1a3XPPPTp48KACAgIkSfPnz9fYsWN16NAhubm5aezYsUpOTtauXbvM/fTt21fHjh1TSkqKJCk8PFwdO3bU7NmzJUnFxcUKDg7WiBEjlJCQUKbe7Xa7fHx8lJeXJ29v7/L8WgAAAFABlnZfanULlaLf6n5Wt1DtOJMNLpt7yAoLC/Xuu+9q0KBBstlsysjI0JkzZxQZGWnWNG/eXI0bN1Z6erokKT09Xa1btzbDmCRFRUXJbrdr9+7dZs25c5TUlMxRWFiojIwMhxoXFxdFRkaaNedTUFAgu93u8AIAAAAAZ1w2gWzVqlU6duyYHn30UUlSdna23Nzc5Ovr61AXEBCg7Oxss+bcMFYyXjJ2sRq73a5Tp07p8OHDKioqOm9NyRznM2XKFPn4+Jiv4OBgp48ZAAAAQPV22QSyt956S926dVNQUJDVrZTJuHHjlJeXZ74OHDhgdUsAAAAArjA1rG5Akn7++Wd98sknWrlypbktMDBQhYWFOnbsmMNZspycHAUGBpo1f1wNsWQVxnNr/rgyY05Ojry9veXp6SlXV1e5urqet6ZkjvNxd3eXu7u78wcLAAAAAP91WZwhW7hwofz9/RUdHW1uCwsLU82aNZWWlmZu27dvn/bv36+IiAhJUkREhHbu3OmwGmJqaqq8vb0VGhpq1pw7R0lNyRxubm4KCwtzqCkuLlZaWppZAwAAAAAVwfIzZMXFxVq4cKFiYmJUo8b/t+Pj46PBgwcrPj5efn5+8vb21ogRIxQREaFOnTpJkrp27arQ0FANGDBA06ZNU3Z2tp577jnFxsaaZ6+GDh2q2bNna8yYMRo0aJDWr1+v5cuXKzk52dxXfHy8YmJi1KFDB914442aMWOG8vPzNXDgwMr9MgAAAABUK5YHsk8++UT79+/XoEGDSo299tprcnFxUa9evVRQUKCoqCjNnTvXHHd1ddWaNWs0bNgwRUREyMvLSzExMZo0aZJZExISouTkZMXFxWnmzJlq1KiR3nzzTUVFRZk1ffr00aFDh5SYmKjs7Gy1a9dOKSkppRb6AAAAAIDydFk9h+xKxnPIAAAAriw8hwwV5Yp8DhkAAAAAVDcEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsYvmDoQEAAABUnOryvDXpynzmGmfIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAilgeyX3/9VQ8//LDq1asnT09PtW7dWl988YU5bhiGEhMT1bBhQ3l6eioyMlLfffedwxxHjhxR//795e3tLV9fXw0ePFgnTpxwqPn66691yy23yMPDQ8HBwZo2bVqpXlasWKHmzZvLw8NDrVu31kcffVQxBw0AAAAAsjiQHT16VJ07d1bNmjW1du1affPNN5o+fbrq1q1r1kybNk2zZs3S/PnztXXrVnl5eSkqKkqnT582a/r376/du3crNTVVa9as0aZNmzRkyBBz3G63q2vXrmrSpIkyMjL0yiuvaOLEiVqwYIFZs2XLFvXr10+DBw/Wl19+qR49eqhHjx7atWtX5XwZAAAAAKodm2EYhlU7T0hI0ObNm/Xvf//7vOOGYSgoKEhPP/20nnnmGUlSXl6eAgIClJSUpL59+2rPnj0KDQ3V9u3b1aFDB0lSSkqK7r77bv3yyy8KCgrSvHnzNH78eGVnZ8vNzc3c96pVq7R3715JUp8+fZSfn681a9aY++/UqZPatWun+fPn/+mx2O12+fj4KC8vT97e3n/pewEAAEDFW9p9qdUtoJz1W93P6hYkOZcNLD1D9uGHH6pDhw564IEH5O/vrxtuuEFvvPGGOZ6VlaXs7GxFRkaa23x8fBQeHq709HRJUnp6unx9fc0wJkmRkZFycXHR1q1bzZpbb73VDGOSFBUVpX379uno0aNmzbn7Kakp2c8fFRQUyG63O7wAAAAAwBmWBrIff/xR8+bN07XXXqt169Zp2LBheuqpp7Ro0SJJUnZ2tiQpICDA4XMBAQHmWHZ2tvz9/R3Ga9SoIT8/P4ea881x7j4uVFMy/kdTpkyRj4+P+QoODnb6+AEAAABUb5YGsuLiYrVv314vvfSSbrjhBg0ZMkSPP/54mS4RtNq4ceOUl5dnvg4cOGB1SwAAAACuMJYGsoYNGyo0NNRhW4sWLbR//35JUmBgoCQpJyfHoSYnJ8ccCwwMVG5ursP42bNndeTIEYea881x7j4uVFMy/kfu7u7y9vZ2eAEAAACAM2pYufPOnTtr3759Dtu+/fZbNWnSRJIUEhKiwMBApaWlqV27dpJ+v0Fu69atGjZsmCQpIiJCx44dU0ZGhsLCwiRJ69evV3FxscLDw82a8ePH68yZM6pZs6YkKTU1Vddff725omNERITS0tI0atQos5fU1FRFRERU2PEDAABcbljoAqhclp4hi4uL0+eff66XXnpJ33//vZYsWaIFCxYoNjZWkmSz2TRq1Ci9+OKL+vDDD7Vz50498sgjCgoKUo8ePST9fkbtrrvu0uOPP65t27Zp8+bNGj58uPr27augoCBJ0kMPPSQ3NzcNHjxYu3fv1rJlyzRz5kzFx8ebvYwcOVIpKSmaPn269u7dq4kTJ+qLL77Q8OHDK/17AQAAAFA9WHqGrGPHjvrggw80btw4TZo0SSEhIZoxY4b69+9v1owZM0b5+fkaMmSIjh07pptvvlkpKSny8PAwaxYvXqzhw4erS5cucnFxUa9evTRr1ixz3MfHRx9//LFiY2MVFham+vXrKzEx0eFZZTfddJOWLFmi5557Ts8++6yuvfZarVq1Sq1ataqcLwMAAABAtWPpc8iqEp5DBgAAqgIuWcSVjOeQAQAAAADKjEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgkb8cyIqKipSZmamjR4+WRz8AAAAAUG04HchGjRqlt956S9LvYey2225T+/btFRwcrE8//bS8+wMAAACAKsvpQPb++++rbdu2kqTVq1crKytLe/fuVVxcnMaPH1/uDQIAAABAVeV0IDt8+LACAwMlSR999JEeeOABXXfddRo0aJB27txZ7g0CAAAAQFXldCALCAjQN998o6KiIqWkpOjOO++UJJ08eVKurq7l3iAAAAAAVFU1nP3AwIED9eCDD6phw4ay2WyKjIyUJG3dulXNmzcv9wYBAAAAoKpyOpBNnDhRrVq10oEDB/TAAw/I3d1dkuTq6qqEhIRybxAAAAAAqiqnA5kk9e7dW5J0+vRpc1tMTEz5dAQAAAAA1YTT95AVFRXpb3/7m6666irVrl1bP/74oyTp+eefN5fDBwAAAAD8OacD2eTJk5WUlKRp06bJzc3N3N6qVSu9+eab5docAAAAAFRlTgeyd955RwsWLFD//v0dVlVs27at9u7dW67NAQAAAEBV5nQg+/XXX9WsWbNS24uLi3XmzJlyaQoAAAAAqgOnA1loaKj+/e9/l9r+/vvv64YbbiiXpgAAAACgOnB6lcXExETFxMTo119/VXFxsVauXKl9+/bpnXfe0Zo1ayqiRwAAAACokpw+Q3bfffdp9erV+uSTT+Tl5aXExETt2bNHq1ev1p133lkRPQIAAABAlXRJzyG75ZZblJqaWt69AAAAAEC14vQZMgAAAABA+SjTGbK6devKZrOVacIjR478pYYAAAAAoLooUyCbMWNGBbcBAAAAANVPmQJZTExMRfcBAAAAANXOJS3qUeL06dMqLCx02Obt7f2XGgIAAACA6sLpRT3y8/M1fPhw+fv7y8vLS3Xr1nV4AQAAAADKxulANmbMGK1fv17z5s2Tu7u73nzzTb3wwgsKCgrSO++8UxE9AgAAAECV5PQli6tXr9Y777yj22+/XQMHDtQtt9yiZs2aqUmTJlq8eLH69+9fEX0CAAAAQJXj9BmyI0eO6Oqrr5b0+/1iJcvc33zzzdq0aVP5dgcAAAAAVZjTgezqq69WVlaWJKl58+Zavny5pN/PnPn6+jo118SJE2Wz2RxezZs3N8dPnz6t2NhY1atXT7Vr11avXr2Uk5PjMMf+/fsVHR2tWrVqyd/fX6NHj9bZs2cdaj799FO1b99e7u7uatasmZKSkkr1MmfOHDVt2lQeHh4KDw/Xtm3bnDoWAAAAAHCW04Fs4MCB+uqrryRJCQkJmjNnjjw8PBQXF6fRo0c73UDLli3122+/ma/PPvvMHIuLi9Pq1au1YsUKbdy4UQcPHlTPnj3N8aKiIkVHR6uwsFBbtmzRokWLlJSUpMTERLMmKytL0dHRuuOOO5SZmalRo0bpscce07p168yaZcuWKT4+XhMmTNCOHTvUtm1bRUVFKTc31+njAQAAAICyshmGYfyVCX766Sft2LFDzZo1U5s2bZz67MSJE7Vq1SplZmaWGsvLy1ODBg20ZMkS9e7dW5K0d+9etWjRQunp6erUqZPWrl2re+65RwcPHlRAQIAkaf78+Ro7dqwOHTokNzc3jR07VsnJydq1a5c5d9++fXXs2DGlpKRIksLDw9WxY0fNnj1bklRcXKzg4GCNGDFCCQkJZToWu90uHx8f5eXlsfQ/AAC4Yi3tvtTqFoBL1m91P6tbkORcNnD6DNkfNW3aVD179nQ6jJX47rvvFBQUpKuvvlr9+/fX/v37JUkZGRk6c+aMIiMjzdrmzZurcePGSk9PlySlp6erdevWZhiTpKioKNntdu3evdusOXeOkpqSOQoLC5WRkeFQ4+LiosjISLPmfAoKCmS32x1eAAAAAOCMMgey9PR0rVmzxmHbO++8o5CQEPn7+2vIkCEqKChwaufh4eFKSkpSSkqK5s2bp6ysLN1yyy06fvy4srOz5ebmVuq+tICAAGVnZ0uSsrOzHcJYyXjJ2MVq7Ha7Tp06pcOHD6uoqOi8NSVznM+UKVPk4+NjvoKDg506dgAAAAAocyCbNGmSedZJknbu3KnBgwcrMjJSCQkJWr16taZMmeLUzrt166YHHnhAbdq0UVRUlD766CMdO3bMXCjkcjZu3Djl5eWZrwMHDljdEgAAAIArTJkDWWZmprp06WK+f++99xQeHq433nhD8fHxmjVr1l8OUr6+vrruuuv0/fffKzAwUIWFhTp27JhDTU5OjgIDAyVJgYGBpVZdLHn/ZzXe3t7y9PRU/fr15erqet6akjnOx93dXd7e3g4vAAAAAHBGmR8MffToUYfL+jZu3Khu3bqZ7zt27PiXzxKdOHFCP/zwgwYMGKCwsDDVrFlTaWlp6tWrlyRp37592r9/vyIiIiRJERERmjx5snJzc+Xv7y9JSk1Nlbe3t0JDQ82ajz76yGE/qamp5hxubm4KCwtTWlqaevToIen3RT3S0tI0fPjwv3Q8AACgamChCwAVpcxnyAICAsznjxUWFmrHjh3q1KmTOX78+HHVrFnTqZ0/88wz2rhxo3766Sdt2bJF999/v1xdXdWvXz/5+Pho8ODBio+P14YNG5SRkaGBAwcqIiLC3G/Xrl0VGhqqAQMG6KuvvtK6dev03HPPKTY2Vu7u7pKkoUOH6scff9SYMWO0d+9ezZ07V8uXL1dcXJzZR3x8vN544w0tWrRIe/bs0bBhw5Sfn6+BAwc6dTwAAAAA4IwynyG7++67lZCQoKlTp2rVqlWqVauWbrnlFnP866+/1jXXXOPUzn/55Rf169dP//nPf9SgQQPdfPPN+vzzz9WgQQNJ0muvvSYXFxf16tVLBQUFioqK0ty5c83Pu7q6as2aNRo2bJgiIiLk5eWlmJgYTZo0yawJCQlRcnKy4uLiNHPmTDVq1EhvvvmmoqKizJo+ffro0KFDSkxMVHZ2ttq1a6eUlJRSC30AAAAAQHkq83PIDh8+rJ49e+qzzz5T7dq1tWjRIt1///3meJcuXdSpUydNnjy5wpq9nPEcMgAAqi4uWQSuDFfic8jKfIasfv362rRpk/Ly8lS7dm25uro6jK9YsUK1a9e+tI4BAAAAoBoqcyAr4ePjc97tfn5+f7kZAAAAAKhOyryoBwAAAACgfBHIAAAAAMAiBDIAAAAAsEiZAln79u119OhRSdKkSZN08uTJCm0KAAAAAKqDMgWyPXv2KD8/X5L0wgsv6MSJExXaFAAAAABUB2VaZbFdu3YaOHCgbr75ZhmGof/93/+94BL3iYmJ5dogAAAAAFRVZQpkSUlJmjBhgtasWSObzaa1a9eqRo3SH7XZbAQyAAAAACijMgWy66+/Xu+9954kycXFRWlpafL396/QxgAAAACgqnP6wdDFxcUV0QcAAAAAVDtOBzJJ+uGHHzRjxgzt2bNHkhQaGqqRI0fqmmuuKdfmAAAAAKAqc/o5ZOvWrVNoaKi2bdumNm3aqE2bNtq6datatmyp1NTUiugRAAAAAKokp8+QJSQkKC4uTi+//HKp7WPHjtWdd95Zbs0BAAAAQFXm9BmyPXv2aPDgwaW2Dxo0SN988025NAUAAAAA1YHTgaxBgwbKzMwstT0zM5OVFwEAAADACU5fsvj4449ryJAh+vHHH3XTTTdJkjZv3qypU6cqPj6+3BsEAAAAgKrK6UD2/PPPq06dOpo+fbrGjRsnSQoKCtLEiRP11FNPlXuDAAAAAFBVOR3IbDab4uLiFBcXp+PHj0uS6tSpU+6NAQAAAEBVd0nPIStBEAMAAACAS+f0oh4AAAAAgPJBIAMAAAAAixDIAAAAAMAiTgWyM2fOqEuXLvruu+8qqh8AAAAAqDacCmQ1a9bU119/XVG9AAAAAEC14vQliw8//LDeeuutiugFAAAAAKoVp5e9P3v2rN5++2198sknCgsLk5eXl8P4q6++Wm7NAQAAAEBV5nQg27Vrl9q3by9J+vbbbx3GbDZb+XQFAAAAANWA04Fsw4YNFdEHAAAAAFQ7l7zs/ffff69169bp1KlTkiTDMMqtKQAAAACoDpwOZP/5z3/UpUsXXXfddbr77rv122+/SZIGDx6sp59+utwbBAAAAICqyulAFhcXp5o1a2r//v2qVauWub1Pnz5KSUkp1+YAAAAAoCpz+h6yjz/+WOvWrVOjRo0ctl977bX6+eefy60xAAAAAKjqnD5Dlp+f73BmrMSRI0fk7u5+yY28/PLLstlsGjVqlLnt9OnTio2NVb169VS7dm316tVLOTk5Dp/bv3+/oqOjVatWLfn7+2v06NE6e/asQ82nn36q9u3by93dXc2aNVNSUlKp/c+ZM0dNmzaVh4eHwsPDtW3btks+FgAAAAAoC6cD2S233KJ33nnHfG+z2VRcXKxp06bpjjvuuKQmtm/frr///e9q06aNw/a4uDitXr1aK1as0MaNG3Xw4EH17NnTHC8qKlJ0dLQKCwu1ZcsWLVq0SElJSUpMTDRrsrKyFB0drTvuuEOZmZkaNWqUHnvsMa1bt86sWbZsmeLj4zVhwgTt2LFDbdu2VVRUlHJzcy/peAAAAACgLGyGk8sj7tq1S126dFH79u21fv163Xvvvdq9e7eOHDmizZs365prrnGqgRMnTqh9+/aaO3euXnzxRbVr104zZsxQXl6eGjRooCVLlqh3796SpL1796pFixZKT09Xp06dtHbtWt1zzz06ePCgAgICJEnz58/X2LFjdejQIbm5uWns2LFKTk7Wrl27zH327dtXx44dM+95Cw8PV8eOHTV79mxJUnFxsYKDgzVixAglJCSU6Tjsdrt8fHyUl5cnb29vp74DAABweVvafanVLQAog36r+1ndgiTnsoHTZ8hatWqlb7/9VjfffLPuu+8+5efnq2fPnvryyy+dDmOSFBsbq+joaEVGRjpsz8jI0JkzZxy2N2/eXI0bN1Z6erokKT09Xa1btzbDmCRFRUXJbrdr9+7dZs0f546KijLnKCwsVEZGhkONi4uLIiMjzZrzKSgokN1ud3gBAAAAgDOcXtRDknx8fDR+/Pi/vPP33ntPO3bs0Pbt20uNZWdny83NTb6+vg7bAwIClJ2dbdacG8ZKxkvGLlZjt9t16tQpHT16VEVFReet2bt37wV7nzJlil544YWyHSgAAAAAnMclBbKjR4/qrbfe0p49eyRJoaGhGjhwoPz8/Mo8x4EDBzRy5EilpqbKw8PjUtqw1Lhx4xQfH2++t9vtCg4OtrAjAAAAAFcapy9Z3LRpk5o2bapZs2bp6NGjOnr0qGbNmqWQkBBt2rSpzPNkZGQoNzdX7du3V40aNVSjRg1t3LhRs2bNUo0aNRQQEKDCwkIdO3bM4XM5OTkKDAyUJAUGBpZadbHk/Z/VeHt7y9PTU/Xr15erq+t5a0rmOB93d3d5e3s7vAAAAADAGU4HstjYWPXp00dZWVlauXKlVq5cqR9//FF9+/ZVbGxsmefp0qWLdu7cqczMTPPVoUMH9e/f3/xzzZo1lZaWZn5m37592r9/vyIiIiRJERER2rlzp8NqiKmpqfL29lZoaKhZc+4cJTUlc7i5uSksLMyhpri4WGlpaWYNAAAAAFQEpy9Z/P777/X+++/L1dXV3Obq6qr4+HiH5fD/TJ06ddSqVSuHbV5eXqpXr565ffDgwYqPj5efn5+8vb01YsQIRUREqFOnTpKkrl27KjQ0VAMGDNC0adOUnZ2t5557TrGxseYz0YYOHarZs2drzJgxGjRokNavX6/ly5crOTnZ3G98fLxiYmLUoUMH3XjjjZoxY4by8/M1cOBAZ78eAAAAACgzpwNZ+/bttWfPHl1//fUO2/fs2aO2bduWW2OS9Nprr8nFxUW9evVSQUGBoqKiNHfuXHPc1dVVa9as0bBhwxQRESEvLy/FxMRo0qRJZk1ISIiSk5MVFxenmTNnqlGjRnrzzTcVFRVl1vTp00eHDh1SYmKisrOz1a5dO6WkpJRa6AMAAAAAylOZnkP29ddfm3/es2ePxowZoxEjRphnqj7//HPNmTNHL7/8svr06VNx3V7GeA4ZAKBEdXlm1eXyvJ/KUF1+U+BKd7n8/yVnskGZzpC1a9dONptN52a3MWPGlKp76KGHqm0gAwAAAABnlSmQZWVlVXQfAAAAAFDtlCmQNWnSpKL7AAAAAIBq55IeDH3w4EF99tlnys3NVXFxscPYU089VS6NAQAAAEBV53QgS0pK0hNPPCE3NzfVq1dPNpvNHLPZbAQyAAAAACgjpwPZ888/r8TERI0bN04uLk4/VxoAAAAA8F9OJ6qTJ0+qb9++hDEAAAAA+IucTlWDBw/WihUrKqIXAAAAAKhWnL5kccqUKbrnnnuUkpKi1q1bq2bNmg7jr776ark1BwAAAABV2SUFsnXr1un666+XpFKLegAAym5p96VWt1Bp+q3uZ3ULAABcdpwOZNOnT9fbb7+tRx99tALaAQBUVdUpfAIAUFZOBzJ3d3d17ty5InoB8Ceq0z9oOZsCAACqA6cX9Rg5cqRef/31iugFAAAAAKoVp8+Qbdu2TevXr9eaNWvUsmXLUot6rFy5styaAwAAAICqzOlA5uvrq549e1ZELwAAAABQrTgdyBYuXFgRfQAAAABAteP0PWQAAAAAgPLh9BmykJCQiz5v7Mcff/xLDQEAgCtDdVr5FQAqitOBbNSoUQ7vz5w5oy+//FIpKSkaPXp0efWFv6g6/UeS5dEBAABwpXI6kI0cOfK82+fMmaMvvvjiLzcEAAAAANVFud1D1q1bN/3zn/8sr+kAAAAAoMort0D2/vvvy8/Pr7ymAwAAAIAqz+lLFm+44QaHRT0Mw1B2drYOHTqkuXPnlmtzAAAAAFCVOR3IevTo4fDexcVFDRo00O23367mzZuXV18AAAAAUOU5HcgmTJhQEX0AAAAAQLXDg6EBAAAAwCJlPkPm4uJy0QdCS5LNZtPZs2f/clMAAAAAUB2UOZB98MEHFxxLT0/XrFmzVFxcXC5NAQAAAEB1UOZAdt9995Xatm/fPiUkJGj16tXq37+/Jk2aVK7NAQAAAEBVdkn3kB08eFCPP/64WrdurbNnzyozM1OLFi1SkyZNyrs/AAAAAKiynApkeXl5Gjt2rJo1a6bdu3crLS1Nq1evVqtWrSqqPwAAAACossp8yeK0adM0depUBQYGaunSpee9hBEAAAAAUHZlDmQJCQny9PRUs2bNtGjRIi1atOi8dStXriy35gAAAACgKivzJYuPPPKIHnzwQfn5+cnHx+eCL2fMmzdPbdq0kbe3t7y9vRUREaG1a9ea46dPn1ZsbKzq1aun2rVrq1evXsrJyXGYY//+/YqOjlatWrXk7++v0aNHl1p6/9NPP1X79u3l7u6uZs2aKSkpqVQvc+bMUdOmTeXh4aHw8HBt27bNqWMBAAAAAGeV+QzZ+ULMX9WoUSO9/PLLuvbaa2UYhhYtWqT77rtPX375pVq2bKm4uDglJydrxYoV8vHx0fDhw9WzZ09t3rxZklRUVKTo6GgFBgZqy5Yt+u233/TII4+oZs2aeumllyRJWVlZio6O1tChQ7V48WKlpaXpscceU8OGDRUVFSVJWrZsmeLj4zV//nyFh4drxowZioqK0r59++Tv71/uxw0AAAAAkmQzDMOwuolz+fn56ZVXXlHv3r3VoEEDLVmyRL1795Yk7d27Vy1atFB6ero6deqktWvX6p577tHBgwcVEBAgSZo/f77Gjh2rQ4cOyc3NTWPHjlVycrJ27dpl7qNv3746duyYUlJSJEnh4eHq2LGjZs+eLUkqLi5WcHCwRowYoYSEhDL1bbfb5ePjo7y8PHl7e5fnV3JJlnZfanULlabf6n5Wt1Bp+F2rnur0mwIAUNEul38/OJMNLmnZ+4pQVFSk9957T/n5+YqIiFBGRobOnDmjyMhIs6Z58+Zq3Lix0tPTJf3+QOrWrVubYUySoqKiZLfbtXv3brPm3DlKakrmKCwsVEZGhkONi4uLIiMjzZrzKSgokN1ud3gBAAAAgDMsD2Q7d+5U7dq15e7urqFDh+qDDz5QaGiosrOz5ebmJl9fX4f6gIAAZWdnS5Kys7MdwljJeMnYxWrsdrtOnTqlw4cPq6io6Lw1JXOcz5QpUxzunQsODr6k4wcAAABQfVkeyK6//nplZmZq69atGjZsmGJiYvTNN99Y3dafGjdunPLy8szXgQMHrG4JAAAAwBWmzIt6VBQ3Nzc1a9ZMkhQWFqbt27dr5syZ6tOnjwoLC3Xs2DGHs2Q5OTkKDAyUJAUGBpZaDbFkFcZza/64MmNOTo68vb3l6ekpV1dXubq6nremZI7zcXd3l7u7+6UdNAAAAADoMjhD9kfFxcUqKChQWFiYatasqbS0NHNs37592r9/vyIiIiRJERER2rlzp3Jzc82a1NRUeXt7KzQ01Kw5d46SmpI53NzcFBYW5lBTXFystLQ0swYAAAAAKoKlZ8jGjRunbt26qXHjxjp+/LiWLFmiTz/9VOvWrZOPj48GDx6s+Ph4+fn5ydvbWyNGjFBERIQ6deokSeratatCQ0M1YMAATZs2TdnZ2XruuecUGxtrnr0aOnSoZs+erTFjxmjQoEFav369li9fruTkZLOP+Ph4xcTEqEOHDrrxxhs1Y8YM5efna+DAgZZ8LwBYfRAAAFQPlgay3NxcPfLII/rtt9/k4+OjNm3aaN26dbrzzjslSa+99ppcXFzUq1cvFRQUKCoqSnPnzjU/7+rqqjVr1mjYsGGKiIiQl5eXYmJiNGnSJLMmJCREycnJiouL08yZM9WoUSO9+eab5jPIJKlPnz46dOiQEhMTlZ2drXbt2iklJaXUQh8AAAAAUJ4uu+eQXal4Dpl1LpfnTVSG6vS7AgAAOOty+XfhFfkcMgAAAACobghkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUsXfYeKA+sPAgAAIArFWfIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAAAAACxCIAMAAAAAixDIAAAAAMAiBDIAAAAAsAiBDAAAAAAsYmkgmzJlijp27Kg6derI399fPXr00L59+xxqTp8+rdjYWNWrV0+1a9dWr169lJOT41Czf/9+RUdHq1atWvL399fo0aN19uxZh5pPP/1U7du3l7u7u5o1a6akpKRS/cyZM0dNmzaVh4eHwsPDtW3btnI/ZgAAAAAoYWkg27hxo2JjY/X5558rNTVVZ86cUdeuXZWfn2/WxMXFafXq1VqxYoU2btyogwcPqmfPnuZ4UVGRoqOjVVhYqC1btmjRokVKSkpSYmKiWZOVlaXo6GjdcccdyszM1KhRo/TYY49p3bp1Zs2yZcsUHx+vCRMmaMeOHWrbtq2ioqKUm5tbOV8GAAAAgGrHZhiGYXUTJQ4dOiR/f39t3LhRt956q/Ly8tSgQQMtWbJEvXv3liTt3btXLVq0UHp6ujp16qS1a9fqnnvu0cGDBxUQECBJmj9/vsaOHatDhw7Jzc1NY8eOVXJysnbt2mXuq2/fvjp27JhSUlIkSeHh4erYsaNmz54tSSouLlZwcLBGjBihhISEP+3dbrfLx8dHeXl58vb2Lu+vxmlLuy+1ugUAAACgUvVb3c/qFiQ5lw0uq3vI8vLyJEl+fn6SpIyMDJ05c0aRkZFmTfPmzdW4cWOlp6dLktLT09W6dWszjElSVFSU7Ha7du/ebdacO0dJTckchYWFysjIcKhxcXFRZGSkWfNHBQUFstvtDi8AAAAAcMZlE8iKi4s1atQode7cWa1atZIkZWdny83NTb6+vg61AQEBys7ONmvODWMl4yVjF6ux2+06deqUDh8+rKKiovPWlMzxR1OmTJGPj4/5Cg4OvrQDBwAAAFBtXTaBLDY2Vrt27dJ7771ndStlMm7cOOXl5ZmvAwcOWN0SAAAAgCtMDasbkKThw4drzZo12rRpkxo1amRuDwwMVGFhoY4dO+ZwliwnJ0eBgYFmzR9XQyxZhfHcmj+uzJiTkyNvb295enrK1dVVrq6u560pmeOP3N3d5e7ufmkHDAAAAACy+AyZYRgaPny4PvjgA61fv14hISEO42FhYapZs6bS0tLMbfv27dP+/fsVEREhSYqIiNDOnTsdVkNMTU2Vt7e3QkNDzZpz5yipKZnDzc1NYWFhDjXFxcVKS0szawAAAACgvFl6hiw2NlZLlizRv/71L9WpU8e8X8vHx0eenp7y8fHR4MGDFR8fLz8/P3l7e2vEiBGKiIhQp06dJEldu3ZVaGioBgwYoGnTpik7O1vPPfecYmNjzTNYQ4cO1ezZszVmzBgNGjRI69ev1/Lly5WcnGz2Eh8fr5iYGHXo0EE33nijZsyYofz8fA0cOLDyvxgAAAAA1YKlgWzevHmSpNtvv91h+8KFC/Xoo49Kkl577TW5uLioV69eKigoUFRUlObOnWvWurq6as2aNRo2bJgiIiLk5eWlmJgYTZo0yawJCQlRcnKy4uLiNHPmTDVq1EhvvvmmoqKizJo+ffro0KFDSkxMVHZ2ttq1a6eUlJRSC30AAAAAQHm5rJ5DdiXjOWQAAACAtXgOGQAAAACgzAhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFLA1kmzZtUvfu3RUUFCSbzaZVq1Y5jBuGocTERDVs2FCenp6KjIzUd99951Bz5MgR9e/fX97e3vL19dXgwYN14sQJh5qvv/5at9xyizw8PBQcHKxp06aV6mXFihVq3ry5PDw81Lp1a3300UflfrwAAAAAcC5LA1l+fr7atm2rOXPmnHd82rRpmjVrlubPn6+tW7fKy8tLUVFROn36tFnTv39/7d69W6mpqVqzZo02bdqkIUOGmON2u11du3ZVkyZNlJGRoVdeeUUTJ07UggULzJotW7aoX79+Gjx4sL788kv16NFDPXr00K5duyru4AEAAABUezbDMAyrm5Akm82mDz74QD169JD0+9mxoKAgPf3003rmmWckSXl5eQoICFBSUpL69u2rPXv2KDQ0VNu3b1eHDh0kSSkpKbr77rv1yy+/KCgoSPPmzdP48eOVnZ0tNzc3SVJCQoJWrVqlvXv3SpL69Omj/Px8rVmzxuynU6dOateunebPn1+m/u12u3x8fJSXlydvb+/y+lou2dLuS61uAQAAAKhU/Vb3s7oFSc5lg8v2HrKsrCxlZ2crMjLS3Obj46Pw8HClp6dLktLT0+Xr62uGMUmKjIyUi4uLtm7datbceuutZhiTpKioKO3bt09Hjx41a87dT0lNyX7Op6CgQHa73eEFAAAAAM64bANZdna2JCkgIMBhe0BAgDmWnZ0tf39/h/EaNWrIz8/PoeZ8c5y7jwvVlIyfz5QpU+Tj42O+goODnT1EAAAAANXcZRvILnfjxo1TXl6e+Tpw4IDVLQEAAAC4wly2gSwwMFCSlJOT47A9JyfHHAsMDFRubq7D+NmzZ3XkyBGHmvPNce4+LlRTMn4+7u7u8vb2dngBAAAAgDMu20AWEhKiwMBApaWlmdvsdru2bt2qiIgISVJERISOHTumjIwMs2b9+vUqLi5WeHi4WbNp0yadOXPGrElNTdX111+vunXrmjXn7qekpmQ/AAAAAFARLA1kJ06cUGZmpjIzMyX9vpBHZmam9u/fL5vNplGjRunFF1/Uhx9+qJ07d+qRRx5RUFCQuRJjixYtdNddd+nxxx/Xtm3btHnzZg0fPlx9+/ZVUFCQJOmhhx6Sm5ubBg8erN27d2vZsmWaOXOm4uPjzT5GjhyplJQUTZ8+XXv37tXEiRP1xRdfaPjw4ZX9lQAAAACoRmpYufMvvvhCd9xxh/m+JCTFxMQoKSlJY8aMUX5+voYMGaJjx47p5ptvVkpKijw8PMzPLF68WMOHD1eXLl3k4uKiXr16adasWea4j4+PPv74Y8XGxiosLEz169dXYmKiw7PKbrrpJi1ZskTPPfecnn32WV177bVatWqVWrVqVQnfAgAAAIDq6rJ5DtmVjueQAQAAANbiOWQAAAAAgDIjkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgEQIZAAAAAFiEQAYAAAAAFiGQ/cGcOXPUtGlTeXh4KDw8XNu2bbO6JQAAAABVFIHsHMuWLVN8fLwmTJigHTt2qG3btoqKilJubq7VrQEAAACogghk53j11Vf1+OOPa+DAgQoNDdX8+fNVq1Ytvf3221a3BgAAAKAKqmF1A5eLwsJCZWRkaNy4ceY2FxcXRUZGKj09vVR9QUGBCgoKzPd5eXmSJLvdXvHNlsHJMyetbgEAAACoVJfLv8VL+jAM409rCWT/dfjwYRUVFSkgIMBhe0BAgPbu3VuqfsqUKXrhhRdKbQ8ODq6wHgEAAABc2GM+j1ndgoPjx4/Lx8fnojUEsks0btw4xcfHm++Li4t15MgR1atXTzabzcLOYLfbFRwcrAMHDsjb29vqdmAB/g5Ub/z+1Ru/f/XG71+9XU6/v2EYOn78uIKCgv60lkD2X/Xr15erq6tycnIctufk5CgwMLBUvbu7u9zd3R22+fr6VmSLcJK3t7fl/8cIa/F3oHrj96/e+P2rN37/6u1y+f3/7MxYCRb1+C83NzeFhYUpLS3N3FZcXKy0tDRFRERY2BkAAACAqoozZOeIj49XTEyMOnTooBtvvFEzZsxQfn6+Bg4caHVrAAAAAKogAtk5+vTpo0OHDikxMVHZ2dlq166dUlJSSi30gcubu7u7JkyYUOqSUlQf/B2o3vj9qzd+/+qN3796u1J/f5tRlrUYAQAAAADljnvIAAAAAMAiBDIAAAAAsAiBDAAAAAAsQiADAAAAAIsQyFBlTJkyRR07dlSdOnXk7++vHj16aN++fVa3BYu8/PLLstlsGjVqlNWtoJL8+uuvevjhh1WvXj15enqqdevW+uKLL6xuC5WgqKhIzz//vEJCQuTp6alrrrlGf/vb38S6ZVXXpk2b1L17dwUFBclms2nVqlUO44ZhKDExUQ0bNpSnp6ciIyP13XffWdMsyt3Ffv8zZ85o7Nixat26tby8vBQUFKRHHnlEBw8etK7hP0EgQ5WxceNGxcbG6vPPP1dqaqrOnDmjrl27Kj8/3+rWUMm2b9+uv//972rTpo3VraCSHD16VJ07d1bNmjW1du1affPNN5o+fbrq1q1rdWuoBFOnTtW8efM0e/Zs7dmzR1OnTtW0adP0+uuvW90aKkh+fr7atm2rOXPmnHd82rRpmjVrlubPn6+tW7fKy8tLUVFROn36dCV3iopwsd//5MmT2rFjh55//nnt2LFDK1eu1L59+3Tvvfda0GnZsOw9qqxDhw7J399fGzdu1K233mp1O6gkJ06cUPv27TV37ly9+OKLateunWbMmGF1W6hgCQkJ2rx5s/79739b3QoscM899yggIEBvvfWWua1Xr17y9PTUu+++a2FnqAw2m00ffPCBevToIen3s2NBQUF6+umn9cwzz0iS8vLyFBAQoKSkJPXt29fCblHe/vj7n8/27dt144036ueff1bjxo0rr7ky4gwZqqy8vDxJkp+fn8WdoDLFxsYqOjpakZGRVreCSvThhx+qQ4cOeuCBB+Tv768bbrhBb7zxhtVtoZLcdNNNSktL07fffitJ+uqrr/TZZ5+pW7duFncGK2RlZSk7O9vhvwM+Pj4KDw9Xenq6hZ3BKnl5ebLZbPL19bW6lfOqYXUDQEUoLi7WqFGj1LlzZ7Vq1crqdlBJ3nvvPe3YsUPbt2+3uhVUsh9//FHz5s1TfHy8nn32WW3fvl1PPfWU3NzcFBMTY3V7qGAJCQmy2+1q3ry5XF1dVVRUpMmTJ6t///5WtwYLZGdnS5ICAgIctgcEBJhjqD5Onz6tsWPHql+/fvL29ra6nfMikKFKio2N1a5du/TZZ59Z3QoqyYEDBzRy5EilpqbKw8PD6nZQyYqLi9WhQwe99NJLkqQbbrhBu3bt0vz58wlk1cDy5cu1ePFiLVmyRC1btlRmZqZGjRqloKAgfn+gGjtz5owefPBBGYahefPmWd3OBXHJIqqc4cOHa82aNdqwYYMaNWpkdTuoJBkZGcrNzVX79u1Vo0YN1ahRQxs3btSsWbNUo0YNFRUVWd0iKlDDhg0VGhrqsK1Fixbav3+/RR2hMo0ePVoJCQnq27evWrdurQEDBiguLk5TpkyxujVYIDAwUJKUk5PjsD0nJ8ccQ9VXEsZ+/vlnpaamXrZnxyQCGaoQwzA0fPhwffDBB1q/fr1CQkKsbgmVqEuXLtq5c6cyMzPNV4cOHdS/f39lZmbK1dXV6hZRgTp37lzqMRfffvutmjRpYlFHqEwnT56Ui4vjP2lcXV1VXFxsUUewUkhIiAIDA5WWlmZus9vt2rp1qyIiIizsDJWlJIx99913+uSTT1SvXj2rW7ooLllElREbG6slS5boX//6l+rUqWNeJ+7j4yNPT0+Lu0NFq1OnTqn7Bb28vFSvXj3uI6wG4uLidNNNN+mll17Sgw8+qG3btmnBggVasGCB1a2hEnTv3l2TJ09W48aN1bJlS3355Zd69dVXNWjQIKtbQwU5ceKEvv/+e/N9VlaWMjMz5efnp8aNG2vUqFF68cUXde211yokJETPP/+8goKCLroSH64cF/v9GzZsqN69e2vHjh1as2aNioqKzH8T+vn5yc3Nzaq2L8wAqghJ530tXLjQ6tZgkdtuu80YOXKk1W2gkqxevdpo1aqV4e7ubjRv3txYsGCB1S2hktjtdmPkyJFG48aNDQ8PD+Pqq682xo8fbxQUFFjdGirIhg0bzvvf/JiYGMMwDKO4uNh4/vnnjYCAAMPd3d3o0qWLsW/fPmubRrm52O+flZV1wX8TbtiwwerWz4vnkAEAAACARbiHDAAAAAAsQiADAAAAAIsQyAAAAADAIgQyAAAAALAIgQwAAAAALEIgAwAAAACLEMgAAAAAwCIEMgAAAACwCIEMAIDLgM1m06pVq6xuAwBQyQhkAIBq7dFHH5XNZtPQoUNLjcXGxspms+nRRx8tt/1NnDhR7dq1K7f5AABXNgIZAKDaCw4O1nvvvadTp06Z206fPq0lS5aocePGFnYGAKjqCGQAgGqvffv2Cg4O1sqVK81tK1euVOPGjXXDDTeY2woKCvTUU0/J399fHh4euvnmm7V9+3Zz/NNPP5XNZlNaWpo6dOigWrVq6aabbtK+ffskSUlJSXrhhRf01VdfyWazyWazKSkpyfz84cOHdf/996tWrVq69tpr9eGHH1b8wQMALEUgAwBA0qBBg7Rw4ULz/dtvv62BAwc61IwZM0b//Oc/tWjRIu3YsUPNmjVTVFSUjhw54lA3fvx4TZ8+XV988YVq1KihQYMGSZL69Omjp59+Wi1bttRvv/2m3377TX369DE/98ILL+jBBx/U119/rbvvvlv9+/cvNTcAoGohkAEAIOnhhx/WZ599pp9//lk///yzNm/erIcfftgcz8/P17x58/TKK6+oW7duCg0N1RtvvCFPT0+99dZbDnNNnjxZt912m0JDQ5WQkKAtW7bo9OnT8vT0VO3atVWjRg0FBgYqMDBQnp6e5uceffRR9evXT82aNdNLL72kEydOaNu2bZX2HQAAKl8NqxsAAOBy0KBBA0VHRyspKUmGYSg6Olr169c3x3/44QedOXNGnTt3NrfVrFlTN954o/bs2eMwV5s2bcw/N2zYUJKUm5v7p/ejnfs5Ly8veXt7Kzc39y8dFwDg8kYgAwDgvwYNGqThw4dLkubMmXPJ89SsWdP8s81mkyQVFxc79bmSz5blcwCAKxeXLAIA8F933XWXCgsLdebMGUVFRTmMXXPNNXJzc9PmzZvNbWfOnNH27dsVGhpa5n24ubmpqKio3HoGAFzZOEMGAMB/ubq6mpcfurq6Oox5eXlp2LBhGj16tPz8/NS4cWNNmzZNJ0+e1ODBg8u8j6ZNmyorK0uZmZlq1KiR6tSpI3d393I9DgDAlYNABgDAOby9vS849vLLL6u4uFgDBgzQ8ePH1aFDB61bt05169Yt8/y9evXSypUrdccdd+jYsWNauHBhuT54GgBwZbEZhmFY3QQAAAAAVEfcQwYAAAAAFiGQAQAAAIBFCGQAAAAAYBECGQAAAABYhEAGAAAAABYhkAEAAACARQhkAAAAAGARAhkAAAAAWIRABgAAAAAWIZABAAAAgEUIZAAAAABgkf8D2hLZSB4iThwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plotting Hourly Sales\n", "plt.figure(figsize=(10, 5))\n", "plt.hist(df['hour'], bins=24, alpha=0.7, color='blue')\n", "plt.title('Hourly Sales Distribution')\n", "plt.xlabel('Hour of the Day')\n", "plt.ylabel('Number of Sales')\n", "plt.show()\n", "\n", "# Plotting Weekly Sales\n", "plt.figure(figsize=(10, 5))\n", "plt.hist(df['weekday'], bins=7, alpha=0.7, color='green')\n", "plt.title('Sales Distribution by Day of the Week')\n", "plt.xlabel('Day of the Week')\n", "plt.ylabel('Number of Sales')\n", "plt.show()\n", "\n", "# Plotting Monthly Sales\n", "plt.figure(figsize=(10, 5))\n", "plt.hist(df['month'], bins=12, alpha=0.7, color='purple')\n", "plt.title('Sales Distribution by Month')\n", "plt.xlabel('Month')\n", "plt.ylabel('Number of Sales')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "df['total_sales'] = df['UnitPrice'] * df['Quantity']\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def calculate_peak_periods(data, group_by_column, top_n_percent=20):\n", " period_sales = data.groupby(group_by_column)['total_sales'].sum().reset_index()\n", " period_sales_sorted = period_sales.sort_values(by='total_sales', ascending=False)\n", " num_peak_periods = int((top_n_percent / 100) * len(period_sales_sorted))\n", " peak_periods = period_sales_sorted.head(num_peak_periods)[group_by_column].tolist()\n", " return peak_periods" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "\n", "peak_months = calculate_peak_periods(df, 'month')\n", "peak_weeks = calculate_peak_periods(df, 'week')\n", "peak_weekdays = calculate_peak_periods(df, 'weekday')\n", "peak_hours = calculate_peak_periods(df, 'hour')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def assign_peak_level_combined(row):\n", " peak_count = sum([\n", " row['month'] in peak_months,\n", " row['week'] in peak_weeks,\n", " row['weekday'] in peak_weekdays,\n", " row['hour'] in peak_hours\n", " ])\n", " return ['Very Low', 'Low', 'Medium', 'High', 'Very High'][peak_count]\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "df['peak_period_level'] = df.apply(assign_peak_level_combined, axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "cannot assign to subscript here. Maybe you meant '==' instead of '='? (4053592481.py, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m Cell \u001b[0;32mIn[18], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m df[df['peak_period_level'] = 'Very Low'].sum()\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m cannot assign to subscript here. Maybe you meant '==' instead of '='?\n" ] } ], "source": [ "# df[df['peak_period_level'] = 'Very Low'].sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "product_demand = df.groupby('StockCode')['Quantity'].sum().reset_index()\n", "product_demand.rename(columns={'Quantity': 'total_quantity'}, inplace=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "high_demand_threshold = np.percentile(product_demand['total_quantity'], 80) # Top 20% demand\n", "low_demand_threshold = np.percentile(product_demand['total_quantity'], 20) # Bottom 20% demand" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def assign_demand_level(total_quantity):\n", " if total_quantity > high_demand_threshold:\n", " return 'High'\n", " elif total_quantity < low_demand_threshold:\n", " return 'Low'\n", " else:\n", " return 'Medium'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "product_demand['overall_demand_level'] = product_demand['total_quantity'].apply(assign_demand_level)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = df.merge(product_demand[['StockCode', 'overall_demand_level']], on='StockCode')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryhourweekdaymonthweektotal_salespeak_period_leveloverall_demand_level
053636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:002.5517850.0United Kingdom82124815.30Very LowHigh
153636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowMedium
253636584406BCREAM CUPID HEARTS COAT HANGER82010-12-01 08:26:002.7517850.0United Kingdom82124822.00Very LowHigh
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHigh
453636584029ERED WOOLLY HOTTIE WHITE HEART.62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHigh
................................................
9791654479522815CARD PSYCHEDELIC APPLES122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHigh
9791754479522028PENNY FARTHING BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHigh
9791854479522035VINTAGE CARAVAN GREETING CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowMedium
9791954479522024RAINY LADIES BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHigh
9792054479685086ACANDY SPOT HEART DECORATION62011-02-23 13:37:000.8516208.0United Kingdom132285.10Very LowLow
\n", "

97921 rows × 15 columns

\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "... ... ... ... ... \n", "97916 544795 22815 CARD PSYCHEDELIC APPLES 12 \n", "97917 544795 22028 PENNY FARTHING BIRTHDAY CARD 12 \n", "97918 544795 22035 VINTAGE CARAVAN GREETING CARD 12 \n", "97919 544795 22024 RAINY LADIES BIRTHDAY CARD 12 \n", "97920 544796 85086A CANDY SPOT HEART DECORATION 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country hour \\\n", "0 2010-12-01 08:26:00 2.55 17850.0 United Kingdom 8 \n", "1 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "2 2010-12-01 08:26:00 2.75 17850.0 United Kingdom 8 \n", "3 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "4 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "... ... ... ... ... ... \n", "97916 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97917 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97918 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97919 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97920 2011-02-23 13:37:00 0.85 16208.0 United Kingdom 13 \n", "\n", " weekday month week total_sales peak_period_level \\\n", "0 2 12 48 15.30 Very Low \n", "1 2 12 48 20.34 Very Low \n", "2 2 12 48 22.00 Very Low \n", "3 2 12 48 20.34 Very Low \n", "4 2 12 48 20.34 Very Low \n", "... ... ... ... ... ... \n", "97916 2 2 8 5.04 Very Low \n", "97917 2 2 8 5.04 Very Low \n", "97918 2 2 8 5.04 Very Low \n", "97919 2 2 8 5.04 Very Low \n", "97920 2 2 8 5.10 Very Low \n", "\n", " overall_demand_level \n", "0 High \n", "1 Medium \n", "2 High \n", "3 High \n", "4 High \n", "... ... \n", "97916 High \n", "97917 High \n", "97918 Medium \n", "97919 High \n", "97920 Low \n", "\n", "[97921 rows x 15 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "reference_date = df['InvoiceDate'].max()\n", "\n", "rfm = df.groupby('CustomerID').agg({\n", " 'InvoiceDate': lambda x: (reference_date - x.max()).days, # Recency\n", " 'InvoiceNo': 'count', # Frequency\n", " 'UnitPrice': 'sum' # Monetary\n", "}).reset_index()\n", "\n", "rfm.columns = ['CustomerID', 'Recency', 'Frequency', 'Monetary']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CustomerIDRecencyFrequencyMonetary
012346.03611.04
112347.02760162.76
212348.0292391.61
312350.0201765.30
412352.071568.35
\n", "
" ], "text/plain": [ " CustomerID Recency Frequency Monetary\n", "0 12346.0 36 1 1.04\n", "1 12347.0 27 60 162.76\n", "2 12348.0 29 23 91.61\n", "3 12350.0 20 17 65.30\n", "4 12352.0 7 15 68.35" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rfm.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "rfm['RecencySegment'] = pd.qcut(rfm['Recency'], 4, labels=['High', 'Medium', 'Low', 'Very Low'])\n", "rfm['FrequencySegment'] = pd.qcut(rfm['Frequency'], 4, labels=['Very Low', 'Low', 'Medium', 'High'])\n", "rfm['MonetarySegment'] = pd.qcut(rfm['Monetary'], 4, labels=['Very Low', 'Low', 'Medium', 'High'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = df.merge(rfm[['CustomerID', 'RecencySegment','FrequencySegment','MonetarySegment']], on='CustomerID', how='left')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryhourweekdaymonthweektotal_salespeak_period_leveloverall_demand_levelRecencySegmentFrequencySegmentMonetarySegment
053636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:002.5517850.0United Kingdom82124815.30Very LowHighVery LowHighHigh
153636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowMediumVery LowHighHigh
253636584406BCREAM CUPID HEARTS COAT HANGER82010-12-01 08:26:002.7517850.0United Kingdom82124822.00Very LowHighVery LowHighHigh
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHigh
453636584029ERED WOOLLY HOTTIE WHITE HEART.62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHigh
.........................................................
9791654479522815CARD PSYCHEDELIC APPLES122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHigh
9791754479522028PENNY FARTHING BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHigh
9791854479522035VINTAGE CARAVAN GREETING CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowMediumHighHighHigh
9791954479522024RAINY LADIES BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHigh
9792054479685086ACANDY SPOT HEART DECORATION62011-02-23 13:37:000.8516208.0United Kingdom132285.10Very LowLowHighVery LowVery Low
\n", "

97921 rows × 18 columns

\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "... ... ... ... ... \n", "97916 544795 22815 CARD PSYCHEDELIC APPLES 12 \n", "97917 544795 22028 PENNY FARTHING BIRTHDAY CARD 12 \n", "97918 544795 22035 VINTAGE CARAVAN GREETING CARD 12 \n", "97919 544795 22024 RAINY LADIES BIRTHDAY CARD 12 \n", "97920 544796 85086A CANDY SPOT HEART DECORATION 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country hour \\\n", "0 2010-12-01 08:26:00 2.55 17850.0 United Kingdom 8 \n", "1 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "2 2010-12-01 08:26:00 2.75 17850.0 United Kingdom 8 \n", "3 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "4 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "... ... ... ... ... ... \n", "97916 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97917 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97918 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97919 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97920 2011-02-23 13:37:00 0.85 16208.0 United Kingdom 13 \n", "\n", " weekday month week total_sales peak_period_level \\\n", "0 2 12 48 15.30 Very Low \n", "1 2 12 48 20.34 Very Low \n", "2 2 12 48 22.00 Very Low \n", "3 2 12 48 20.34 Very Low \n", "4 2 12 48 20.34 Very Low \n", "... ... ... ... ... ... \n", "97916 2 2 8 5.04 Very Low \n", "97917 2 2 8 5.04 Very Low \n", "97918 2 2 8 5.04 Very Low \n", "97919 2 2 8 5.04 Very Low \n", "97920 2 2 8 5.10 Very Low \n", "\n", " overall_demand_level RecencySegment FrequencySegment MonetarySegment \n", "0 High Very Low High High \n", "1 Medium Very Low High High \n", "2 High Very Low High High \n", "3 High Very Low High High \n", "4 High Very Low High High \n", "... ... ... ... ... \n", "97916 High High High High \n", "97917 High High High High \n", "97918 Medium High High High \n", "97919 High High High High \n", "97920 Low High Very Low Very Low \n", "\n", "[97921 rows x 18 columns]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of unique country: 29\n" ] } ], "source": [ "unique_countries = df['Country'].nunique()\n", "\n", "print(f\"Number of unique country: {unique_countries}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "all_countries_stats = df.groupby('Country').agg(\n", " total_sales=('total_sales', 'sum'),\n", " avg_unit_price=('UnitPrice', 'mean')\n", ").reset_index()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Countrytotal_salesavg_unit_price
0Australia24333.432.945714
1Austria795.566.045172
2Bahrain205.743.810000
3Belgium4851.333.365914
4Channel Islands2823.826.497193
5Cyprus6472.567.339765
6Denmark1680.723.922500
7EIRE44186.194.295587
8Finland1781.825.223214
9France33870.523.326235
10Germany40044.333.548362
11Greece2661.246.480937
12Hong Kong2439.763.137895
13Iceland1187.182.712667
14Israel1158.943.558000
15Italy3470.013.801863
16Japan13485.881.897933
17Lebanon1693.885.387556
18Lithuania1661.062.841143
19Netherlands58407.552.094673
20Norway4418.022.080894
21Poland1465.433.008689
22Portugal7469.333.835271
23Singapore2053.074.702500
24Spain14044.323.849873
25Sweden7830.122.980556
26Switzerland6229.483.181064
27United Arab Emirates889.242.585667
28United Kingdom1665033.054.309626
\n", "
" ], "text/plain": [ " Country total_sales avg_unit_price\n", "0 Australia 24333.43 2.945714\n", "1 Austria 795.56 6.045172\n", "2 Bahrain 205.74 3.810000\n", "3 Belgium 4851.33 3.365914\n", "4 Channel Islands 2823.82 6.497193\n", "5 Cyprus 6472.56 7.339765\n", "6 Denmark 1680.72 3.922500\n", "7 EIRE 44186.19 4.295587\n", "8 Finland 1781.82 5.223214\n", "9 France 33870.52 3.326235\n", "10 Germany 40044.33 3.548362\n", "11 Greece 2661.24 6.480937\n", "12 Hong Kong 2439.76 3.137895\n", "13 Iceland 1187.18 2.712667\n", "14 Israel 1158.94 3.558000\n", "15 Italy 3470.01 3.801863\n", "16 Japan 13485.88 1.897933\n", "17 Lebanon 1693.88 5.387556\n", "18 Lithuania 1661.06 2.841143\n", "19 Netherlands 58407.55 2.094673\n", "20 Norway 4418.02 2.080894\n", "21 Poland 1465.43 3.008689\n", "22 Portugal 7469.33 3.835271\n", "23 Singapore 2053.07 4.702500\n", "24 Spain 14044.32 3.849873\n", "25 Sweden 7830.12 2.980556\n", "26 Switzerland 6229.48 3.181064\n", "27 United Arab Emirates 889.24 2.585667\n", "28 United Kingdom 1665033.05 4.309626" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_countries_stats" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "countries_excluding_uk_stats = all_countries_stats[all_countries_stats['Country'] != 'United Kingdom']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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RISioiIUFRWhatXie5Z79uzB+fPnYW5ujnHjxkFDQ0PkhEREpEpycnKwe/dubN26FVevXuXyPfooLEoRERERERER0XsJDw+Hn58fDhw4gPr168PV1RUDBgxAx44dxY5GFRCX7xERERERACA7OxuXLl1CZmYmioqKFM4NHz5cpFRERCS2jIwM+Pv7w8/PD8+ePcPAgQORn5+PoKAgWFpaih2PKjB2ShERERERgoODMWTIEOTm5kJHR0dhZyWJRIKsrCwR0xERkVicnZ0RHh4OJycnDBkyBPb29qhSpQrU1dURExPDohR9EhaliIiIiAjNmjWDo6Mjli1bhho1aogdh4iIVETVqlUxdepUTJgwAebm5vLjLErRv0FN7ABEREREJL579+5h6tSpLEgREZGCiIgI5OTkoH379ujUqRN8fHzwzz//iB2LPhMsShERERERevfujStXrogdg4iIVEznzp2xZcsWPHjwAOPGjcOePXtQv359FBUV4fTp08jJyRE7IlVgXL5HREREVEkdPnxY/udHjx5h0aJF+OGHH9CqVSuoq6srPLdv375CxyMiIhV18+ZN+Pn5YceOHcjOzkbPnj0V3lOI3heLUkRERESVlJra+zXNSyQSSKXSck5DREQVjVQqRXBwMLZt28aiFH0UFqWIiIiIiIiIiEhwnClFRERERERERESCY1GKiIiIqBI7c+YMLC0t8ezZM6VzT58+hZWVFcLDw0VIRkRERJ87FqWIiIiIKrH169djzJgx0NHRUTqnq6uLcePGYd26dSIkIyIios8di1JERERElVhMTAzs7e3fer5Xr164evWqgImIiIiosqgqdgAiIiIiEs/Dhw+hrq7+1vNVq1bFo0ePBExERESq4kN21Ovbt285JqHPFYtSRERERJVYgwYNcP36dTRt2rTU87GxsTAyMhI4FRERqQIXFxeFxxKJBDKZTOFxCalUKlQs+oxw+R4RERFRJebo6Ij58+fj5cuXSudevHgBT09P9OnTR4RkREQktqKiIvl/p06dQtu2bXH8+HFkZ2cjOzsbx44dg7W1NU6cOCF2VKqgJLLXy5xEREREVKk8fPgQ1tbWqFKlCiZPnozmzZsDABISEuDr6wupVIqoqCjUq1dP5KRERCSmli1bYtOmTfj6668Vjp87dw5jx45FfHy8SMmoIuPyPSIiIqJKrF69ejh//jwmTJiAn376Sb4sQyKRoHfv3vD19WVBioiIkJycDD09PaXjurq6SEtLEzwPfR7YKUVEREREAIAnT54gKSkJMpkM5ubm0NfXFzsSERGpiG7duqF69erYsWOH/GbFw4cPMXz4cLx8+RJhYWEiJ6SKiEUpIiIiIiIiIipTUlIS+vfvj1u3bsHY2BgAcOfOHZibmyMoKOitG2YQlYVFKSIiIiIiIiJ6J5lMhtOnTyMhIQEAYGFhATs7O4Vd+Ig+BItSRERERERERPTeXr58iWrVqrEYRZ9MTewARERERERERKTaioqKsHjxYjRo0ABaWlpITU0FAMyfPx9+fn4ip6OKikUpIiIiIiIiIirTkiVL4O/vj1WrVkFDQ0N+vGXLlti6dauIyagiY1GKiIiIiIiIiMoUGBiIzZs3Y8iQIahSpYr8eJs2beQzpog+FItSRERERERERFSme/fulbrDXlFREQoKCkRIRJ8DFqWIiIiIiIiIqEyWlpY4d+6c0vH9+/ejXbt2IiSiz0FVsQMQERERERERkWpbsGABRowYgXv37qGoqAgHDx7EzZs3ERgYiCNHjogdjyooiUwmk4kdgoiIiIiIiIhU27lz57Bo0SLExMQgNzcX1tbWWLBgAXr16iV2NKqgWJQiIiIiIiIiIiLBcaYUEREREREREZXJzMwMjx8/VjqenZ0NMzMzERLR54BFKSIiIiIiIiIqU1paGqRSqdLx/Px83Lt3T4RE9DngoHMiIiIiIiIiKtXhw4flfz558iR0dXXlj6VSKUJCQmBiYiJCMvoccKYUEREREREREZVKTa14gZVEIsGb5QN1dXWYmJhgzZo16NOnjxjxqIJjUYqIiIiIiIiIymRqaorLly+jTp06YkehzwiLUkREREREREREJDjOlCIiIiIiIiIiJd7e3hg7diyqV68Ob2/vMp87depUgVLR54SdUkRERERERESkxNTUFFeuXEHt2rVhamr61udJJBKkpKQImIw+FyxKERERERERERGR4NTEDkBERERERERERJUPZ0oRERERERERUZmkUin8/f0REhKCzMxMFBUVKZw/c+aMSMmoImNRioiIiIiIiIjK9OOPP8Lf3x9OTk5o2bIlJBKJ2JHoM8CZUkRERERERERUpjp16iAwMBCOjo5iR6HPCGdKEREREREREVGZNDQ00LRpU7Fj0GeGRSkiIiIiIiIiKpO7uzs2bNgALraifxOX7xERERERERFRmfr374+zZ8+iVq1asLKygrq6usL5gwcPipSMKjIOOiciIiIiIiKiMunp6aF///5ix6DPDDuliIiIiIiIiIhIcJwpRUREREREREREguPyPSIiIiIiIiIqlb6+PiQSidJxXV1dNGvWDDNnzkTPnj1FSEafAy7fIyIiIiIiIqJSBQQElHo8OzsbV69exd69e7F//344OzsLnIw+ByxKEREREREREdFHWbt2Lfbv34/z58+LHYUqIBaliIiIiIiIiOij3Lp1C507d0ZWVpbYUagC4qBzIiIiIiIiIvoo+fn50NDQEDsGVVAsShERERERERHRR/Hz80Pbtm3FjkEVFHffIyIiIiIiIqJSzZgxo9TjT58+RVRUFG7duoXw8HCBU9HngkUpIiIiIiIiIipVdHR0qcd1dHTQs2dPHDx4EKampgKnos8FB50TEREREREREZHgOFOKiIiIiIiIiIgEx6IUEREREREREREJjkUpIiIiIiIiIiISHItSREREREREREQkOBaliIiIiIiIiIhIcCxKERERERERERGR4FiUIiIiIhJQRkYGpkyZAjMzM1SrVg3GxsZwdnZGSEiIoDkkEgmCgoIEfU0iIiKi11UVOwARERFRZZGWloYuXbpAT08Pq1evRqtWrVBQUICTJ09i0qRJSEhIEDuiglevXkFDQ0PsGERERPSZYqcUERERkUAmTpwIiUSCS5cuYcCAAWjWrBmsrKwwY8YMXLx4EQCQnp6Ofv36QUtLCzo6Ohg4cCAePnwo/zvc3Nzg4uKi8PdOmzYNtra28se2traYOnUqZs+ejVq1asHQ0BALFy6UnzcxMQEA9O/fHxKJRP544cKFaNu2LbZu3QpTU1NUr14dgYGBqF27NvLz8xVe08XFBcOGDfvXvjZERERU+bAoRURERCSArKwsnDhxApMmTULNmjWVzuvp6aGoqAj9+vVDVlYWwsLCcPr0aaSkpGDQoEEf/HoBAQGoWbMm/vrrL6xatQqLFi3C6dOnAQCXL18GAGzfvh0PHjyQPwaApKQkHDhwAAcPHsS1a9fw3XffQSqV4vDhw/LnZGZm4ujRoxg5cuQH5yIiIiIqweV7RERERAJISkqCTCZDixYt3vqckJAQxMXFITU1FcbGxgCAwMBAWFlZ4fLly+jYseN7v17r1q3h6ekJADA3N4ePjw9CQkLQs2dPGBgYACguhBkaGir8f69evUJgYKD8OQAwePBgbN++Hd999x0AYOfOnWjUqJFCdxYRERHRh2KnFBEREZEAZDLZO58THx8PY2NjeUEKACwtLaGnp4f4+PgPer3WrVsrPDYyMkJmZuY7/7/GjRsrFKQAYMyYMTh16hTu3bsHAPD394ebmxskEskHZSIiIiJ6HTuliIiIiARgbm4OiUTyycPM1dTUlApcBQUFSs9TV1dXeCyRSFBUVPTOv7+0pYXt2rVDmzZtEBgYiF69euHvv//G0aNHPzA5ERERkSJ2ShEREREJoFatWujduzd8fX2Rl5endD47OxsWFha4c+cO7ty5Iz9+48YNZGdnw9LSEgBgYGCABw8eKPy/165d++A86urqkEql7/380aNHw9/fH9u3b4ednZ1CNxcRERHRx2BRioiIiEggvr6+kEql+OKLL3DgwAEkJiYiPj4e3t7e+PLLL2FnZ4dWrVphyJAhiIqKwqVLlzB8+HDY2NigQ4cOAIDu3bvjypUrCAwMRGJiIjw9PXH9+vUPzmJiYoKQkBBkZGTgyZMn73z+4MGDcffuXWzZsoUDzomIiOhfwaIUERERkUDMzMwQFRWFb775Bu7u7mjZsiV69uyJkJAQ/Prrr5BIJDh06BD09fXRrVs32NnZwczMDHv37pX/Hb1798b8+fMxe/ZsdOzYETk5ORg+fPgHZ1mzZg1Onz4NY2NjtGvX7p3P19XVxYABA6ClpQUXF5cPfj0iIiKiN0lk7zN1k4iIiIgqvR49esDKygre3t5iRyEiIqLPAItSRERERFSmJ0+eIDQ0FN9++y1u3LiB5s2bix2JiIiIPgPcfY+IiIiIytSuXTs8efIEK1euZEGKiIiI/jXslCIiIiIiIiIiIsFx0DkREREREREREQmORSkiIiIiIiIiIhIci1JERERERERERCQ4FqWIiIiIiIiIiEhwLEoREREREREREZHgWJQiIiIiIiIiIiLBsShFRERERERERESCY1GKiIiIiIiIiIgEx6IUEREREREREREJ7v8BvwrYycBg+kwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 6))\n", "country_stats_sorted = countries_excluding_uk_stats.sort_values('total_sales', ascending=False)\n", "plt.bar(country_stats_sorted['Country'], country_stats_sorted['total_sales'], color='skyblue')\n", "plt.xticks(rotation=90)\n", "plt.title('Total Sales by Country')\n", "plt.xlabel('Country')\n", "plt.ylabel('Total Sales')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "high_demand_threshold_excluding_uk = np.percentile(countries_excluding_uk_stats['total_sales'], 80) # Top 20% sales\n", "low_demand_threshold_excluding_uk = np.percentile(countries_excluding_uk_stats['total_sales'], 20) # Bottom 20% sales" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "high_demand_threshold_including_uk = np.percentile(all_countries_stats['total_sales'], 80) # Top 20% sales\n", "low_demand_threshold_including_uk = np.percentile(all_countries_stats['total_sales'], 20) # Bottom 20% sales" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1543.682" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low_demand_threshold_excluding_uk" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1582.808" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low_demand_threshold_including_uk" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13820.944" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "high_demand_threshold_excluding_uk" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1543.682" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low_demand_threshold_excluding_uk" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def demand_level(country, total_sales):\n", " high_threshold, low_threshold = (\n", " (high_demand_threshold_including_uk, low_demand_threshold_including_uk)\n", " if country == 'United Kingdom'\n", " else (high_demand_threshold_excluding_uk, low_demand_threshold_excluding_uk)\n", " )\n", " return 'High' if total_sales > high_threshold else 'Low' if total_sales < low_threshold else 'Medium'\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "all_countries_stats['country_purchasing_power'] = all_countries_stats.apply(\n", " lambda x: demand_level(x['Country'], x['total_sales']), axis=1\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = df.merge(all_countries_stats[['Country', 'country_purchasing_power']], on='Country', how='left')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryhourweekdaymonthweektotal_salespeak_period_leveloverall_demand_levelRecencySegmentFrequencySegmentMonetarySegmentcountry_purchasing_power
053636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:002.5517850.0United Kingdom82124815.30Very LowHighVery LowHighHighHigh
153636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowMediumVery LowHighHighHigh
253636584406BCREAM CUPID HEARTS COAT HANGER82010-12-01 08:26:002.7517850.0United Kingdom82124822.00Very LowHighVery LowHighHighHigh
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHighHigh
453636584029ERED WOOLLY HOTTIE WHITE HEART.62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHighHigh
\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country hour weekday \\\n", "0 2010-12-01 08:26:00 2.55 17850.0 United Kingdom 8 2 \n", "1 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "2 2010-12-01 08:26:00 2.75 17850.0 United Kingdom 8 2 \n", "3 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "4 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "\n", " month week total_sales peak_period_level overall_demand_level \\\n", "0 12 48 15.30 Very Low High \n", "1 12 48 20.34 Very Low Medium \n", "2 12 48 22.00 Very Low High \n", "3 12 48 20.34 Very Low High \n", "4 12 48 20.34 Very Low High \n", "\n", " RecencySegment FrequencySegment MonetarySegment country_purchasing_power \n", "0 Very Low High High High \n", "1 Very Low High High High \n", "2 Very Low High High High \n", "3 Very Low High High High \n", "4 Very Low High High High " ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " StockCode Country total_sales\n", "0 10002 EIRE 10.20\n", "1 10002 France 1499.40\n", "2 10002 Germany 0.85\n", "3 10002 Japan 0.85\n", "4 10002 Spain 20.40\n", "... ... ... ...\n", "7605 gift_0001_20 United Kingdom 151.08\n", "7606 gift_0001_30 United Kingdom 226.59\n", "7607 gift_0001_40 United Kingdom 34.04\n", "7608 gift_0001_50 United Kingdom 42.55\n", "7609 m United Kingdom 2.55\n", "\n", "[7610 rows x 3 columns]\n" ] } ], "source": [ "import pandas as pd\n", "\n", "grouped_data = df.groupby(['StockCode', 'Country'])\n", "\n", "grouped_sales = grouped_data['Quantity'].sum() * grouped_data['UnitPrice'].sum()\n", "\n", "order_intensity = grouped_sales.reset_index(name='total_sales')\n", "\n", "print(order_intensity)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "grouped_sales = df.groupby(['StockCode', 'Country'])['total_sales'].sum().reset_index()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def calculate_thresholds(group):\n", " # Compute thresholds for the product across countries\n", " thresholds = {\n", " 'very_low_threshold': group['total_sales'].quantile(0.10),\n", " 'low_threshold': group['total_sales'].quantile(0.25),\n", " 'medium_threshold': group['total_sales'].quantile(0.50),\n", " 'high_threshold': group['total_sales'].quantile(0.75),\n", " 'very_high_threshold': group['total_sales'].quantile(0.90),\n", " }\n", " return pd.Series(thresholds)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_31502/2870278470.py:1: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", " thresholds = grouped_sales.groupby('StockCode').apply(calculate_thresholds).reset_index()\n" ] } ], "source": [ "thresholds = grouped_sales.groupby('StockCode').apply(calculate_thresholds).reset_index()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "grouped_sales = grouped_sales.merge(thresholds, on='StockCode')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StockCodeCountrytotal_salesvery_low_thresholdlow_thresholdmedium_thresholdhigh_thresholdvery_high_threshold
010002EIRE10.200.855.52510.20117.30246.296
110002France214.200.855.52510.20117.30246.296
210002Germany0.850.855.52510.20117.30246.296
310002Japan0.850.855.52510.20117.30246.296
410002Spain20.400.855.52510.20117.30246.296
...........................
7605gift_0001_20United Kingdom50.3650.3650.36050.3650.3650.360
7606gift_0001_30United Kingdom75.5375.5375.53075.5375.5375.530
7607gift_0001_40United Kingdom34.0434.0434.04034.0434.0434.040
7608gift_0001_50United Kingdom42.5542.5542.55042.5542.5542.550
7609mUnited Kingdom2.552.552.5502.552.552.550
\n", "

7610 rows × 8 columns

\n", "
" ], "text/plain": [ " StockCode Country total_sales very_low_threshold \\\n", "0 10002 EIRE 10.20 0.85 \n", "1 10002 France 214.20 0.85 \n", "2 10002 Germany 0.85 0.85 \n", "3 10002 Japan 0.85 0.85 \n", "4 10002 Spain 20.40 0.85 \n", "... ... ... ... ... \n", "7605 gift_0001_20 United Kingdom 50.36 50.36 \n", "7606 gift_0001_30 United Kingdom 75.53 75.53 \n", "7607 gift_0001_40 United Kingdom 34.04 34.04 \n", "7608 gift_0001_50 United Kingdom 42.55 42.55 \n", "7609 m United Kingdom 2.55 2.55 \n", "\n", " low_threshold medium_threshold high_threshold very_high_threshold \n", "0 5.525 10.20 117.30 246.296 \n", "1 5.525 10.20 117.30 246.296 \n", "2 5.525 10.20 117.30 246.296 \n", "3 5.525 10.20 117.30 246.296 \n", "4 5.525 10.20 117.30 246.296 \n", "... ... ... ... ... \n", "7605 50.360 50.36 50.36 50.360 \n", "7606 75.530 75.53 75.53 75.530 \n", "7607 34.040 34.04 34.04 34.040 \n", "7608 42.550 42.55 42.55 42.550 \n", "7609 2.550 2.55 2.55 2.550 \n", "\n", "[7610 rows x 8 columns]" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped_sales" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def assign_level(row):\n", " if row['total_sales'] <= row['very_low_threshold']:\n", " return 'Very Low'\n", " elif row['total_sales'] <= row['low_threshold']:\n", " return 'Low'\n", " elif row['total_sales'] <= row['medium_threshold']:\n", " return 'Medium'\n", " elif row['total_sales'] <= row['high_threshold']:\n", " return 'High'\n", " else:\n", " return 'Very High'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "grouped_sales['sales_level_by_country'] = grouped_sales.apply(assign_level, axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StockCodeCountrytotal_salesvery_low_thresholdlow_thresholdmedium_thresholdhigh_thresholdvery_high_thresholdsales_level_by_country
010002EIRE10.200.855.52510.20117.30246.296Medium
110002France214.200.855.52510.20117.30246.296Very High
210002Germany0.850.855.52510.20117.30246.296Very Low
310002Japan0.850.855.52510.20117.30246.296Very Low
410002Spain20.400.855.52510.20117.30246.296High
..............................
7605gift_0001_20United Kingdom50.3650.3650.36050.3650.3650.360Very Low
7606gift_0001_30United Kingdom75.5375.5375.53075.5375.5375.530Very Low
7607gift_0001_40United Kingdom34.0434.0434.04034.0434.0434.040Very Low
7608gift_0001_50United Kingdom42.5542.5542.55042.5542.5542.550Very Low
7609mUnited Kingdom2.552.552.5502.552.552.550Very Low
\n", "

7610 rows × 9 columns

\n", "
" ], "text/plain": [ " StockCode Country total_sales very_low_threshold \\\n", "0 10002 EIRE 10.20 0.85 \n", "1 10002 France 214.20 0.85 \n", "2 10002 Germany 0.85 0.85 \n", "3 10002 Japan 0.85 0.85 \n", "4 10002 Spain 20.40 0.85 \n", "... ... ... ... ... \n", "7605 gift_0001_20 United Kingdom 50.36 50.36 \n", "7606 gift_0001_30 United Kingdom 75.53 75.53 \n", "7607 gift_0001_40 United Kingdom 34.04 34.04 \n", "7608 gift_0001_50 United Kingdom 42.55 42.55 \n", "7609 m United Kingdom 2.55 2.55 \n", "\n", " low_threshold medium_threshold high_threshold very_high_threshold \\\n", "0 5.525 10.20 117.30 246.296 \n", "1 5.525 10.20 117.30 246.296 \n", "2 5.525 10.20 117.30 246.296 \n", "3 5.525 10.20 117.30 246.296 \n", "4 5.525 10.20 117.30 246.296 \n", "... ... ... ... ... \n", "7605 50.360 50.36 50.36 50.360 \n", "7606 75.530 75.53 75.53 75.530 \n", "7607 34.040 34.04 34.04 34.040 \n", "7608 42.550 42.55 42.55 42.550 \n", "7609 2.550 2.55 2.55 2.550 \n", "\n", " sales_level_by_country \n", "0 Medium \n", "1 Very High \n", "2 Very Low \n", "3 Very Low \n", "4 High \n", "... ... \n", "7605 Very Low \n", "7606 Very Low \n", "7607 Very Low \n", "7608 Very Low \n", "7609 Very Low \n", "\n", "[7610 rows x 9 columns]" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grouped_sales" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = df.merge(grouped_sales[['StockCode', 'Country', 'sales_level_by_country']],on=['StockCode','Country'],how='left')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryhourweekdaymonthweektotal_salespeak_period_leveloverall_demand_levelRecencySegmentFrequencySegmentMonetarySegmentcountry_purchasing_powersales_level_by_country
053636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:002.5517850.0United Kingdom82124815.30Very LowHighVery LowHighHighHighVery High
153636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowMediumVery LowHighHighHighVery High
253636584406BCREAM CUPID HEARTS COAT HANGER82010-12-01 08:26:002.7517850.0United Kingdom82124822.00Very LowHighVery LowHighHighHighVery High
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHighHighVery High
453636584029ERED WOOLLY HOTTIE WHITE HEART.62010-12-01 08:26:003.3917850.0United Kingdom82124820.34Very LowHighVery LowHighHighHighVery High
...............................................................
9791654479522815CARD PSYCHEDELIC APPLES122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHighHighVery High
9791754479522028PENNY FARTHING BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHighHighVery High
9791854479522035VINTAGE CARAVAN GREETING CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowMediumHighHighHighHighVery High
9791954479522024RAINY LADIES BIRTHDAY CARD122011-02-23 13:21:000.4215858.0United Kingdom132285.04Very LowHighHighHighHighHighVery High
9792054479685086ACANDY SPOT HEART DECORATION62011-02-23 13:37:000.8516208.0United Kingdom132285.10Very LowLowHighVery LowVery LowHighVery Low
\n", "

97921 rows × 20 columns

\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "... ... ... ... ... \n", "97916 544795 22815 CARD PSYCHEDELIC APPLES 12 \n", "97917 544795 22028 PENNY FARTHING BIRTHDAY CARD 12 \n", "97918 544795 22035 VINTAGE CARAVAN GREETING CARD 12 \n", "97919 544795 22024 RAINY LADIES BIRTHDAY CARD 12 \n", "97920 544796 85086A CANDY SPOT HEART DECORATION 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country hour \\\n", "0 2010-12-01 08:26:00 2.55 17850.0 United Kingdom 8 \n", "1 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "2 2010-12-01 08:26:00 2.75 17850.0 United Kingdom 8 \n", "3 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "4 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 \n", "... ... ... ... ... ... \n", "97916 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97917 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97918 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97919 2011-02-23 13:21:00 0.42 15858.0 United Kingdom 13 \n", "97920 2011-02-23 13:37:00 0.85 16208.0 United Kingdom 13 \n", "\n", " weekday month week total_sales peak_period_level \\\n", "0 2 12 48 15.30 Very Low \n", "1 2 12 48 20.34 Very Low \n", "2 2 12 48 22.00 Very Low \n", "3 2 12 48 20.34 Very Low \n", "4 2 12 48 20.34 Very Low \n", "... ... ... ... ... ... \n", "97916 2 2 8 5.04 Very Low \n", "97917 2 2 8 5.04 Very Low \n", "97918 2 2 8 5.04 Very Low \n", "97919 2 2 8 5.04 Very Low \n", "97920 2 2 8 5.10 Very Low \n", "\n", " overall_demand_level RecencySegment FrequencySegment MonetarySegment \\\n", "0 High Very Low High High \n", "1 Medium Very Low High High \n", "2 High Very Low High High \n", "3 High Very Low High High \n", "4 High Very Low High High \n", "... ... ... ... ... \n", "97916 High High High High \n", "97917 High High High High \n", "97918 Medium High High High \n", "97919 High High High High \n", "97920 Low High Very Low Very Low \n", "\n", " country_purchasing_power sales_level_by_country \n", "0 High Very High \n", "1 High Very High \n", "2 High Very High \n", "3 High Very High \n", "4 High Very High \n", "... ... ... \n", "97916 High Very High \n", "97917 High Very High \n", "97918 High Very High \n", "97919 High Very High \n", "97920 High Very Low \n", "\n", "[97921 rows x 20 columns]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'peak_period_level': ['Very Low', 'Low', 'Medium', 'High'], 'overall_demand_level': ['High', 'Medium', 'Low'], 'RecencySegment': ['Very Low', 'Medium', 'High', 'Low', nan], 'FrequencySegment': ['High', 'Medium', 'Very Low', 'Low', nan], 'MonetarySegment': ['High', 'Medium', 'Very Low', 'Low', nan], 'country_purchasing_power': ['High', 'Medium', 'Low'], 'sales_level_by_country': ['Very High', 'Very Low', 'High', 'Medium', 'Low']}\n" ] } ], "source": [ "# Specify the columns you are interested in\n", "columns_of_interest = ['peak_period_level', 'overall_demand_level','RecencySegment','FrequencySegment','MonetarySegment','country_purchasing_power','sales_level_by_country']\n", "\n", "# Get unique values for specified columns only\n", "unique_values = {col: df[col].unique().tolist() for col in columns_of_interest}\n", "\n", "print(unique_values)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def adjust_unit_price(row):\n", " price_adjustment = 0\n", "\n", " # Adjust based on 'peak_period_level'\n", " if row['peak_period_level'] == 'High':\n", " price_adjustment += 0.10 # 10% increase\n", " elif row['peak_period_level'] == 'Very High':\n", " price_adjustment += 0.20 # 20% increase\n", " elif row['peak_period_level'] == 'Low':\n", " price_adjustment -= 0.05 # 5% decrease\n", " elif row['peak_period_level'] == 'Very Low':\n", " price_adjustment -= 0.10 # 10% decrease\n", "\n", " # Adjust based on 'overall_demand_level'\n", " if row['overall_demand_level'] == 'High':\n", " price_adjustment += 0.15 # 15% increase\n", " elif row['overall_demand_level'] == 'Medium':\n", " price_adjustment += 0.05 # 5% increase\n", " elif row['overall_demand_level'] == 'Low':\n", " price_adjustment -= 0.10 # 10% decrease\n", "\n", " # Adjust based on 'RecencySegment'\n", " if row['RecencySegment'] == 'High':\n", " price_adjustment += 0.05 # 5% increase\n", " elif row['RecencySegment'] == 'Medium':\n", " price_adjustment += 0.03 # 3% increase\n", " elif row['RecencySegment'] == 'Low' or row['RecencySegment'] == 'Very Low':\n", " price_adjustment -= 0.05 # 5% decrease\n", "\n", " # Adjust based on 'FrequencySegment'\n", " if row['FrequencySegment'] == 'High':\n", " price_adjustment += 0.10 # 10% increase\n", " elif row['FrequencySegment'] == 'Medium':\n", " price_adjustment += 0.05 # 5% increase\n", " elif row['FrequencySegment'] == 'Low' or row['FrequencySegment'] == 'Very Low':\n", " price_adjustment -= 0.05 # 5% decrease\n", "\n", " # Adjust based on 'MonetarySegment'\n", " if row['MonetarySegment'] == 'High':\n", " price_adjustment += 0.10 # 10% increase\n", " elif row['MonetarySegment'] == 'Medium':\n", " price_adjustment += 0.05 # 5% increase\n", " elif row['MonetarySegment'] == 'Low' or row['MonetarySegment'] == 'Very Low':\n", " price_adjustment -= 0.05 # 5% decrease\n", "\n", " # Adjust based on 'country_purchasing_power'\n", " if row['country_purchasing_power'] == 'High':\n", " price_adjustment += 0.08 # 8% increase\n", " elif row['country_purchasing_power'] == 'Medium':\n", " price_adjustment += 0.04 # 4% increase\n", " elif row['country_purchasing_power'] == 'Low':\n", " price_adjustment -= 0.08 # 8% decrease\n", "\n", " # Adjust based on 'sales_level_by_country'\n", " if row['sales_level_by_country'] == 'Very High':\n", " price_adjustment += 0.15 # 15% increase\n", " elif row['sales_level_by_country'] == 'High':\n", " price_adjustment += 0.12 # 12% increase\n", " elif row['sales_level_by_country'] == 'Medium':\n", " price_adjustment += 0.05 # 5% increase\n", " elif row['sales_level_by_country'] == 'Low':\n", " price_adjustment -= 0.10 # 10% decrease\n", " elif row['sales_level_by_country'] == 'Very Low':\n", " price_adjustment -= 0.15 # 15% decrease\n", "\n", " # Apply the adjustment to the unit price\n", " new_unit_price = row['UnitPrice'] * (1 + price_adjustment)\n", "\n", " return new_unit_price\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df['adjusted_unit_price'] = df.apply(adjust_unit_price, axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryhourweekday...weektotal_salespeak_period_leveloverall_demand_levelRecencySegmentFrequencySegmentMonetarySegmentcountry_purchasing_powersales_level_by_countryadjusted_unit_price
053636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:002.5517850.0United Kingdom82...4815.30Very LowHighVery LowHighHighHighVery High3.6465
153636571053WHITE METAL LANTERN62010-12-01 08:26:003.3917850.0United Kingdom82...4820.34Very LowMediumVery LowHighHighHighVery High4.5087
253636584406BCREAM CUPID HEARTS COAT HANGER82010-12-01 08:26:002.7517850.0United Kingdom82...4822.00Very LowHighVery LowHighHighHighVery High3.9325
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:003.3917850.0United Kingdom82...4820.34Very LowHighVery LowHighHighHighVery High4.8477
453636584029ERED WOOLLY HOTTIE WHITE HEART.62010-12-01 08:26:003.3917850.0United Kingdom82...4820.34Very LowHighVery LowHighHighHighVery High4.8477
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " InvoiceNo StockCode Description Quantity \\\n", "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", "1 536365 71053 WHITE METAL LANTERN 6 \n", "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", "\n", " InvoiceDate UnitPrice CustomerID Country hour weekday \\\n", "0 2010-12-01 08:26:00 2.55 17850.0 United Kingdom 8 2 \n", "1 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "2 2010-12-01 08:26:00 2.75 17850.0 United Kingdom 8 2 \n", "3 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "4 2010-12-01 08:26:00 3.39 17850.0 United Kingdom 8 2 \n", "\n", " ... week total_sales peak_period_level overall_demand_level \\\n", "0 ... 48 15.30 Very Low High \n", "1 ... 48 20.34 Very Low Medium \n", "2 ... 48 22.00 Very Low High \n", "3 ... 48 20.34 Very Low High \n", "4 ... 48 20.34 Very Low High \n", "\n", " RecencySegment FrequencySegment MonetarySegment country_purchasing_power \\\n", "0 Very Low High High High \n", "1 Very Low High High High \n", "2 Very Low High High High \n", "3 Very Low High High High \n", "4 Very Low High High High \n", "\n", " sales_level_by_country adjusted_unit_price \n", "0 Very High 3.6465 \n", "1 Very High 4.5087 \n", "2 Very High 3.9325 \n", "3 Very High 4.8477 \n", "4 Very High 4.8477 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "categorical_features = ['peak_period_level', 'overall_demand_level', 'RecencySegment', \n", " 'FrequencySegment', 'MonetarySegment', 'country_purchasing_power', 'sales_level_by_country']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "label_encoders = {}\n", "for col in categorical_features:\n", " le = LabelEncoder()\n", " df[col] = le.fit_transform(df[col])\n", " label_encoders[col] = le" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "\n", "numeric_cols = ['Quantity', 'UnitPrice', 'adjusted_unit_price', 'total_sales']\n", "df[numeric_cols] = scaler.fit_transform(df[numeric_cols])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X = df[categorical_features + ['UnitPrice', 'Quantity']]\n", "y = df['adjusted_unit_price']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RandomForestRegressor(random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestRegressor(random_state=42)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = RandomForestRegressor(n_estimators=100, random_state=42)\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean Squared Error: 0.0002141472429855384\n", "R^2 Score: 0.9980163288452965\n" ] } ], "source": [ "mse = mean_squared_error(y_test, y_pred)\n", "r2 = r2_score(y_test, y_pred)\n", "print(f\"Mean Squared Error: {mse}\")\n", "print(f\"R^2 Score: {r2}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Feature Importances:\n", " Feature Importance\n", "7 UnitPrice 0.987908\n", "6 sales_level_by_country 0.010262\n", "0 peak_period_level 0.001191\n", "4 MonetarySegment 0.000198\n", "3 FrequencySegment 0.000179\n", "2 RecencySegment 0.000124\n", "1 overall_demand_level 0.000087\n", "8 Quantity 0.000037\n", "5 country_purchasing_power 0.000014\n" ] } ], "source": [ "feature_importance = pd.DataFrame({\n", " 'Feature': X.columns,\n", " 'Importance': model.feature_importances_\n", "}).sort_values(by='Importance', ascending=False)\n", "\n", "print(\"Feature Importances:\")\n", "print(feature_importance)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAf95JREFUeJzs3Xt8z/X///H7e2Pnk2GYMGdTzqeQCDUqTQqxnA8pPpKUJIeRQyIpUVGbfJw6SEWRZGhUDjNiOcyGfIgcNsM2tufvDz/vb+82bMvLjNv1cnlfLns9X8/X8/V4vfZW7/uer9frbTPGGAEAAAAAgBvOKb8LAAAAAADgdkXoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAHBNkZGRstls2b5eeeUVS/a5ceNGjR07VmfOnLFk/H/jyvnYsmVLfpeSZ7NmzVJkZGR+lwEAd4RC+V0AAAAoGMaNG6fy5cs7tN1zzz2W7Gvjxo0KDw9Xz5495efnZ8k+7mSzZs1SsWLF1LNnz/wuBQBue4RuAACQI23btlX9+vXzu4x/5dy5c/L09MzvMvLN+fPn5eHhkd9lAMAdhcvLAQDADfHdd9+pWbNm8vT0lLe3tx555BHt2rXLoc+OHTvUs2dPVahQQW5ubipZsqR69+6tkydP2vuMHTtWL730kiSpfPny9kvZExMTlZiYKJvNlu2l0TabTWPHjnUYx2azaffu3eratauKFCmi++67z77+v//9r+rVqyd3d3f5+/vrqaee0uHDh/N07D179pSXl5cOHTqkRx99VF5eXipdurTee+89SdLOnTvVsmVLeXp6qly5clq4cKHD9lcuWV+/fr2eeeYZFS1aVD4+PurevbtOnz6dZX+zZs3S3XffLVdXVwUGBmrgwIFZLsVv0aKF7rnnHm3dulX333+/PDw89OqrryooKEi7du3SunXr7Oe2RYsWkqRTp05p2LBhqlGjhry8vOTj46O2bdsqNjbWYeyoqCjZbDZ9+umnmjBhgu666y65ubmpVatW2r9/f5Z6f/nlFz388MMqUqSIPD09VbNmTc2YMcOhz++//64nn3xS/v7+cnNzU/369fX111/n9lcBALccZroBAECOJCUl6a+//nJoK1asmCRp/vz56tGjh0JCQvTGG2/o/Pnzmj17tu677z7FxMQoKChIkrR69WodOHBAvXr1UsmSJbVr1y59+OGH2rVrl37++WfZbDZ16NBBe/fu1aJFizR9+nT7PooXL64TJ07kuu6OHTuqcuXKmjhxoowxkqQJEyZo1KhR6tSpk/r27asTJ07o3Xff1f3336+YmJg8XdKekZGhtm3b6v7779eUKVO0YMECDRo0SJ6enho5cqTCwsLUoUMHvf/+++revbsaN26c5XL9QYMGyc/PT2PHjtWePXs0e/ZsHTx40B5ypct/TAgPD1fr1q317LPP2vtt3rxZ0dHRKly4sH28kydPqm3btnrqqaf09NNPq0SJEmrRooX+85//yMvLSyNHjpQklShRQpJ04MABLVu2TB07dlT58uX1559/6oMPPlDz5s21e/duBQYGOtQ7efJkOTk5adiwYUpKStKUKVMUFhamX375xd5n9erVevTRR1WqVCk9//zzKlmypOLi4rR8+XI9//zzkqRdu3apadOmKl26tF555RV5enrq008/Vfv27fXFF1/o8ccfz/XvAwBuGQYAAOAaIiIijKRsX8YYc/bsWePn52f69evnsN2xY8eMr6+vQ/v58+ezjL9o0SIjyaxfv97e9uabbxpJJiEhwaFvQkKCkWQiIiKyjCPJjBkzxr48ZswYI8l06dLFoV9iYqJxdnY2EyZMcGjfuXOnKVSoUJb2q52PzZs329t69OhhJJmJEyfa206fPm3c3d2NzWYzixcvtrf//vvvWWq9Mma9evVMenq6vX3KlClGkvnqq6+MMcYcP37cuLi4mIceeshkZGTY+82cOdNIMh9//LG9rXnz5kaSef/997Mcw913322aN2+epT01NdVhXGMun3NXV1czbtw4e9vatWuNJBMcHGzS0tLs7TNmzDCSzM6dO40xxly6dMmUL1/elCtXzpw+fdph3MzMTPvPrVq1MjVq1DCpqakO65s0aWIqV66cpU4AKEi4vBwAAOTIe++9p9WrVzu8pMszmWfOnFGXLl30119/2V/Ozs5q1KiR1q5dax/D3d3d/nNqaqr++usv3XvvvZKkbdu2WVL3gAEDHJaXLl2qzMxMderUyaHekiVLqnLlyg715lbfvn3tP/v5+alq1ary9PRUp06d7O1Vq1aVn5+fDhw4kGX7/v37O8xUP/vs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+v777xUVFaVt27blar8XL15USEiIvL29tWHDBkVHR8vLy0tt2rRRenq6vd/atWsVHx+vtWvXat68eYqMjHQI7t27d9eiRYv0zjvvKC4uTh988IG8vLxks9nUu3fvLLP7ERERuv/++1WpUiWVLFlSly5d0pdffqmrPTA/J+dj6NChio6O1tdff63Vq1drw4YN2Z6P6dOnq2nTpoqJidEjjzyibt26qXv37nr66ae1bds2VaxYUd27d7fXEh8frzZt2uiJJ57Qjh07tGTJEv30008aNGiQw7jTpk1T/fr1FRMTo+eee07PPvus9uzZI0n69ddfJUk//PCDjh49qqVLl+bitwQAAADgtmTyIDw83Jw7dy5L+/nz5014eHhehrxt9OjRwzg7OxtPT0/768knnzTNmzc3derUceg7fvx489BDDzm0HT582Egye/bsMWfPnjUuLi7m008/ta8/efKkcXd3N88//7y9TZL58ssvHcbx9fU1ERERxhhj5s+fb6pWrWoyMzPt69PS0oy7u7tZtWqVve5y5cqZS5cu2ft07NjRdO7c2RhjzJ49e4wks3r16myP+8iRI8bZ2dn88ssvxhhj0tPTTbFixUxkZKS9z6uvvmoKFSpk/P39TZs2bcyUKVPMsWPHcnw+kpOTTeHChc1nn31mX3/mzBnj4eHhcD7KlStnnn76afvy0aNHjSQzatQoe9umTZuMJHP06FFjjDF9+vQx/fv3d9j3hg0bjJOTk7lw4UK242ZmZpqAgAAze/ZsY4wxCQkJRpKJiYnJ9hxdkZqaapKSkuyvK8eYlJR0ze0AAAAA3DqSkpJy9Dk+TzPd4eHhSklJydJ+/vx5hYeH5zX/3zYeeOABbd++3f565513JEn16tVz6BcbG6u1a9fKy8vL/qpWrZqkyzOv8fHxSk9PV6NGjezb+Pv7q2rVqrmqJzY2Vvv375e3t7d9P/7+/kpNTVV8fLy939133y1nZ2f7cqlSpewPOdu+fbucnZ3VvHnzbPcRGBioRx55xH57wTfffKO0tDR17NjR3mfChAk6duyY3n//fd199916//33Va1aNe3cuTNH5+PAgQO6ePGiGjZsaB/T19c32/NRs2ZN+88lSpSQJNWoUSNL25Xji42NVWRkpMO+Q0JClJmZqYSEhGzHtdlsKlmyZK4fBDdp0iT5+vraX2XKlMnV9gAA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tm7dmuWc/D2oZzeGMSZXtUnSiBEjNHToUPtycnKyypQpk+txAAAAANz6CN23ICcnJ7366qsaOnSo9u7dK1dXVx06dEjNmzfPtn/NmjU1b948Xbx4MUswLFGihAIDA3XgwAGFhYXluaaaNWtqzZo115yh7du3r95++20dOXJErVu3vm6QrF69uqTLs/HVq1e/7nFWrVpV3377rUPb5s2bc3kkWdWpU0cZGRk6fvy4mjVrludxXFxcHB7OdjWurq65/kMCAAAAgIKJB6ndojp27ChnZ2d98MEHGjZsmF544QXNmzdP8fHx2rZtm9599137g9AGDRqk5ORkPfXUU9qyZYv27dun+fPna8+ePZIuf13XpEmT9M4772jv3r3auXOnIiIi9NZbb+W4nhEjRmjz5s167rnntGPHDv3++++aPXu2/vrrL3ufrl276o8//tCcOXPsD1C74sknn9T06dP1yy+/6ODBg4qKitLAgQNVpUoVVatWTd7e3tc9zmeeeUa///67hg8frr179+rTTz9VZGSkpP+bmc+LKlWqKCwsTN27d9fSpUuVkJCgX3/9VZMmTcoyW38tQUFB2rFjh/bs2aO//vpLFy9ezHNNAAAAAG4PhO5bVKFChTRo0CBNmTJFI0aM0KhRozRp0iQFBwerTZs2WrFihcqXLy9JKlq0qH788UelpKSoefPmqlevnubMmWOf9e7bt6/mzp2riIgI1ahRQ82bN1dkZKR9+5yoUqWKvv/+e8XGxqphw4Zq3LixvvrqKxUq9H8XS/j6+uqJJ56Ql5eX2rdv77B9SEiIvvnmG7Vr105VqlRRjx49VK1aNX3//ff2McaPH3/N4yxfvrw+//xzLV26VDVr1tTs2bPtTy//tzPHERER6t69u1588UVVrVpV7du31+bNm1W2bNkcj9GvXz9VrVpV9evXV/HixRUdHf2vagIAAABQ8NlMXm5KBa6iVatWuvvuu/XOO+/clP1NmDBB77//vg4fPnxT9meF5ORk+fr6KikpST4+PvldDgAAAIAcyOnneO7pxg1x+vRpRUVFKSoqSrNmzbJsP7NmzVKDBg1UtGhRRUdH680339SgQYMs2x8AAAAA/BuEbtwQderU0enTp/XGG2+oatWqlu1n3759ev3113Xq1CmVLVtWL774okaMGGHZ/gAAAADg3+DyciCfcXk5AAAAUPDk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WkpKisLDw9WhQ4cs6/4edgsXLmz/2WazXbXtymXxw4YN0+rVqzV16lRVqlRJ7u7uevLJJ7Mc19/HuDLOjbi0PjspKSl65plnNHjw4CzrypYtK0nq0qWLhg8frm3btunChQs6fPiwOnfubN9ekubMmZPljxnOzs45qmHEiBEaOnSofTk5OZngDQAAANymCN3/X8WKFeXi4qLo6Gj7PdoXL17U5s2bNWTIEElS165d9dprr2nr1q36/PPP9f7779u3r1u3ro4dO6ZChQrZZ6pz4uTJk9qzZ4/mzJmjZs2aSbr8oK8bJTg4WL/88otD288//+ywXLduXe3Zs0eVKlW6YfuVpOjoaPXs2VOPP/64pMuBNTExMVdjBAcHa/78+UpNTbX/AeCf9edG3bp1tXv37mse61133aXmzZtrwYIFunDhgh588EEFBARIujybHxgYqAMHDthnv3PL1dVVrq6uedoWAAAAQMFC6P7/PD099eyzz+qll16Sv7+/ypYtqylTpuj8+fPq06ePpMtP2m7SpIn69OmjjIwMPfbYY/btW7durcaNG6t9+/aaMmWKqlSpov/9739asWKFHn/8cdWvXz/b/RYpUkRFixbVhx9+qFKlSunQoUN65ZVXbthxDR48WE2bNtXUqVMVGhqqVatWaeXKlQ59Ro8erUcffVRly5bVk08+KScnJ8XGxuq3337L8tC13KhcubKWLl2qdu3ayWazadSoUbmewe7atatGjhypfv36acSIEUpMTNTUqVPzXNPw4cN17733atCgQerbt688PT21e/durV69WjNnzrT3CwsL05gxY5Senq7p06c7jBEeHq7BgwfL19dXbdq0UVpamrZs2aLTp087zGADAAAAAPd0/83kyZP1xBNPqFu3bqpbt67279+vVatWqUiRIvY+YWFhio2N1eOPPy53d3d7u81m07fffqv7779fvXr1UpUqVfTUU0/p4MGD9vufs+Pk5KTFixdr69atuueee/TCCy/ozTffvGHHdO+992rOnDmaMWOGatWqpe+//16vvfaaQ5+QkBAtX75c33//vRo0aKB7771X06dPt8/459Vbb72lIkWKqEmTJmrXrp1CQkJUt27dXI3h5eWlb775Rjt37lSdOnU0cuRIvfHGG3muqWbNmlq3bp327t2rZs2aqU6dOho9erQCAwMd+j355JM6efKk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OwAAAID8l5SUlKPP8fk20x0XF6e0tDS1atUq23W1atWSp6enva1p06bKzMx0mJ3NiZo1a9p/ttlsKlmypI4fP37d7WrUqCEXFxeHtn79+mnRokVKTU1Venq6Fi5cqN69e+e4llq1asnDw8O+3LhxY6WkpOjw4cM5HkOS6tev77C8ffv2bM/j313vPCxZskRNmzZVyZIl5eXlpddee02HDh2yrx86dKj69u2r1q1ba/LkyYqPj7/m/oKCguTt7W1fLlWqlH1/Bw4c0MWLFx1m4319fXN9OXbjxo2zLMfFxUm6/B4qU6aMw+Xh1atXl5+fn71P8+bN9dNPPykjI0Pr1q1TixYt1KJFC0VFRel///uf9u/fb7/lIDY2Vvv375e3t7e8vLzk5eUlf39/paamOpyL7N43/zRixAglJSXZX7n9/QMAAAAoOPItdLu7u/+r7Z2cnGSMcWjL7qFi/7wE2mazKTMz87rj/z3wX9GuXTu5urrqyy+/1DfffKOLFy/qySefzGXlV5fTY/pnbTk5l9c6D5s2bVJYWJgefvhhLV++XDExMRo5cqTDZdNjx47Vrl279Mgjj+jHH39U9erV9eWXX+Zpf7eK+++/X2fPntW2bdu0fv16h9C9bt06BQYGqnLlypKklJQU1atXT9u3b3d47d27V127drWPmd375p9cXV3l4+Pj8AIAAABwe8q30F25cmW5u7trzZo1WdYFBwcrNjZW586ds7dFR0fLycnJPhtavHhxHT161L4+IyNDv/32W65quDIjmZGRkaP+hQoVUo8ePRQREaGIiAg99dRTufrjQWxsrC5cuGBf/vnnn+Xl5WWfjf3nMSUnJyshIeG649asWTPb85hTGzduVLly5TRy5EjVr19flStX1sGDB7P0q1Klil544QV9//336tChgyIiIvK0vwoVKqhw4cIO98cnJSXl+mvHfv755yzLwcHBki6/hw4fPuwwi7x7926dOXNG1atXlyT5+fmpZs2amjlzpgoXLqxq1arp/vvvV0xMjJYvX26/n1uS6tatq3379ikgIECVKlVyePn6+ub6HAAAAAC4M+Rb6HZzc9Pw4cP18ssv65NPPlF8fLx+/vlnffTRRwoLC5Obm5t69Oih3377TWvXrtV//vMfdevWTSVKlJAktWzZUitWrNCKFSv0+++/69lnn9WZM2dyVUNAQIDc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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 6))\n", "plt.barh(feature_importance['Feature'], feature_importance['Importance'], color='skyblue')\n", "plt.xlabel('Importance')\n", "plt.ylabel('Feature')\n", "plt.title('Feature Importance')\n", "plt.gca().invert_yaxis()\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Invalid dates in 'InvoiceDate' column:\n", "Empty DataFrame\n", "Columns: [InvoiceNo, StockCode, Description, Quantity, InvoiceDate, UnitPrice, CustomerID, Country, hour, weekday, month, week, total_sales, peak_period_level, overall_demand_level, RecencySegment, FrequencySegment, MonetarySegment, country_purchasing_power, sales_level_by_country, adjusted_unit_price]\n", "Index: []\n", "\n", "[0 rows x 21 columns]\n" ] } ], "source": [ "df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'], errors='coerce') # 'coerce' converts invalid dates to NaT\n", "\n", "# **Check for invalid dates**\n", "invalid_dates = df[pd.isna(df['InvoiceDate'])] # Find rows where InvoiceDate is NaT (invalid)\n", "\n", "# Display the result\n", "print(\"\\nInvalid dates in 'InvoiceDate' column:\")\n", "print(invalid_dates)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate',\n", " 'UnitPrice', 'CustomerID', 'Country', 'hour', 'weekday', 'month',\n", " 'week', 'total_sales', 'peak_period_level', 'overall_demand_level',\n", " 'RecencySegment', 'FrequencySegment', 'MonetarySegment',\n", " 'country_purchasing_power', 'sales_level_by_country',\n", " 'adjusted_unit_price'],\n", " dtype='object')" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training MSE: 0.10537893921878026\n", "Test MSE: 0.0002141472429855384\n", "Training R^2: 0.9138367515554843\n", "Test R^2: 0.9980163288452965\n" ] } ], "source": [ "y_train_pred = model.predict(X_train)\n", "train_mse = mean_squared_error(y_train, y_train_pred)\n", "train_r2 = r2_score(y_train, y_train_pred)\n", "\n", "y_test_pred = model.predict(X_test)\n", "test_mse = mean_squared_error(y_test, y_test_pred)\n", "test_r2 = r2_score(y_test, y_test_pred)\n", "\n", "print(f\"Training MSE: {train_mse}\")\n", "print(f\"Test MSE: {test_mse}\")\n", "print(f\"Training R^2: {train_r2}\")\n", "print(f\"Test R^2: {test_r2}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean CV MSE: 0.7210354950273691\n" ] } ], "source": [ "from sklearn.model_selection import cross_val_score\n", "scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_squared_error')\n", "mean_cv_mse = -scores.mean()\n", "print(f\"Mean CV MSE: {mean_cv_mse}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['scaler.pkl']" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import joblib\n", "\n", "joblib.dump(model, 'random_forest_model.pkl')\n", "\n", "joblib.dump(scaler, 'scaler.pkl')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collection(Database(MongoClient(host=['ac-4wygsq7-shard-00-02.zg5uxhv.mongodb.net:27017', 'ac-4wygsq7-shard-00-01.zg5uxhv.mongodb.net:27017', 'ac-4wygsq7-shard-00-00.zg5uxhv.mongodb.net:27017'], document_class=dict, tz_aware=False, connect=True, retrywrites=True, w='majority', appname='Cluster0', authsource='admin', replicaset='atlas-b6u0p2-shard-0', tls=True), 'DynamicPricing'), 'MLData')\n", "[]\n", "Empty DataFrame\n", "Columns: []\n", "Index: []\n" ] } ], "source": [ "import pymongo\n", "import pandas as pd\n", "from dotenv import load_dotenv\n", "import os\n", "\n", "# Load environment variables\n", "load_dotenv()\n", "\n", "# MongoDB Connection URI\n", "MONGO_DB_URL = os.getenv(\"MONGO_URI\")\n", "\n", "# Database and Collection Names\n", "DATABASE_NAME = \"DynamicPricing\" # Change to your database name\n", "COLLECTION_NAME = \"MLData\" # Change to your collection name\n", "\n", "# Connect to MongoDB\n", "mongo_client = pymongo.MongoClient(MONGO_DB_URL)\n", "\n", "# Select Database and Collection\n", "collection = mongo_client[DATABASE_NAME][COLLECTION_NAME]\n", "print(collection)\n", "# Fetch Data from MongoDB (Limit to first 1000 documents)\n", "data = list(collection.find().limit(1000))\n", "print(data)\n", "\n", "# Convert to Pandas DataFrame\n", "df = pd.DataFrame(data)\n", "\n", "# Drop `_id` column if it exists\n", "if \"_id\" in df.columns:\n", " df.drop(columns=[\"_id\"], inplace=True)\n", "\n", "# Display first few rows\n", "print(df.head())\n" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }