{"nbformat_minor": 1, "cells": [{"cell_type": "code", "outputs": [], "execution_count": null, "source": ["# This Python 3 environment comes with many helpful analytics libraries installed\n", "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n", "# For example, here's several helpful packages to load in \n", "\n", "import numpy as np # linear algebra\n", "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", "\n", "import datetime\n", "\n", "# Input data files are available in the \"../input/\" directory.\n", "# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n", "\n", "from subprocess import check_output\n", "print(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n", "\n", "# Any results you write to the current directory are saved as output."], "metadata": {"_uuid": "f3024c930820f57d3368d8a2f1465816de833cf3", "_cell_guid": "91598329-8543-4a14-9734-324ee9dd5161"}}, {"cell_type": "code", "outputs": [], "execution_count": null, "source": ["dtypes = {'store_nbr': np.dtype('int64'),\n", "          'item_nbr': np.dtype('int64'),\n", "          'unit_sales': np.dtype('float64'),\n", "          'onpromotion': np.dtype('O')}\n", "\n", "train = pd.read_csv('../input/train.csv', index_col='id', parse_dates=['date'], dtype=dtypes)\n", "\n", "# If done on all train data, results in 367m rows. So, we're taking a small sample:\n", "date_mask = (train['date'] >= '2016-08-28') & (train['date'] <= '2016-08-31')\n", "print(train.shape)\n", "train = train[date_mask]\n", "print(train.shape)"], "metadata": {}}, {"cell_type": "code", "outputs": [], "execution_count": null, "source": ["orig_train_index = train.index # will need later\n", "\n", "# Bracket the dates\n", "max_date = train['date'].max()  \n", "min_date = train['date'].min()  \n", "days = (max_date - min_date).days + 1 \n", "\n", "# Master list of dates\n", "dates = [min_date + datetime.timedelta(days=x) for x in range(days)]\n", "dates.sort()\n", "\n", "# Master list of stores\n", "unique_stores = list(set(train['store_nbr'].unique())) # | set(test['Store'].unique()))\n", "unique_stores.sort()\n", "num_unique_stores = len(unique_stores)\n", "\n", "# Master list of Items\n", "unique_items = list(set(train['item_nbr'].unique())) # | set(test['item_nbr'].unique()))\n", "unique_items.sort()\n", "num_unique_items = len(unique_items)\n", "\n", "# Unique Date / Store index\n", "date_index = np.repeat(dates, num_unique_stores * num_unique_items) # num dates * num stores * num items\n", "store_index = np.concatenate([np.repeat(unique_stores, num_unique_items)] * days)\n", "item_index = np.concatenate([unique_items] * days * num_unique_stores)\n", "\n", "print(len(date_index))\n", "print(len(store_index))\n", "print(len(item_index))\n", "\n", "start = train.index.tolist()[0]\n", "new_train_index = list(range(len(item_index)))\n", "new_train_index = new_train_index + start\n", "\n", "train_new = pd.DataFrame(index=new_train_index, columns=train.columns)\n", "\n", "train_new['date'] = date_index\n", "train_new['store_nbr'] = store_index\n", "train_new['item_nbr'] = item_index\n", "\n", "train_new.index.name = 'id'\n", "\n", "# Set the indexes (makes it easy to insert data into new)\n", "train_new.set_index(['date', 'store_nbr', 'item_nbr'], drop=True, inplace=True)\n", "train.set_index(['date', 'store_nbr', 'item_nbr'], drop=True, inplace=True)\n", "\n", "# Update the master index with and train\n", "train_new.update(train)\n", "train_new.reset_index(inplace=True)\n", "\n", "# Return the original train back to normal\n", "train.reset_index(inplace=True)\n", "train.set_index(orig_train_index, inplace=True)\n", "\n", "# Fill the created unit sales with zero\n", "train_new['unit_sales'].fillna(0, inplace=True)\n", "\n", "print(train.shape)\n", "print(train_new.shape)"], "metadata": {}}, {"cell_type": "code", "outputs": [], "execution_count": null, "source": ["train.head()"], "metadata": {}}, {"cell_type": "code", "outputs": [], "execution_count": null, "source": ["train_new.head()"], "metadata": {}}, {"cell_type": "code", "outputs": [], "execution_count": null, "source": [], "metadata": {"collapsed": true}}], "metadata": {"language_info": {"version": "3.6.3", "file_extension": ".py", "codemirror_mode": {"name": "ipython", "version": 3}, "nbconvert_exporter": "python", "name": "python", "mimetype": "text/x-python", "pygments_lexer": "ipython3"}, "kernelspec": {"language": "python", "name": "python3", "display_name": "Python 3"}}, "nbformat": 4}