{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom datetime import datetime\nimport numpy as np","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles = pd.read_csv(\"D:/JCU/ExtraLearning/competitions/Kaggle/HM/code/data/articles.csv\")\ncustomer = pd.read_csv('D:/JCU/ExtraLearning/competitions/Kaggle/HM/code/data/customers.csv')\ntrain = pd.read_csv('D:/JCU/ExtraLearning/competitions/Kaggle/HM/code/data/transactions_train.csv')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"articles.head()\narticles.info()\narticles\n# customer.head()\n# customer.info()\n# train.head()\n# train.info()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"article_temp = articles.groupby([\"product_group_name\"]) [\"product_type_name\"].nunique()\np = pd.DataFrame({\n    'Article_Type':article_temp.index,\n    'Article_Value':article_temp.values\n})\np = p.sort_values(['Article_Value'], ascending=False)\nplt.figure(figsize = (15,10))\nplt.title('Number of product per each Product Type group')\ns = sns.barplot(p['Article_Type'],p['Article_Value'],data = p)\ns.set_xticklabels(s.get_xticklabels(),rotation=60)\nlocs, labels = plt.xticks()\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"article_temp = articles.groupby([\"product_group_name\"]) [\"article_id\"].nunique()\n\np = pd.DataFrame({\n    'Article_Type':article_temp.index,\n    'Number':article_temp.values\n})\np = p.sort_values(['Number'], ascending=False)\nplt.figure(figsize = (15,10))\nplt.title('Number of Articles per each Product Type group')\ns = sns.barplot(p['Article_Type'],p['Number'],data = p)\ns.set_xticklabels(s.get_xticklabels(),rotation=60)\n\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"article_temp2 = articles.groupby([\"product_type_name\"]) [\"colour_group_code\"].nunique()\np = pd.DataFrame({\n    'Article_Type':article_temp2.index,\n    'Colour':article_temp2.values\n})\np = p.sort_values(['Number'], ascending=False)\nplt.figure(figsize = (20,10))\nplt.title(f'Number of Articles per each Product Type ')\ns = sns.barplot(p['Article_Type'],p['Number'],data = p)\ns.set_xticklabels(s.get_xticklabels(),rotation=90)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"article_temp3 = articles.groupby([\"index_group_name\"]) [\"article_id\"].nunique()\np = pd.DataFrame({\n    'Gender':article_temp3.index,\n    'Number':article_temp3.values\n})\np = p.sort_values(['Number'], ascending=False)\nplt.figure(figsize = (20,10))\nplt.title('The clothes different between genders')\ns = sns.barplot(p['Gender'],p['Number'],data = p)\ns.set_xticklabels(s.get_xticklabels(),rotation=90)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ladieswear = articles[articles.index_group_name=='Ladieswear']\nladieswear_temp = ladieswear.groupby([\"colour_group_name\"])[\"article_id\"].nunique()\np1 = pd.DataFrame({\n    'Colour':ladieswear_temp.index,\n    'Number':ladieswear_temp.values\n})\n\nBady = articles[articles.index_group_name=='Baby/Children']\nBady_temp = Bady.groupby([\"colour_group_name\"])[\"article_id\"].nunique()\np2 = pd.DataFrame({\n    'Colour':Bady_temp.index,\n    'Number':Bady_temp.values\n})\n\nDivided = articles[articles.index_group_name=='Divided']\nDivided_temp = Divided.groupby([\"colour_group_name\"])[\"article_id\"].nunique()\np3 = pd.DataFrame({\n    'Colour':Divided_temp.index,\n    'Number':Divided_temp.values\n})\n\nMenswear = articles[articles.index_group_name=='Menswear']\nMenswear_temp = Menswear.groupby([\"colour_group_name\"])[\"article_id\"].nunique()\np4 = pd.DataFrame({\n    'Colour':Menswear_temp.index,\n    'Number':Menswear_temp.values\n})\n\n\nSport = articles[articles.index_group_name=='Sport']\nSport_temp = Sport.groupby([\"colour_group_name\"])[\"article_id\"].nunique()\np5 = pd.DataFrame({\n    'Colour':Sport_temp.index,\n    'Number':Sport_temp.values\n})\n\nplt.figure(figsize = (25,25))\nplt.subplots_adjust(wspace=0,hspace=0.5)\n\nplt.subplot(5,1,1)\np1 = p1.sort_values(['Number'], ascending=False)\nplt.bar(p1['Colour'],p1['Number'],1, color=['aquamarine'])\nplt.xticks(rotation = 45)\nplt.title('Lady')\n\nplt.subplot(5,1,2)\np2 = p2.sort_values(['Number'], ascending=False)\nplt.bar(p2['Colour'],p2['Number'], color=['dodgerblue'])\nplt.xticks(rotation = 45)\nplt.title('Baby')\n\nplt.subplot(5,1,3)\np3 = p3.sort_values(['Number'], ascending=False)\nplt.bar(p3['Colour'],p3['Number'], color=['yellow'])\nplt.xticks(rotation = 45)\nplt.title('Divided')\n\nplt.subplot(5,1,4)\np4 = p4.sort_values(['Number'], ascending=False)\nplt.bar(p4['Colour'],p4['Number'], color=['red'])\nplt.xticks(rotation = 45)\nplt.title('Man')\n\nplt.subplot(5,1,5)\np5 = p5.sort_values(['Number'], ascending=False)\nplt.bar(p5['Colour'],p5['Number'])\nplt.xticks(rotation = 45)\nplt.title('sport')\n\nplt.show()","metadata":{"scrolled":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer.head()\ncustomer.info()\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"c_a = customer.groupby(['age'])['customer_id'].nunique()\nc_a = pd.DataFrame({\n    \"age\":c_a.index,\n    \"amount\":c_a.values\n})\nc_a = c_a.sort_values(['amount'], ascending=False)\nplt.figure(figsize = (15,8))\nplt.title('Age different')\ns = sns.barplot(c_a['age'],c_a['amount'])\nplt.xticks(rotation=90)\nplt.show()\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"c_a1 = customer.groupby(['fashion_news_frequency'])['customer_id'].count()\nc_a1 = pd.DataFrame({\n    'frequency':c_a1.index,\n    'amount':c_a1.values\n})\nc_a1 = c_a1.sort_values(['amount'],ascending=False)\nplt.title(\"Frequency different\")\nsns.barplot(c_a1['frequency'],c_a1['amount'])\nplt.xticks(rotation=90)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"c_a2 = customer.groupby(['club_member_status'])['customer_id'].count()\nc_a2 = pd.DataFrame({\n    'Status':c_a2.index,\n    'amount':c_a2.values\n})\nc_a2 = c_a2.sort_values(['amount'],ascending=False)\nplt.title(\"Status different\")\nsns.barplot(c_a2['Status'],c_a2['amount'])\nplt.xticks(rotation=90)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()\ntrain.info()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train\ncustomer_result = train['customer_id'].value_counts()\ncustomer_result","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_sample = train.sample(200000).groupby([\"t_dat\"])[\"article_id\"].count().reset_index()\ntrain_sample[\"t_dat\"] = train_sample[\"t_dat\"].apply(lambda x: datetime.strptime(x, '%Y-%m-%d'))\nfig, ax = plt.subplots(1, 1, figsize=(20,5))\nplt.plot(train_sample[\"t_dat\"], train_sample[\"article_id\"], color=\"Blue\")\nplt.title(\"Transactions per mouth (200k sample)\")\nplt.xticks(pd.date_range('2018-9-01','2020-09-30',freq='M'))\nplt.xticks(rotation=90)\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_sample = train.sample(200000).groupby([\"t_dat\",\"sales_channel_id\"])[\"article_id\"].count().reset_index()\ntrain_sample[\"t_dat\"] = train_sample[\"t_dat\"].apply(lambda x: datetime.strptime(x, '%Y-%m-%d'))\nfig, ax = plt.subplots(1, 1, figsize=(20,5))\ng1 = ax.plot(train_sample.loc[train_sample[\"sales_channel_id\"]==1, \"t_dat\"], train_sample.loc[train_sample[\"sales_channel_id\"]==1, \"article_id\"], label=\"Sales Channel 1\", color=\"Darkblue\")\ng2 = ax.plot(train_sample.loc[train_sample[\"sales_channel_id\"]==2, \"t_dat\"], train_sample.loc[train_sample[\"sales_channel_id\"]==2, \"article_id\"], label=\"Sales Channel 2\", color=\"Magenta\")\nplt.xlabel(\"t_dat\")\nplt.ylabel(\"article_id\")\nplt.title(\"Transactions per mounth, grouped by Sales Channel\")\nplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train_sample['sales_channel_id'].value_counts())","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer_article_result = pd.concat([train,articles], axis=1, join='inner')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer_article_result.head()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer_article_result.drop(['t_dat','article_id','product_code','detail_desc'],axis=1)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer_train_result = pd.concat([train,customer], axis=1, join='inner')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(format(customer_train_result['Active'].isnull().sum()/customer_train_result.shape[0], '.0%'))\n# precentage = format(customer_train_result['Active'].isnull().sum()/customer_train_result.shape[0], '.0%')\n# print(f\"The precentage of active rate\"{precentage})","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"customer_train_result = customer_train_result.drop(['customer_id'],axis=1)\n# ctr = customer_train_result.groupby(['customer_id'])['club_member_status'].value_counts()\n# ctr","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result = pd.concat([train,articles], axis=1, join='inner')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"final_result = pd.concat([result,customer], axis=1, join='inner')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}