{ "cells": [ { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import plotly\n", "#from plotly import vision\n", "import plotly.express as px\n", "import numpy as np\n", "# get location\n", "import pgeocode\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "from mlxtend.frequent_patterns import apriori\n", "from mlxtend.regressor import LinearRegression\n", "\n", "#pd.set_option('display.max_colwidth', 120)\n", "pd.reset_option('display.max_colwidth')\n", "pd.reset_option('display.max_columns')\n", "#pd.set_option('display.max_columns', None)\n", "#pd.set_option('display.max_rows', 10)\n", "#pd.set_option('display.max_rows', None)\n", "pd.reset_option('display.max_rows')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data" ] }, { "cell_type": "code", "execution_count": 225, "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", "
DateDestination portMarkingDescriptionCTNPostcodeDelivery statusRemarkCBMCleaned MarkingDaily CBMDaily CTNPlace nameState nameLatitudeLongitude
02019-01-02GZ-SMSM/CIEF/879LFE/015012机器343000NaNNo remark0.49CIEF/879LFE4.9660KajangSelangor3.0094101.7755
12019-01-02GZ-SMSM/CIEF/874LCT/014947衣服143000NaNNo remark0.05CIEF/874LCT4.9660KajangSelangor3.0094101.7755
22019-01-02GZ-SMSM/CIEF/854PNS/015029药品147100NaNNo remark0.06CIEF/854PNS4.9660Sungai Buloh, PuchongSelangor3.2445101.5899
32019-01-02GZ-SMSM/CIEF/812EBM/014799玩具2581100NaNNo remark1.56CIEF/812EBM4.9660Johor BahruJohor1.5495103.7080
42019-01-02GZ-SMSM/CIEF/769SMC/014977鞋子551200NaNNo remark1.01CIEF/769SMC4.9660Kuala LumpurKuala Lumpur3.1876101.6720
...................................................
65852020-10-10GZ-SMSM/CIEF/1935LOC/57691290日用品231200NaNNo remark0.13CIEF/1935LOC4.67189ChemorPerak4.7281101.1200
65862020-10-10GZ-SMSM/CIEF/1120SLL/98048736灯饰10068100NaNNo remark2.22CIEF/1120SLL4.67189Batu Caves, Batu CavesKuala Lumpur3.2251101.6803
65872020-10-10GZ-SMSM/CIEF/1089KPP/4267058配件246100NaNNo remark0.08CIEF/1089KPP4.67189Petaling JayaSelangor3.1026101.6288
65882020-10-10GZ-SMSM/CIEF/1044CJH/5901905纸巾5143300NaNNo remark1.34CIEF/1044CJH4.67189Seri KembanganSelangor3.0383101.7094
65892020-10-10GZ-SMSM/CIEF/1044CJH/59019015纸巾3343300NaNNo remark0.86CIEF/1044CJH4.67189Seri KembanganSelangor3.0383101.7094
\n", "

6590 rows × 16 columns

\n", "
" ], "text/plain": [ " Date Destination port Marking Description CTN \\\n", "0 2019-01-02 GZ-SM SM/CIEF/879LFE/015012 机器 3 \n", "1 2019-01-02 GZ-SM SM/CIEF/874LCT/014947 衣服 1 \n", "2 2019-01-02 GZ-SM SM/CIEF/854PNS/015029 药品 1 \n", "3 2019-01-02 GZ-SM SM/CIEF/812EBM/014799 玩具 25 \n", "4 2019-01-02 GZ-SM SM/CIEF/769SMC/014977 鞋子 5 \n", "... ... ... ... ... ... \n", "6585 2020-10-10 GZ-SM SM/CIEF/1935LOC/57691290 日用品 2 \n", "6586 2020-10-10 GZ-SM SM/CIEF/1120SLL/98048736 灯饰 100 \n", "6587 2020-10-10 GZ-SM SM/CIEF/1089KPP/4267058 配件 2 \n", "6588 2020-10-10 GZ-SM SM/CIEF/1044CJH/5901905 纸巾 51 \n", "6589 2020-10-10 GZ-SM SM/CIEF/1044CJH/59019015 纸巾 33 \n", "\n", " Postcode Delivery status Remark CBM Cleaned Marking Daily CBM \\\n", "0 43000 NaN No remark 0.49 CIEF/879LFE 4.96 \n", "1 43000 NaN No remark 0.05 CIEF/874LCT 4.96 \n", "2 47100 NaN No remark 0.06 CIEF/854PNS 4.96 \n", "3 81100 NaN No remark 1.56 CIEF/812EBM 4.96 \n", "4 51200 NaN No remark 1.01 CIEF/769SMC 4.96 \n", "... ... ... ... ... ... ... \n", "6585 31200 NaN No remark 0.13 CIEF/1935LOC 4.67 \n", "6586 68100 NaN No remark 2.22 CIEF/1120SLL 4.67 \n", "6587 46100 NaN No remark 0.08 CIEF/1089KPP 4.67 \n", "6588 43300 NaN No remark 1.34 CIEF/1044CJH 4.67 \n", "6589 43300 NaN No remark 0.86 CIEF/1044CJH 4.67 \n", "\n", " Daily CTN Place name State name Latitude Longitude \n", "0 60 Kajang Selangor 3.0094 101.7755 \n", "1 60 Kajang Selangor 3.0094 101.7755 \n", "2 60 Sungai Buloh, Puchong Selangor 3.2445 101.5899 \n", "3 60 Johor Bahru Johor 1.5495 103.7080 \n", "4 60 Kuala Lumpur Kuala Lumpur 3.1876 101.6720 \n", "... ... ... ... ... ... \n", "6585 189 Chemor Perak 4.7281 101.1200 \n", "6586 189 Batu Caves, Batu Caves Kuala Lumpur 3.2251 101.6803 \n", "6587 189 Petaling Jaya Selangor 3.1026 101.6288 \n", "6588 189 Seri Kembangan Selangor 3.0383 101.7094 \n", "6589 189 Seri Kembangan Selangor 3.0383 101.7094 \n", "\n", "[6590 rows x 16 columns]" ] }, "execution_count": 225, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1=pd.read_csv('warehouse2.csv')\n", "df1\n", "#df1.dropna(thresh=15,inplace=True)\n", "#df1.dropna(thresh=11,inplace=True)\n", "#df1['Bubble size']=df1.loc[:,'CBM by place']*1000\n", "#df['Bubble size'] = df['CBM by place'].apply(lambda x: (np.sqrt(x/100) + 1) if x > 500 else (np.log(x) / 2 + 1)).replace(np.NINF, 0)\n", "#df['size 2'] = df['CBM by place'].apply(lambda x: (np.sqrt(x/100) + 1) if x > 500 else (np.log(x) / 2 + 1)).replace(np.NINF, 0)\n", "#df1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Linear Regression" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'daily_cubic' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtrain_test_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdaily_cubic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mtrain_test_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtrain_test_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoordinal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mtrain_x\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpand_dims\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_test_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m40\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mtrain_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_test_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m40\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'daily_cubic' is not defined" ] } ], "source": [ "train_test_data=daily_cubic.copy()\n", "train_test_data.iloc[:,0]=train_test_data.iloc[:,0].map(datetime.datetime.toordinal)\n", "\n", "train_x=np.expand_dims(np.array(train_test_data.iloc[-40:-10,0]),axis=1)\n", "train_y=np.array(train_test_data.iloc[-40:-10,1])\n", "test_x=np.array(train_test_data.iloc[-10:,0])\n", "test_y=np.array(train_test_data.iloc[-10:,1])\n", "\n", "end=-1\n", "\n", "predict_x=np.expand_dims(np.array(train_test_data.iloc[-10:end,0]),axis=1)\n", "#predict_x=np.expand_dims(np.array(train_test_data.iloc[-10:,-9]),axis=1)\n", "predict_x\n", "\n", "model = LinearRegression()\n", "model.fit(train_x, train_y)\n", "#predict_y=[]\n", "predict_y=model.predict(predict_x)\n", "#predict_y\n", "\n", "test_x=np.array(train_test_data.iloc[start:end,0])\n", "test_y=np.array(train_test_data.iloc[start:end,1])\n", "\n", "plot_df=pd.DataFrame({'date':test_x,'test_y':test_y, 'predict_y':predict_y})\n", "plot_df=pd.melt(plot_df, 'date')\n", "plot_df\n", "\n", "#sns.lineplot('date','value',hue='variable',data=plot_df)" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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RxzB9773PcAqArn88stZvnw573znO9mxo5jrrl69mrVr1wLw29/+lqOPPpojjzyS0047reVWzG6mYufuVcDPROSjwEvA+VMwhpZQkHoCRaln3dY9DZ/PHfjB/gahGb+iFPnN5+G1p1p7ztcdDmdd5emp2WyW3/zmN5x55pkAPPLIIzz99NMsWbKE6667jrlz5/Loo4+SSqU48cQTefvb384TTzzB888/z1NPPcX27dtZvnw5l1xyybjzDg4O8rGPfYz777+fJUuWsGvXLvr6+lpqxexmUgK/MeZe4F779k7gtMl433aTKgn8ltSTwRiDiNR9voRrcRegJxpU2wZF6QDGxsZYuXIlYGX8H/3oR3nooYd405vexJIlSwC48847WbduXUG/37t3L+vXr+f+++9nzZo1+P1+Fi5cyKmnnjrh/H/84x855ZRTCufq6+tr63zUq6cJnKqesJPxx4Okc3kS6Vwha6+H4VSWUMBXuJD0xFrj+KkoMwaPmXmrcTT+Uty2y8YYrrnmGs4444xxz7njjjtqJoKNJouNopYNTZDKlGT8TiVOgzq/u+2idT61ZlaU6cIZZ5zBv/3bv5HJWN/SX3jhBRKJBKeccgo333wzuVyObdu2cc8990x47fHHH899993Hpk2bANi1axfQWitmNxr4m2Bixm8F/p0NBv6RZLYg8wBqzawo04hLL72U5cuXc/TRR7NixQr+8i//kmw2yznnnMOyZcs4/PDD+cQnPsFb3vKWCa/t7+/nuuuu49xzz+XII48sdOpqpRWzG5V6mqBYx18s54TGM36n7aJDTyzIcDJLNpcn4NdrtKJMFU4jdDerV69m9erVhfs+n48rr7ySK6+8csJzr7322rLndSyXAc466yzOOuuscY+30orZjUaTJijW8RereqBxa2Z320UoSkd7dYFXUZQWooG/CUrr+AsZf4O6vNN20aFHjdoURWkDGviboLSOf04kQMAnTWT8EzV+UKM2RTFGGxJVo97fjwb+JnCbtIHVl7OZputW20V/4X6vGrUpCpFIhJ07d2rwr4Axhp07dxKJRDy/Rhd3m6Cg8QeK18++WOO2DQm7365DT1SN2hRl8eLFbN26lU516e0EIpEIixcv9vx8DfxNULpzF6A3Hmyo/WIubxhN58ZLPXHN+BUlGAwWdrQqrUGlniZIldgyg23U1kCGnkiP9+kBy57Z7xNtv6goSkvRwN8EabvRunurdW+sMWtmx5LZHfhFhJ5osOmqnj+9vIffPr2tqXMoijJz0MDfBE6jdTd99uJuPl/fQpRj0OYu5wSrpLPZqp4fPLCJr/yqcrMHRVFmFxr4myCdy43T98HK+POm/k1XwyXOnO7zNavxj6Zz7LO/USiKomjgb4JUJj8h8M/rsnfv1pmlu9suuumJNS/1JDM5RlKW9YOiKIoG/iZI5yYG/kYdOt1tF930xELsbVLqGctYO4ydRi+KosxuNPA3QSWNH+r36yntvuXQ24KMfyxtBf5hlXsURUEDf1Oks2Uy/gb9eioF/p5YiLFMjmSmsWbOQOG1avamKApo4G+KlF3O6abo0FlfkC1tu+jgGLU1E7SdwL8vqYFfURQN/E1RLuOPhvxEgr66M/7StosOrbBtcDT+fWMq9SiKooG/KVK5POGAf8LxRvx6Sn16HByjtkZsIBycwD+sGb+iKGjgb4pyGT9YOn8jVT3lAn9PoRlLYxl/Pm9I2r2BtZZfURTQwN8UqezEDVzQmF/PSCo3Qd+H5puxOH5CAPt0cVdRFDTwN0U6mydcphduX7wxqad08xa49gU0qPGPuaqBtJxTURTQwN8U6Wy+0G/XTW8DGr/VfWviekE05Ccc8LG3wYzfHfi1qkdRFNDA3xTp3MRyTrAy/uFklkwdFgmJVJauSLDsY5ZtQ2MZv7v+X6UeRVFAA39TlPPqgcY2cQ2XtF0cd74mjNqcXbvQmNTz4IYhzvrW75vaQKYoSmehgb8Jynn1QHETVz0lmJXKOcGxZm4s8DsBO+T3NST13L9+kD9v28f2fcmG3l9RlM5DA3+D5PKGXN6UrePvtVsmetX5y7VddNMTbbyBu6PxL5gTbijwbxpMAPV7DymK0rlo4G+QdJl+uw71GrWVa7vopjceZE+D+rwj9SzoDjck9WwasgK/NnxXlJmDBv4GSWWLEkopTgB3AnotyrVddNMTC7FnNI0x9XX1gmLGv9+cCPvGMnWdI5c3bNk5CjS3c1hRlM5CA3+DVMv4I0FL/vG6IFqp7aJDTzRIJmdIpOtfYE26An/eUNc5Xtk9RtquTNKMX1FmDhr4G8TZEVvqxw8QrTPwV2q76OBs4mqk964j9fR3h633qkPn3zg0UritGr+izBw08DeIkwlXy/jH0t7q+BMVvPgdHNuGRip7kvYFar85EaA+h05H3w8F6ncbVRSlcykfaZSapDKVM36/TwgFfON2zVbDi8YPjcktpRl/PZU9m4YSdIcD7N8T0YxfUWYQGvgbpFrGDxAJ+DxLPZW6bzn0NpPxZ3KEAz7mRq1z1CP1bBpKsKQ/Tizkb7r9o6IonUPbpB4RiYjIIyLyJxF5RkS+bB/vE5G7RGS9/bO3XWNoJ+mCxl9+t2005K9/cbdC4J9bCPwNZPyZHNGQnzn2wnE9Us/GwQRL5sfpa8BmWlGUzqWdGn8KONUYcySwEjhTRI4DPg/cbYxZBtxt3592VKvqAWuB17PUU2Nx1+nC1UjGP5bOEQ36mWNn/F6lnmQmx6t7x1gyP05vrPENZIqidB5tC/zGwikLCdr/DPAe4Eb7+I3Ae9s1hnaSzlWu4wdrgXfMY+nkSCpXtu2iQyjgoyscaEhuGctYgb/bzvi9buLasnMUY2Bpf5cd+DPk8/XvI1AUpfNoa1WPiPhF5ElgB3CXMeZhYD9jzDYA++eCCq/9uIisFZG1g4OD7RxmQziLuxUz/lA9GX+moszjMDcabEjqSWZyRIJ+wgHL3tmrQ+cmu5Rz6fw4vfEQubxRP39FmSFUDPy2Fl/xn5eTG2NyxpiVwGLgTSKywuvAjDHXGWOONcYc29/f7/Vlk0btxV1/4eJQi0QqVzPwd0cCnncCu0lm8kRD1jrEnGjQs9Tzou3RMzA/Tp/jPaRyj6LMCKpFmyFgK+BEG3E9ZoClXt/EGLNHRO4FzgS2i8j+xphtIrI/1reBaUe1DVxgZfyDwylP5xpOZivq+w6xkJ/RBnbuOlIPWBcPr313Nw0lWNAdpiscGNcFbAnxusegKEpnUU3quQbYDfwWuAhYaoxZYv+rGfRFpF9EeuzbUeBtwHPAL+3zYf+8vfHhTx2tXNyt1HbRTSwUKFT/1MNYOkfE7hI2JxKsQ+qxKnqgaDrXisqeTC7P3932FC/vGm36XIqiNEbFwG+M+RRWNc4twIeAJ0TkahFZ4vHc+wP3iMg64FEsjf8/gauA00VkPXC6fX/aUcj4/eXLOetb3C3fdtFNoxm/o/GDI/V4z/iX9luB38n4W7GJa8vOUf7j4Ze494XOW7dRlNlC1TTTWFaO94jIE8AFwD8C64Hv1zqxMWYdcFSZ4zuB0xoabQdRK+OPBH0FB89aJFJZBuZXl1Di4UDTUs+cSICtu2tn2ntG0+xKpAsZfyMdxSrhlK7u1fUCRZkyKgZ+EYljlV7+BdAP3AocbYx5eZLG1tF4kno8BupqbRcL5wv5GW1gcdfZwAXQHQl62sDlePQsmd8FQDzkJ+T3sasF1syOPUWjHcUURWmeahn/Dqzs/iZgA9aC7ioRWQVgjLm1/cPrXNK5HAGf4PdJ2cedck5jDCLln+OQSGWJh6pr/PFGF3fTrow/GvBU1VMM/FbGLyJWM5iWZPzW+zfaWEZRlOapFm1uwQr2b7D/uTFY3wBmLZUarTtEgn7yxir7rGTrAMW2i5W8+B2iIUvqyecNvgoXm1LyeUMqmy9q/JEg6Wx+nO5fjk1DCXwCB/bFCsd6Y6GWaPwjKevi1YqLiKIojVEx2hhjLp7EcUw7KjVadyg2Y6ke+Gu1XXSI23JNMpsjVuPbgYOzAF2o43ft3q0W+DcOJTigLzZufq2ybRixv3E0KvU8tXUv+80Js8C2mVYUpX6q7twVkbeIyBH27feLyLUi8hkRCU/O8DqXdDZfsYYfvDdjqWXJ7BBz2jmmvMs9Tjlp1FXVA7X9ejYNJlhastjcF29Vxm9r/A1KPZf+6FG+dff6psehKLOZaou73waOACIi8jzQhVXTfwLw78CFkzLCDiWdrZ7xR0PWY7UWeBM1DNocYnbwthZ4vV13ncDvruOH6n49+bxh01CC45bOG3e8Nx5siTWz022s0Yx/92iGV/eMNT2OVrFjX1K/fSjTjmrR5q3GmOUiEgFeARYYY3Ii8j1g3eQMr3NJZfMVDdqgmGXX2sQ1UqPfroNT51/PAq9z0Ym4du4CVTdxbR9OMpbJsaS/JOO3G77Xs8ZQDucbzt6xtKeFbzeZXJ50Ns8Ojzui282P/rCZf/nt89z21yfw+gXdUz0cRfFMNaknCWCMSQJbjDE5+74BZn1JRiqbJ1RFuw97lXpqePE7OLp+PSWdyQaknk22R0+p1NMbD5E39XXwKocz30aaxzsXvU4I/A+sH+LLv3qWNy/tK5S9Ksp0oVq0WSAif4Pl0ePcxr7fea5pk4xVrdN8xl+rCYtDzF6gbUjjDxWreqC61LOxpJTTwb1712kF2QgjrvfeM5quOW83zkVv50iKXN5ULKVtNxsHR/irnzzGsgVd/OsFR03ZOBSlUapl/N8HurG0fee2c//69g+ts0lnc9U1fo8Z/7DXxd1Cxu898Jdm/F6knk1DCSJBH68r0a1btXt3JOUO/PV9e3AuknljBf+pYO9ohktvXEvA7+P7Hz62rguXonQK1co5vzyZA5lupLL5qh96J8seS1e3Zvaa8Rc1fu9ST6nGHwv58fukutQzlGBgXnyCjt9XyPibl3q6IwGGk1n21lnZ4/62s2M4NemLqtlcnstvepyXd4/yHx87jgNc+xwUZTpRzY//ahG5rMzxz4jIP7d3WJ1PusbibiRQ3+Juraoe50JSjy5eKvWICHPsoFsJtzmbm17bk79Zh86RVJbFvVbArPfbg7sfwY7hZFPjaIR/+vWf+f36Ib763sNZNeCpJYWidCTVpJ6zgevKHP8W8M72DGf6kM7mCQerBH67nLP24m71tosOjqXDWAOLu+7NWt1VrJkzuTwv7RqdoO+Dy5q5WaknmWVxbxSoX+oZdWf8+yZX6vnJw1u44aHNXHrSEt6/6oBJfW9FaTXVoo0xxkzQKexjs341K53zVs5ZO/DXbrvoPl9di7vp8Ro/OH495S8eL+8aJZc3ZatUokGrdWOzXbiGU8XAX7fUMy7jn7zA/9CLQ3zp9mdYfWg/f/uON07a+ypKu6gW+EdFZFnpQftY5+ygmSK8ePWAlw1cuZpe/AA+nxAN1ufQOWa3fhwX+CNBhito/KXmbG5ExLJtaELqSWVzpLN55sVDxEL+uv163AvbkyX1bB5K8Fc/eZyB+XH+zxqt4FFmBtUC/xeB34jIxSJyuP3vI8Cv7cdmNbW8eoJ+HwGf1NT4h5NZusJBT+8ZD9fn0Om8t7vstDsSqGjN7AT+g8to/GBV9jSzuOt8W+kKB+iJ1r8T2FkI339uZFKknn3JDJf+aC0AP7jo2EI5rKJMd6pV9fxGRN4LfA74pH34aeA8Y8xTkzC2jsby6qnhoR/0k6zRcD3hwYu/cL46rZlTGavtortCZ06kcsP1FwcT9MaCFev0++LBpjT+QgVTJMjcWKiBck5r7gPz4m2XenJ5w/+46Qk2DyX48UffzEHztNewMnOo1YHraYr9cRUXtbx6ACKh2n13R1JZ5nd52xAVDwXqlHpy42QesNsvVtDWNw2NlJV5HHpjIZ7dts/z+5dS3LPgpycaZO9YvVJPllDAx/49ER7euKvhcXjha3f8mXufH+TKcw7n+IPn1X6BokwjqkcupSz5vKm5uAtOxl97526tUk6HevvuupuwOHRHAiTSObK5id9ErAbrle0H+uLNafxFe4qg3dil/sXdeMjPgu4Ig8MpLPeQ1vPTR1/i+gc2cfEJA3zgzQe25T0UZSrRwN8A6Vz1tosOXtovDtsbmrwQCwUKcokXxjI5IqGSjN/WqUdKzpNIZdm+L1W2ht+hJxZiz1iGXL6xgOt03+qKBJgbDdWt8Y+mcsTDARZ0h0nn8m1p3/jwxp38w/99mpOXzecf3qkVPMrMpGbgFxHdqVKCE/irefWAZYecrNFw3UvbRYd6M/5kJlfYSOZQMGorWeCtVtHj0BcLYkz9ZZgObnuKnliw4NDpFSvjD7BgjmVL3Wqd/+Vdo3ziJ49zQG+Maz9wNIEa3+gUZbri5X/2wyJyi4i8Q+rx0J3BOI3Wawf+6hm/17aLDvFwoO6qnmhootQDE102vQR+x6+n0YYszreM7ohV1ZPJmbrmM5rOEQtbUg+0tqRzJJXl0hvXks3luf6iY5kb1QoeZebiJfAfgrWD90PABhG5UkQOae+wOhsn8NeUekLVNX6vbRfd56vXq2fC4m6kvDWzE/gHqlSvOLt3G+2XO1KS8UN9nbicb0cLuu2Mv0Ulnbm84VM3PcGGwRG+c+ExLO1Xm2VlZlMz8BuLu4wxa4BLsap8HhGR+0Tk+LaPsANJeQ38wepVPV4N2hzi9S7uZvITeuvOiToOnROlnoVzIxO+IbhxWzM3QiKVRcSSrJyS0XoWixOpHLGQv+VSz9W/e467n9vBFe9azknL5rfknIrSydSMOCIyD/ggVsa/Haum/5fASuAWYEkbx9eRFKWe6vX3kRp1/E4G7L2qx5J6vHbBSpWReoqe/OMz7Y1DiQldt0pp1pp5OJWlKxRAROixpZR61gsSaasCKhYK0BUOtETq+cVjW/nefRv54HEH8qHjB5o+n6JMB7xIPX8A5gDvNca80xhzqzEma4xZC3y3vcPrTApST43Fv0iNjN9r20UHpxlLrb0BDlYd//gxFqWeYsZvjGHT4AhLa3SSataaeSSZLczVyfjrqcwZTecKv4MF3eGmM/7Htuzib299ihMOnseX3nVYU+dSlOmEl4hzqKlQemGMmZX2zOmcFXi9SD3JKtKM17aLDrFwsRmLl28J5TZwdZVpxrIzkWZfMlt1YResNYZI0Ndwxj+SyhbmWtT465F6iq/v7w4z2ITGv3X3KH/548dY2BPhOxceTVAreJRZRMXoISK/Aox9e8Ljxph3t29YnU0q43Vx1+dJ4/dczhl0N2MJ13z+WHpiHb/fJ3SHx3vyFyp6akg9YGX9jW7iGkkVM36nasZrxp/N5Ull84VOZAvmRHhq656GxpFIZfnYjx4jlc1z88dXNdVKUlGmI9UiztcnbRTTjJTXOv6An2zekMnly2aUTvD1uoGr2IWrttSTzxtS2fyEOn7n/dxVPZUarJejNx5qXONPFjerRYJ+okHvDp2j9gXU+R00KvXk84bP/PRJnn9tH/9+8Spev0AreJTZRzWTtvsmcyDTiXrKOcHaSFUu8Cc8dt9yKPbdrV3S6WwcK1elU+rXs3EoQdAvLOqJ1jxvXzzUVB3/wp5iu8SemHfbBqcJSyHj7w4zms6Nk4+88I27XuDOZ7fzxbOXs/rQBXWMXlFmDtWknp8ZY94vIk9hSz5ujDFHtHVkHUw9G7jA0tq7y1j6FtsuenPndBY2vTRjKdeExcHy5HdLPSMc2BfztFO1JxZi6+7G2jGU7lKeGw16ruMv/V0VSjr3JenyWHd/+5OvcO09G1jzpgP4yIkDdYxcUWYW1VKlT9k/z56MgUwnCnX8/tq2zADJCg3XR1I5Qn5fzbJQh2LGXzvwJ7MTm7A4dEcCvLavWApZy5zNTV8s2HjG76rqAWtfgGepx/6WU8z4nd27KU8brp54aTef+/k63rykjy+/e0XZdStFmS1Uk3q22T+3TN5wpgeFjL9Kz10oZvyV/HpGUhnPpZzg1vhrSz1Oxl+6uAuW1PPCjmHA2rW6eeeoZ9mjNx5i71iGbC5fl5dNPm8YSWfpdskyPbEgG3aMeHq98y0n7irnBG+buLbtHePjP36M/eaE+bcPHlNTolOUmY4Xk7bjRORRERkRkbSI5ESkcVP2GUDaDuQ1bZnthuuV/Hq8tl0sns+Werxk/JlqUk+xqufVPWOks/mapZwOjm1DvUZto5kcxozfs9AT8y71OBc7Zz2kkPHvq76JazSd5WM/WstYOscPLlpVGL+izGa8pD7XAmuA9UAUy7bhmnYOqtPxasvs1vjLYS1MejcDc/TxMS8Zf5XA3x2xFneNMZ7M2dw4tg31VvYUfXqK850bDbF3NOPJodO52DkXyjnRAKGAj8EqGX8+b/jsLX/imVf38X/WrOSQ/brrGrOizFQ8fec1xmwA/MaYnDHmh8Bba71GRA4QkXtE5M8i8oyIfMo+3icid4nIevtnb3NTmHw81/HXCvxJ720X3eerZ3E3UkaOmhMNkDdWMHUCv5dSTnD79dSX8bu9+IvnCpLO5T2tWYymxmv8IlKzpPNbd6/njqde4+/OeiOnvmG/usarKDMZL4F/VERCwJMicrWIfAbwEiWywP80xrwROA74axFZDnweuNsYswy4274/rUjn8vgEAjX8cgoafyWpJ11fKaLPJ0SD3hw6nYtNqUkbjPfr2Tg4Qlc4QH937Q1hAL1x67X1LvAW9iyUaPzgzaGzkPG7qoKswF9e6rnjqW186+71nH/MYi49edbZSSlKVbwE/g/Zz7scSAAHAOfVepExZpsx5nH79jDwZ2AR8B7gRvtpNwLvrXvUU4zTb7dWZUi01uJu0nvbRYd42JtDZ0HjL7O465SW7hvLWuZs8+Oeq1z6GjRqKyzOht3lnN5tnp2M3z2fBd2RitbMX//d86xYNId/OkcreBSlFC+2zFuAbiBsjPmyMeZvbOnHMyIyABwFPAzs56oY2gaULScRkY+LyFoRWTs4OFjP27WdVLZ2v10oBqmxiuWc3tsuOjgOnbWourjrWDMnM3YppzeZB5rQ+B2pp0zGv9fDJq6RdJaQ3zdOXlswp7zU88qeMTYOJTjnqMWeS2UVZTZRMXqJxRUiMgQ8B7wgIoMi8sV63kBEuoBfAJ82xniuBjLGXGeMOdYYc2x/f389b1kgmbEsjFtNKpsn5CGgeFnc9erT4xDz2Iyl1gYugKHhFK/sGasr8EeCfmIhf91+PeXsKYoXkdqBf7RMBdSC7jB7xzITmt08uH4IgJNer976ilKOalHn08CJwCpjzCYAEVkK/JuIfMYY881aJxeRIFbQ/4kx5lb78HYR2d8Ys01E9gd2NDWDKlz73xv49VPbuOSkJZx39KLCwmCzpLP5mrt2obiwWq4LV71tFx289t0dsxegy0s91ns+9cpejKFqg/Vy9MZCDSzuTnQircehM5HOTvj7OSWdg8MpDuiLFY4/sGGI/u4wh+w3BT48W9fCH74N/iD4guAP2D+D4AtUPj7usWrPdd33BSo/5pxDZS6lDNWizoeB040xQ84BY8xGEfkgcCdQNfDb/Xl/APzZGPMN10O/xOridZX98/YGx16TIw/o4ffrB/nC/32ar//ueS5884F8+PgBXjc3UvvFVUjnvAX+kN+HT8oH/nrbLjrEQoGCx081nG8Z5cbpNFz/k+1uWU/GD9YCb6PlnOM1fu8OneUy/n7XJi4n8Ofzhgc3DHHKIf1To+2P7YHX1kEuA/ms/TMDuaz9MwPGexe1pvFVukj4q18wPF2galx0nOMT3tvrRa7MBVEvZC2hWtQJuoO+gzFm0M7ka3Ei1sLwUyLypH3s77AC/s9E5KPAS8D59Q3ZO6cv34+3vXEBj23ZzQ8e2MR373uR6+7fyLuOXMhHT1rCikVzGzpvOpvztPtTxKrCKbeBq16DNodYyM/QSO3dqknbi79c8HMy/nVb9wIwUG/gj9Vv1DaSyhIOjNfoI0HL39/LZrByGb8T+AddlT3PvTbMzkSaE6dK5ln2Nlj2WPXn5PPWRcG5EOSzlS8S446Xu5hUeq77eAbyOe+vyyYhNVx+LIXnul6T994HumnE3+SFJlC8GE54nd/jBan0vteLaJlx+qZmF3m1qFPtk13zU2+MeQCodHk+rdbrW4WIcOxAH8cO9PHyrlF++OBmfvroS9z2xCu8eUkfl568lNPesMBTK0OHlF3V44VoqHwXLnfj8XqIh70t7o6lc2Vr+MFqGRkO+BhOZpnfFS5o/l7pi4d4eddoXa8ZrrCQ7dWvx2o+U6Lxl+m9++CGaaDv+3zgCwEzZBexMdUvOuMuNOUeq3KR83RBrPF+2RSkR2q8znVByzfWYa4hxFf7QnP2N+GgE1r6ttWizpEVrBkEaE4rmSIO6IvxxXct59OnL+Onj7zMDQ9t5mM/WsuS+XE+ddoy3nvUIk/nSXus6oHK7Rfr7b7lEPW6uFum+5abOdEgg8Mpzxu33DSS8SdS5UtX50aDnhZ3E6ksffHYuGPz4mF8wriSzgc2DPH6BV1Ny3lKHYhYAcpfXwLRsRhjfUPy/K2r5MJR67meL4j2sVDr16qqmbTN2Dq4OZEgHztlKR85cYDfPvMa377nRT7zsydZfWi/p25M6Wy+pkGbQyToL+z0dVNvv12HuMfF3WRmYvctN3MiAQaHU3Xr+2AF/n3JbMUGM+WwdilPnGtPLOipnDORzhYM2hz8PmF+V3ETVyqb4+FNO7lg1YGexqQoZRGxMm5/AIK1e1RMR2a1TWHA7+PsIxZy2VuWYgwMjXjLYtM57xl/tELGX2/bRQenjr9WmWqyRsbvbOLy0m6xlL54fW0TwZJ6ygb+aMhTVY+1uDvx9e5a/se37CGZyXe2zKMoHcCsDvwOTj25V2/4VKYOjb/C4m69bRcdnGYs1Xr5Oo/XknrAu0ePm/ldlra+vYYzppuRZAWNP+6tC1ciXV4qcu/efXDDEH6f8OalfZ7HpSizEQ38FG0IvOrW6Zy3DVxg+eFXzfjrreoJe2vGMpbOla3hd5hjB+F6a/ih+C1ho23w5oVKLRLnRkPsqeHQmcsbkpl84aLnxm3U9vsNQ6w8oKdstzNFUYpo4Ke4kchrbbrXDVwAkYCvQh3/eJthrzg6d60F3rFMvqxBm0N3JIhPGLfxySsD8+KIwMZBb01UwA78ZTL+Htuhs9o3mIIXfxlZbEF3mJ2JFLsSaZ7aukdlHkXxQGu2sk5zisZj3jTress5ywX+4WS2rraLDl777tbS+M89ehEH9EUb8rKJBP0c0BvjxcE6Mv5k+d4DPa5NXJV2VjvfbmJlLpL9cyIYA/+57lXyBk5apoFfUWqhgR9Lhw8FfJ79Z9LZXEsWd+ut6IGiH/1YpkbGX6WOH2DVQB+rBhrXwg/uj/Oix7aJqWyOdC5ftvdAT2F9JcPCnvIVFNUWwp0WjLc+/grxkJ+VB/R4GpOizGZU6sHa5NUXC3mWelL1SD0VFndHUtm6ZR7wnvHXWtxtlqX9XWwcGvFkgueMtVI5J1RfWHdeX0njB3jy5T0ct3Se5/JSRZnN6KfEpjfuzXjMGOPZqweswJ/Mlq/jr6ftooOT8dda3K1Vx98sB/d3kczk2eahsqewS7nMoquXZizVfI0WzClu1JoymwZFmWZo4LfpjXkzHsvmDcbUbrvoEA36SWfz5Eoy43rbLjo43xKqLe7m84ZUNt/WjP9gu7LHi9wzXMaL36EnWpR6KuHMNVbm9f1dxc5hJ6u+ryie0MBv0xv3JvWks9767TpEQ+WtmSvVpdc+ny31VMn4nY5f7ZZ6AF70UNkzUmXPghdr5kL3rjLfYEIBH72xIAu6w7x+wRTYMCvKNEQXd216Y0FPi7spJ/DXsbgLlubuDvQjySwHNlBK6SxwjlXJ+AtNWNoo9czvCjEnEvAW+Kv4EjkOnY1m/ADHHNTHkvkxbbGoKB7RwG/TFwuxdyxDLm/wV3HqdDL+sMds2nleacZfaUNTLZwLSbXF3WqN1luFiHDwgi42eijprOVL1BOt7tBZLeMHuP6iY2uOQVGUIir12PTEQuQN7KvhDZ9uMONvVeD3+SyP/2oaf7V+u63k4P4uTxn/cA0L6p5YdduGQsbfog5qijLb0cBvU7BtqKHzp3NWUK1ncRfGN1x32i42ovGDtcBbrarHea92Zvxg2T1s35diOFn9YpmoYUHdEwtWreoZSeUmNFpXFKVx9JNk0xv3ZtSWzNS7uDvRVM0pT6zXoM3BceisOMZJWNwFK+MH2FTDs2cklUWkfB0+1JZ6RtPZsrt2FUVpDA38Nr12dUmtWv50ztb4PdfxW88bF/gbNGhziIX8VfvuFhd32/vnPdhjZc+w7cVfafG1ltSTSOXqtq9WFKUyGvhtHGvmWiWd9ZZzRspo/LWkj1rEKjh+OkzG4i7AgX0x/D7hxR21M/7uKnOda0s9lRw6R9PZit8WFEWpHw38No7UU6uks1DVU6fG7w78tRY7axEPB6pm/JO1uBsK+DioL1Yz4x9JVvcl6omGSGfzBRmtlEQ6V7GUU1GU+tHAbxMP+Qn5fTUdOot1/N6CakHjT7szftu7pkGN36rqqba42/46foel/bVLOkcq9Nt16K1hiz2amth2UVGUxtHAbyMi9HjYxFWs4/fqxz9xcXfEtjBoVLeOh6sv7o5NUsYPlnXDpqHEBEsKN5XaLjoUjdrKX3QT6ZyWcipKC9HA76IvHvJezum1jj/kSD1FGWPEzvgbreqJhqrX8U+Wxg/WAm86l2fr7tGKz0mkyrdddJjr+PVUsG1IpBrzNVIUpTwa+F1Y1SWtXdx11gLGZfx23XvDdfyh6lKPc5Hxug7RDAcvsM3aquj8I0lvGf/eChm/Vc6pGb+itAoN/C764qGafXdTdQZ+EWun7biqngbbLjo4dfyVvPCd7luT4V2zdL5V0llN569lQV2sqKog9aRyqvErSgvRwO+iNxaqWk8O9Vf1gCXNuBd3G2276BArsynMTa1G662kNx6iLx6qmPHn86Ziv93iOayLwtBIasJjubxhLKMav6K0Eg38LnrtLlzVukrVm/HDxIbriQa7bzk4skcluafd3bdKsdowls/4C7uUq0g14YCf/u4wr+wem/CYc3Fr5velKMp4NPC76I3bRm1VvGfqNWkDiJRsuKqVAdfCkT0qLfCOZar322011czaRjzuUl7YE+WVPRMD/2hKDdoUpdVo4HdRrCevHPhT2Twhv68u/bxU4x9JZZuyIKjVdzc5iVIPWGZtOxPpsgvjxbaL1ee7uCfKq2UCf7PrIYqiTEQDvwtn9261Bd50HY3WHaLBkow/Wb28sRZO9juWqZzxT67U43j2TJR7nIy/mtQDsKjXyvhLbRsKvkaa8StKy9DA78KpLqlW0pnO5eq2B44E/ePq+Bttu+jgZL8VM/5MblJq+B2qmbXVasLisKgnSiqbZ2hk/O++WUM7RVEmooHfRV/MW8bfSOB3V/XUqmuvRTToLO5Wyvjzkxr4F/dGCfl95QO/R1+iRT1RgAk6v7OArSZtitI6NPC7cMoKqzl0NhL4o6GJGn8zgd/J+CtV9SQnWeoJ+H0cNC9WtpZ/2KMT6UIn8JdU9jhVQZrxK0rr0MDvoiscIOCTmou79Wv8vgl+/E1l/M7ibqVyzvTkBn6oXNnjZPy11jQW9ToZ/3jrh9GUZvyK0mo08LsQEXrjoapGbY1KPU7Gn88bEk20XYTiQudYlXLOyazqAcu64aWdo2Ry462VvZZzzo0G6Q4HeHVPctzxQsavi7uK0jI08JfQGwtWl3py+bpq+GF8VU+zbRed80Hlxd2xSV7cBcu6IZs3bC5pwziSyhIO+Ah6+J0t6o2ydXcFjV/LORWlZbQt8IvIv4vIDhF52nWsT0TuEpH19s/edr1/o/TGQuyu0n4x1XDGny/YF0BzmrXPJ7Yn/8SMP5c3pLP5SZd6Vg30IQK/Wrdt3PGRGs6cbhaV2cSVSGUJ+qVhewtFUSbSzoz/BuDMkmOfB+42xiwD7rbvdxSObUMlLI2/viDkyC6pbL5l5YnxcHmHzpTTaL3N/XZLOXBejFMPXcB/PLylMAaor4JpUW+UV0rsnROprO7aVZQW07boYIy5H9hVcvg9wI327RuB97br/RulN1498Dek8busmZ22i7U2NNXCcegsxSkbnWypB+DiEwcYGknzn38qZv312FMs7ImyL5ll2GWZkUirM6eitJrJ1vj3M8ZsA7B/Lqj0RBH5uIisFZG1g4ODkzbAvniQ3aOVG3+ns/Vv4Co2Y8kVdPlmM/5YyF+27+5kNmEp5aTXz2fZgi5++NCmwu+vrozfLul0L/CqF7+itJ6OXdw1xlxnjDnWGHNsf3//pL1vbyxELm/YlyxfMZPO5QnXubjrBOGxTK7QdrGZck6wAn85W+bJarReDhHh4hMHePqVfazdshtw2i5W9uJ3U66kU734FaX1THbg3y4i+wPYP3dM8vvXpNAUpEJJZyqT99xv18EJwmPpXKHtYrOBPx4OlM/40/lx7znZnHvUYuZGg/zwwU2A1V/Ya9vExWU2cY2mVeNXlFYz2YH/l8BF9u2LgNsn+f1rUmv3biPlnE7Gn8zkCm0Xm7FlBuyqnjIav5PxT1GWHA35ueBNB/C7Z7bzyp4xS+rxONf5XWFCfh9bXZU9iVRzex4URZlIO8s5bwL+ABwqIltF5KPAVcDpIrIeON2+31EU2wBWCPwNWjaA1Qu3VTbD8XCFxd0p1PgdPnTcQRhj+PEftpBI5TxLPT6fsH9PZELGr5bMitJa2pZKGWPWVHjotHa9ZyvoLRi1la/lbyjwuzT+ZtsuOsRC5ev4naqeqZJ6ABb3xjjjsNfxk4e3kM7l69qstqjEl38kpW0XFaXVdOzi7lThePKXs2bO5Q3ZvKk7aLsXd5ttu+hgBf7KdfyT2YGrHB85cUmhdLWe9YzSTVyj6awu7ipKi9HAX8KcSAC/T8paM6cb6LcLLqknbQX+ZvV9KNbxl/YHLmT8UxwsVw30ctjCOUCdgb83yo7hFOmstdN5NJ3Tck5FaTEa+EsQEduvZ6LU00i/XShu4Epmcww32XbRwXGrLC3pHJvCck43IsLFJwwAMCfqTeMHK+M3BrbtHSs2WteMX1FaiqZSZbD8eiZm/KmcFYgazfjH7Iy/GYM2BycLHi1x+uyExV2Hc45aBMDJy+Z7fk2hln/3WOH3phm/orQWzfjL0BsLsauMxp+y2yfW68cfCbg3cDXXdtHByYJLF3iT6Rwi9Y+xHQT8Ps4/9oC6LkLO7t2te8YKXvxe9wEoiuKNqY8OHUhvPFh2cTeda0zj9/mEcMDX0sDvSD2l1sxOo3URafo9poL950YRgVf3jBUsrLWqR1Faiwb+MvTGQmXLOR2Nv5FsOhL0k8rkGUlmmzZog2IwHMuMz/jHJrntYqsJBXws6A7zyu6xoq+RBn5FaSka+MvQGw+xZzQ9wait0aoesJuxpJ1yzhZIPeHyGX9ykhuttwOnpLOQ8avUoygtRQN/GfpiIbJ5U2gU7pAqVPXUH4iiIT+JdJZEOte0Tw9ANOgs7k7M+Ke6hr9ZFvXGeMWl8WvGryitZXpHiDbRE7P9ekoqewpSTwOBNRL0s3PEOl8rAr+T8bs3cRlj2L43Oe018YU9EbbtSRacTLXRuqK0Fg38ZeiLO34943X+V/daO0obyUAjQR9DIymgeYM2KGr8CVfgv/3JV1m7ZTdnH7F/0+efShb3REnn8mzZadkzq0mborQWDfxl6KlgzXzzIy+xZH6cN7yuu+5zRoP+QuBvZVXPmC31vLY3yRdvf5qjD+zh0pOXNn3+qcSp5X9h+wjQvKGdoijj0cBfhmLGXwz8T7+yl8df2sMHjzsIn6/+Uslo0F/4BtGKqh6ncieRymGM4X//Yh2ZnOH/e/9K/A2Mr5NY1BMDYP2OYQI+qXuntKIo1dFPVBl6bY3f7dfz4z9sIRr0875jFjd0zohLp25Fxu/zie3Jn+WmR17mvhcG+dt3vIEl8+NNn3uqWdgTAeClXaPEQtN3T4KidCoqnpZhTiSIT2CPnaHvHc1w+59e4ZyjFjG3Dt8ZNxGXo2crFnfBkkCee22Ynzz8Eie+fh4ffPNBLTnvVNMdCTInEmBfsjWlr4qijEcz/jL4fDLOtuGWx14mmcnzoeMGGj5nNFT8Vbcq8MdCAX6/fgi/CFe/78iGJKhOZVGvJfdoRY+itB4N/BXoiQXZnUiTzxt+/MctrBroZbltM9wI7t20rajqgWJQ/OK7lhc8bmYKznw041eU1qOfqgr0xUPsHk1z3/pBtuwc5X++/dCmzucO/K2qUjnqwB7e8LruhtcdOpnFdmWPZvyK0no08FegJxbipZ2j/PgPW5jfFebMw17X1PnCduAP+qXptosOXzv3iJacpxNxMv5WyWKKohRRqacCfbEQL+0a5Z7nd/CBNx3QkD+PGyfj10DmjUWFjF9/X4rSajTwV6AnHmQsk8MnwgdaUC3jNBVRzdobCwsav0o9itJqNPBXoM/evfv25fvxurmRps+nGX99OFKPZvyK0no08FdgvzlWsP/Q8a2pjXccMzXwe2N+V4il8+MsW9A11UNRlBmHRqEKnLniddw89ziOWzqvJedzPPJbVco50xER/vuzq6d6GIoyI9GMvwKRoL9lQR+KUo9q/IqiTDUa+CcJZ3G3FQZtiqIozaCBf5LQjF9RlE5BA/8kEdGqHkVROgQN/JOEBn5FUToFDfyTxPyuEJ952yGcuaI56wdFUZRm0fRzkhARPvW2ZVM9DEVRFM34FUVRZhsa+BVFUWYZGvgVRVFmGRr4FUVRZhlTEvhF5EwReV5ENojI56diDIqiKLOVSQ/8IuIHvg2cBSwH1ojI8skeh6IoymxlKjL+NwEbjDEbjTFp4GbgPVMwDkVRlFnJVAT+RcDLrvtb7WPjEJGPi8haEVk7ODg4aYNTFEWZ6UzFBi4pc8xMOGDMdcB1ACIyLCLPt3tgk8R8YGiqB9ECZso8QOfSqcyUuUzlPMp2kpqKwL8VOMB1fzHwao3XPG+MObZ9Q5o8RGTtTJjLTJkH6Fw6lZkyl06cx1RIPY8Cy0RkiYiEgAuAX07BOBRFUWYlk57xG2OyInI58DvAD/y7MeaZyR6HoijKbGVKTNqMMXcAd9TxkuvaNZYpYKbMZabMA3QuncpMmUvHzUOMmbCuqiiKosxg1LJBURRllqGBX1EUZbZhjGnbP+BQ4EnXv33Ap4F/BNbZx+4EFtrPv7Dk+Xlgpf1YCEsrewF4DjjPPv5N1/NfAPa43v8iYL3976IOn8eBwD3AE/Y539HqeUziXA4C7rbPdy+wuJPnAnSXHB8C/tV+TRj4KbABeBgYmMZzOQV4HMgC7yt5/476rNSYx98Az9rnuxs4aBr/TS4DnrKPPwAsb8dcJsytlSer8Uv0A69hBYU5ruP/A/humecfDmx03f8y8E/2bR8wv8xrPolVJQTQB2y0f/bat3s7dR5YAfQT9u3lwOZ2zqPNc7nF+Y8KnAr8uNPnUvLYY8Ap9u2/cl6PVXr802k8lwHgCOBHuAJ/p35WqszjrUDMvv2Jaf43cZ/r3cBv2z0XY8ykSj2nAS8aY7YYY/a5jscps3MXWAPc5Lp/CfA1AGNM3hhTbiec+zVnAHcZY3YZY3YDdwFnNjkHaN88DDDHvj2X4qa2ds0D2jeX5ViZGFjfYhwvpk6eCwAisgxYAPzePvQe4Eb79s+B00REmIZzMcZsNsasw8pE3XTqZwUoO497jDGj9sN/xNoE2s55QPvmUulc7ZzLpJZzXoDrFyEiXwU+DOzFuoKX8hfYAUNEeuxj/ygiq4EXgcuNMdtd5zsIWAL8t33IkydQA7RrHlcAd4rIJ7H+A7ytzfOA9s3lT8B5wLeAc4BuEZnXqXMpYQ1WBul8AAtjNtYelL3AdJ1LJTrus1JCtXl8FPiNfXta/k1E5K+x5KsQ1jdkaO9cJifjt3fovhtLAgDAGPP3xpgDgJ8Al5c8/83AqDHmaftQAOuq/qAx5mjgD8DXS97mAuDnxpicc5oyQ6n1AZjKeawBbjDGLAbeAfxYRHztmMckzOWzwFtE5AngLcArWLpyp87FzbgPeJUxT8e5VHzbMsem+rPipuw8ROSDwLHAvziHyry24/8mxphvG2MOBv438A/Oacq8tum5OEyW1HMW8Lg7Q3fxH1jZoZvSX85OYBS4zb5/C3B0jdc04glUi3bO46PAzwCMMX8AIljmTu2YB7RxLsaYV40x5xpjjgL+3j62l86dCwAiciQQMMY85jpcGLOIBLBkuF1Mz7lUohM/K0DleYjI27D+b73bGJOyD0/3v8nNwHvt2+2ai0WrFguq/bMn9BHX/WWu25/EytSd+z570kvLnONU+/bFwC2uxw4FNmNvSDPFxZFNWAsjvfbtvk6dB9bX1Yvt22+0/8jSjnlMwlzmAz779leBr7Trb9KqudiPXQV8ueTYXzN+cfdn03UursduYOLibsd9Vqr8TY7CkhaXlRyfdn+TknO9C1jbzrkU3qtVJ6ryS4thZYdzXcd+ATyNVRL1K2CR67HVwB/LnOcg4H6KJVwHuh67AriqzGsuwSrD2+D+w3XiPLAWRB/E0sefBN7ejnlM0lzeh1WC9gJwPRDu9LnYj20E3lByLIL1bWYD8AiuD/Q0nMsqrKCUsN/nmU7+rFSZx38B2ymWR/5yGv9NvgU8Y8/jHuCwds3F/U8tGxRFUWYZunNXURRllqGBX1EUZZahgV9RFGWWoYFfURRllqGBX1EUZZahgV+ZMYhITkSeFJFnRORPIvI39u7naq8ZEJEPTNL4rhCRz9q3v2JvQmrkPKtF5D9bOzplNjElrRcVpU2MGWNWAojIAqxdlXOBL1V5zQDwAfu5LcM2chNjTKkhGgDGmC+28v0UpR4041dmJMaYHcDHgcvFYkBEfi8ij9v/TrCfehVwsv1N4TMi4heRfxGRR0VknYj8Zbnz298mnrb/fdo+NiAifxaR72D53h8gIn8vIs+LyH9h7TB3Xn+DiLzPvr1ZRL5sj+spEXmDffxNIvKQiDxh/zx04kgUpX4041dmLMaYjbbUswDYAZxujEna1rg3YRl8fR74rDHmbAAR+Tiw1xizSkTCwIMicqcxZpNzXhE5BvgI8GYsW42HReQ+YDdWcP+IMeav7OddgGUxEMC6GFTyaRkyxhwtIn+FZXJ3KVZzm1OM5Qr6NuBKJvrCKErdaOBXZjqOy2EQuFZEVgI54JAKz387cISTjWNJRcuwvFIcTgJuM8YkAETkVuBk4JfAFmPMH+3nnWw/b9R+3i+rjPNW++djwLmu977RvlAZew6K0jQa+JUZi4gsxQryO7B0/u3AkVgSZ7LSy4BPGmN+V+3UVR5LlNz36oniOEzmKH4u/xG4xxhzjogMYLWxVJSmUY1fmZGISD/wXeBaYxlSzQW22YutH8JqpQcwjNUT1eF3wCdEJGif5xARiZec/n7gvSISsx87h2LHrtLnnSMiURHpxnJfrIe5WL0MwHI/VZSWoBm/MpOIisiTWJJIFvgx8A37se8AvxCR87FcEJ3MfB2QFZE/YdkVfwur0udxuzJnkKJHOgDGmMdF5AYst06A640xT9hZeenzforlvLiF8heHalyNJfX8DcXOcorSNOrOqSiKMstQqUdRFGWWoYFfURRllqGBX1EUZZahgV9RFGWWoYFfURRllqGBX1EUZZahgV9RFGWW8f8AEYvGayoZvwoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df=pd.read_csv('warehouse2.csv',parse_dates=['Date'])\n", "\n", "# filter 1 month\n", "start_date=df.loc[:,\"Date\"].max()-pd.Timedelta(30, unit='D')\n", "df=df.loc[df.loc[:,'Date'] >= start_date]\n", "\n", "train_xy=df.loc[:,['Date','Daily CBM']]\n", "train_xy=train_xy.drop_duplicates()\n", "train_xy[\"Date ordinal\"]=train_xy.loc[:,\"Date\"].apply(pd.Timestamp.toordinal)\n", "train_xy[\"Type\"]='Current'\n", "\n", "train_x=np.expand_dims(np.array(train_xy.loc[:,'Date ordinal']),axis=-1)\n", "train_y=np.array(train_xy.loc[:,'Daily CBM'])\n", "model = LinearRegression()\n", "model.fit(train_x, train_y)\n", "\n", "predict_xy=pd.DataFrame()\n", "for i in range(30):\n", " predict_date=train_xy.loc[:,\"Date\"].max()+pd.Timedelta(1+i, unit='D')\n", " append_df=pd.DataFrame(data={'Date':[predict_date], 'Type':['Predict']})\n", " append_df[\"Date ordinal\"]=append_df.loc[:,\"Date\"].apply(pd.Timestamp.toordinal)\n", " predict_x=np.expand_dims(np.expand_dims(np.array(append_df.loc[0,'Date ordinal']),axis=0),axis=0)\n", " predict_y=model.predict(predict_x)\n", " append_df[\"Daily CBM\"]=predict_y\n", " predict_xy=predict_xy.append(append_df)\n", "predict_xy\n", "\n", "plot_df=pd.concat([train_xy,predict_xy])\n", "plot_df.sort_values(by=['Date'],inplace=True)\n", "\n", "#plot_df\n", "#fig = px.line(plot_df, x=\"Date\", y=\"Daily CBM\", title='CBM prediction')\n", "sns.lineplot(x='Date ordinal',y='Daily CBM',hue='Type',data=plot_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Billing" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [], "source": [ "#df=pd.read_csv('data/billing0.csv')\n", "#df=pd.read_csv('billing0.csv')\n", "#df.iloc[:,2].value_counts()" ] }, { "cell_type": "code", "execution_count": 224, "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", "
No.DateNameStatusTraffic SourceRemarksNo. of employeesSelling PlatformUnnamed: 8Unnamed: 9
012020-01-05 00:00:00Harry ting siew kiatPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesNaNNaNNaN
122020-01-05 00:00:00KWANG SOO HAUPersonalGoogleNaNLess than 5 employeesShopeeNaNNaN
232020-01-05 00:00:00Lee hor waiPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesOtherNaNTraffic
342020-01-05 00:00:00ANG CHERN HAOPersonalIntroduce by friendsNaNLess than 5 employeesFacebookNaNFacebook
452020-01-05 00:00:00TAN SEE TINGPersonalFacebook&GoogleNaNLess than 5 employeesOtherNaNGoogle
.................................
17717831/5/2020lee kar munPersonalGoogleNaNLess than 5 employeesFacebookNaNNaN
17817931/5/2020Tor@toh shir siongPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesFacebookNaNNaN
17918031/5/2020Chua Yeow MengPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesShopeeNaNNaN
18018131/5/2020Ng kian yiapPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesOwn WebsiteNaNNaN
18118231/5/2020TOCK ERNPersonalGoogle*Without Upload Company SSM or ICLess than 5 employeesNaNNaNNaN
\n", "

182 rows × 10 columns

\n", "
" ], "text/plain": [ " No. Date Name Status \\\n", "0 1 2020-01-05 00:00:00 Harry ting siew kiat Personal \n", "1 2 2020-01-05 00:00:00 KWANG SOO HAU Personal \n", "2 3 2020-01-05 00:00:00 Lee hor wai Personal \n", "3 4 2020-01-05 00:00:00 ANG CHERN HAO Personal \n", "4 5 2020-01-05 00:00:00 TAN SEE TING Personal \n", ".. ... ... ... ... \n", "177 178 31/5/2020 lee kar mun Personal \n", "178 179 31/5/2020 Tor@toh shir siong Personal \n", "179 180 31/5/2020 Chua Yeow Meng Personal \n", "180 181 31/5/2020 Ng kian yiap Personal \n", "181 182 31/5/2020 TOCK ERN Personal \n", "\n", " Traffic Source Remarks \\\n", "0 Google *Without Upload Company SSM or IC \n", "1 Google NaN \n", "2 Google *Without Upload Company SSM or IC \n", "3 Introduce by friends NaN \n", "4 Facebook&Google NaN \n", ".. ... ... \n", "177 Google NaN \n", "178 Google *Without Upload Company SSM or IC \n", "179 Google *Without Upload Company SSM or IC \n", "180 Google *Without Upload Company SSM or IC \n", "181 Google *Without Upload Company SSM or IC \n", "\n", " No. of employees Selling Platform Unnamed: 8 Unnamed: 9 \n", "0 Less than 5 employees NaN NaN NaN \n", "1 Less than 5 employees Shopee NaN NaN \n", "2 Less than 5 employees Other NaN Traffic \n", "3 Less than 5 employees Facebook NaN Facebook \n", "4 Less than 5 employees Other NaN Google \n", ".. ... ... ... ... \n", "177 Less than 5 employees Facebook NaN NaN \n", "178 Less than 5 employees Facebook NaN NaN \n", "179 Less than 5 employees Shopee NaN NaN \n", "180 Less than 5 employees Own Website NaN NaN \n", "181 Less than 5 employees NaN NaN NaN \n", "\n", "[182 rows x 10 columns]" ] }, "execution_count": 224, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#df=pd.read_excel('may.xlsx',sheet_name=0,parse_dates=[0])\n", "#df.to_csv('marketing0.csv',index=False)\n", "\n", "df=pd.read_csv('marketing0.csv')\n", "df=df.iloc[:,1:8]\n", "df.columns=['Date','Name','Status','Traffic source','Remark','Number of employee', 'Selling platform']\n", "\n", "#df.loc[:,'Date']=pd.to_datetime(df.loc[:,'Date'],errors='coerce')\n", "\n", "#df1=pd.read_excel('may.xlsx',sheet_name=2,parse_dates=[0])\n", "#df1=df1.iloc[:,[0,1]]\n", "#df1.columns=['Date','CBM']\n", "#df=pd.merge(df,df1,how='left',on='Date')\n", "df\n", "#df1.columns\n", "#df2=pd.read_excel('may.xlsx',sheet_name=1,parse_dates=[0])\n", "#df1.columns\n", "#df1" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }