{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Analysis - Instakart" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before carrying out MBA on the given dataset, we can study the given dataset, its attributes and summarize the dataset for a better understanding." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#imports\n", "import pandas as pd #Python data analysis library\n", "import numpy as np #Python scientific computing\n", "import matplotlib.pyplot as plt #For plotting\n", "import matplotlib.mlab as mlab\n", "import seaborn as sns #Python visualization library\n", "from scipy.optimize import curve_fit\n", "from IPython.display import display, HTML\n", "\n", "#Plots inline\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Citation - “The Instacart Online Grocery Shopping Dataset 2017”, Accessed from https://www.instacart.com/datasets/grocery-shopping-2017\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#import dataset\n", "trainDf = pd.read_csv(\"../data/raw/order_products__train.csv\")\n", "orderDf = pd.read_csv(\"../data/raw/orders.csv\")\n", "depDf = pd.read_csv(\"../data/raw/departments.csv\")\n", "aisleDf = pd.read_csv(\"../data/raw/aisles.csv\")\n", "productDf = pd.read_csv(\"../data/raw/products.csv\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3421083, 7)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orderDf.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 3421083 orders, roughly 35 lakh orders" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(49688, 4)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "productDf.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 49688 products, roughly 50000 products" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#get distribution of number of orders per customer\n", "sns.set_style('whitegrid')\n", "customerNumOrderFrame = orderDf.groupby(\"user_id\",as_index = False)[\"order_number\"].max()\n", "num_bins = 10\n", "n, bins, patches = plt.hist(customerNumOrderFrame[\"order_number\"] , num_bins, normed=1, color='blue', alpha=0.5)\n", "mu = customerNumOrderFrame[\"order_number\"].mean()\n", "sigma = customerNumOrderFrame[\"order_number\"].std()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking at the histogram it seems to be skewed and appropriate distribution will be an exponential function." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,u'Number of Orders per Customer Distribution')" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEPCAYAAACk43iMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzt3XlcVPX6wPEPwzCoDC64ZSqmKGp1EVC77uWW6cVcQ0Jp9WbWzVzDNQkRl7yWW5bl0sUSTK1ft/K6lEWutztKSIHeyOu+4JbMKMMy398fI6MoIts4MPO8X695ceZ855zzPDM6z3zP8j1uSimFEEIIl6RxdABCCCEcR4qAEEK4MCkCQgjhwqQICCGEC5MiIIQQLkyKgBBCuDApAg5w4sQJWrZsyWeffVZg/sqVK5k8eXK5badHjx4cPHiw3NZXFKPRSFhYGH/5y1/YsmXLbe3Hjx9n3Lhx9OrViyeffJKhQ4eyYcOGYq+/vN+be2H//v28+OKLDBgwgJCQEF566SUOHz5c6vUdP36c1157rRwjLJ19+/YREBDAgAEDGDBgAP3792fYsGH88MMPttdMmzaN3bt3F7me6dOnk5KSUmhb/vInTpwgKCioxDF+//33LFq0CIBvv/2WmJiYEq/DVWgdHYCr0mg0zJs3j3bt2tG0aVNHh1NmqampXLhwgW3btt3WduLECUaMGMHYsWNZuHAhbm5unD17lokTJ3L06FEmTJjggIjt66effmLSpEksXbqUhx9+GIAvv/ySiIgINm/ejI+PT4nXeerUKY4cOVLeoZaKr68v//d//2d7npaWxosvvsh7771HmzZtmD179l3XsXv3boYNG1ZoW/7yJ06cKFV8Bw8e5I8//gCgZ8+e9OzZs1TrcQVSBBykSpUqPP/880yYMIH4+Hh0Ol2B9smTJ9OiRQtefPHF25736NGDkJAQvv/+ey5fvsxrr73G/v37+eWXX9BqtSxfvpz69esD8Omnn5KWlkZ2djbPP/88Q4cOBeC7775j+fLl5OTkUKVKFSIjIwkKCmLJkiUkJSVx7tw5WrZsyYIFCwrEtX37dpYuXUpeXh56vZ4pU6ag1+uZOnUqZ8+eZcCAASQkJFClShXbMitWrCAkJIRBgwbZ5tWvX5933nmHnj17EhERwc6dO9mwYQPXrl1Dr9ezatUqYmJi2L17N7Vr16Z27dp4e3sDkJmZyezZszl8+DA5OTl07NiRN954A61Wy8MPP0zPnj1JS0tjwYIF7Nixg23btuHh4UGtWrWYM2cO9erVu+29dnNzIz09nYsXL9K5c2emT5+Oh4cH6enpzJ49m8uXL5OXl0dERARDhw5l3759zJ49m2rVqnH16lU2bNhQ4DNcvHgxr7zyiq0AADz55JN4enqSl5fHvn37mDVrFl999RVAgefp6elMmzaN7OxslFIMHTqUsLAwpk+fztmzZ3nxxRdZuXJloZ9FQEAAS5Ys4dixYxw/fpxz584REBBA586d+eKLLzhx4gSTJk0iJCQEgOXLl7N161YsFgsNGzZk5syZ1K9fn4iICGrUqMHvv//O008/TURERJH/nlu1akVERARr1qzhnXfeISIiguHDh9OrVy9mzZrF/v378fDwoFGjRsyZM4cVK1Zw7tw5Jk6cyPz581mwYEGB7W3dupXhw4fz8MMPY7FYmDZtmu3f9/Tp0wkMDGTJkiVcunSJN998E8D2fMCAAcTHx5OXl4e3tzdNmjRhy5YtfPDBB5w5c4aoqChOnjyJUoqBAwcycuRITpw4wXPPPcejjz7Kzz//zB9//MG4cePo169fkXk7BSXuuePHj6vAwECVl5enwsPD1dy5c5VSSn300UcqMjJSKaVUZGSk+uijj2zL3Py8e/fuKjY2Viml1Ndff61atWqlUlNTlVJKvfLKK2r58uW2182cOVMppdSZM2dUhw4d1OHDh9WRI0dUSEiIunjxolJKqcOHD6vOnTsrk8mkFi9erPr06aNycnJui/u3335TnTp1UseOHVNKKbV7927VuXNnlZmZqfbu3av+8pe/FJpvSEiI2rFjR6FtgwYNUlu3blUbN25U7du3V5mZmUoppdasWaOeeeYZZTablclkUoMGDbK9N5MnT1b/+Mc/lFJK5ebmqokTJ6oVK1YopZTy9/dXn3/+uVJKqVOnTqng4GBlNpuVUkqtXLlSbdu27bYYIiMj1cCBA5XRaFRms1kNHz5cxcXFqZycHNWvXz+VkpKilFLqypUrqm/fvurAgQNq7969qlWrVurEiROF5hUYGKj++9//FtqmlLrt/br5+ZQpU9QHH3yglFLq3LlzauzYsSovL6/Aa4r6LBYvXqy6d++urly5oq5du6bat2+v5syZo5RSatu2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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n, bins, patches = plt.hist(customerNumOrderFrame[\"order_number\"] , num_bins, normed=1, facecolor='yellow', alpha=0.5)\n", "\n", "bins = np.delete(bins,10) #to make dimensions of x & y axis values equal\n", "bins = bins+5 #to ge the central value of each bar\n", "\n", "def exponenial_func(x, a, b, c):\n", " return a*np.exp(-b*x)+c\n", "\n", "popt, pcov = curve_fit(exponenial_func, bins, n, p0=(1, 1e-6, 1))\n", "\n", "xx = np.linspace(8, 100, 30)\n", "yy = exponenial_func(xx, *popt)\n", "\n", "plt.plot(xx, yy ,'r--')\n", "plt.xlabel(\"No. of Orders\")\n", "plt.ylabel(\"Count\")\n", "plt.title(\"Number of Orders per Customer Distribution\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now to find the top frequently purchased products we will merge the prior and train dataset to get the complete order dataset. We will use append() for doing so." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "priorDf = pd.read_csv(\"../data/raw/order_products__prior.csv\")\n", "trainDf = trainDf.append(priorDf,ignore_index = True)\n", "#Now a product count data frame can be created by counting the order_id for each product_id\n", "productCountDf = trainDf.groupby(\"product_id\",as_index = False)[\"order_id\"].count()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(49685, 2)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "productCountDf.shape" ] }, { "cell_type": "code", "execution_count": 17, "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", "
product_name
0Banana
1Bag of Organic Bananas
2Organic Strawberries
3Organic Baby Spinach
4Organic Hass Avocado
5Organic Avocado
6Large Lemon
7Strawberries
8Limes
9Organic Whole Milk
10Organic Raspberries
11Organic Yellow Onion
12Organic Garlic
13Organic Zucchini
14Organic Blueberries
15Cucumber Kirby
16Organic Fuji Apple
17Organic Lemon
18Organic Grape Tomatoes
19Apple Honeycrisp Organic
\n", "
" ], "text/plain": [ " product_name\n", "0 Banana\n", "1 Bag of Organic Bananas\n", "2 Organic Strawberries\n", "3 Organic Baby Spinach\n", "4 Organic Hass Avocado\n", "5 Organic Avocado\n", "6 Large Lemon\n", "7 Strawberries\n", "8 Limes\n", "9 Organic Whole Milk\n", "10 Organic Raspberries\n", "11 Organic Yellow Onion\n", "12 Organic Garlic\n", "13 Organic Zucchini\n", "14 Organic Blueberries\n", "15 Cucumber Kirby\n", "16 Organic Fuji Apple\n", "17 Organic Lemon\n", "18 Organic Grape Tomatoes\n", "19 Apple Honeycrisp Organic" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Top 20 most frequently purchased products\n", "topLev = 20\n", "\n", "#Here order_id is the count so we need to sort the data frame w.r.t order_id\n", "productCountDf = productCountDf.sort_values(\"order_id\",ascending = False)\n", "\n", "topProdFrame = productCountDf.iloc[0:topLev,:]\n", "topProdFrame = topProdFrame.merge(productDf,on = \"product_id\")\n", "\n", "display(topProdFrame.loc[:,[\"product_name\"]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A density plot for product count can give an idea about to what extend we can perform smoothing of the dataset " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,u'Density')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Calculate the density\n", "productCountDf[\"density\"] = (productCountDf[\"order_id\"]/np.sum(productCountDf[\"order_id\"]))\n", "#Calculate the rank\n", "productCountDf[\"rank\"] = range(productCountDf.shape[0])\n", "plt.plot(productCountDf[\"rank\"],productCountDf[\"density\"])\n", "plt.title(\"Density Plot for product counts\")\n", "plt.xlabel(\"Rank\")\n", "plt.ylabel(\"Density\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is hard to interpret much from this graph due to wide-ranging ranks (0-50000), So we can go for logarthmic scale for better visualization" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Calculate log(Rank) also we add 1 to avoid log(0)\n", "productCountDf[\"logRank\"] = np.log(productCountDf[\"rank\"] + 1) \n", "plt.title(\"Density Plot for product counts\")\n", "plt.xlabel(\"$\\log(Rank)$\")\n", "plt.ylabel(\"Density\")\n", "plt.plot(productCountDf[\"logRank\"],productCountDf[\"density\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see a very steep distribuiton and we can perform smoothening on the sparse distribuition area. e^6 = 403 products define most of the distribution. Products lying under (e^6, e^12) range are not significant since their respective density is very less." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Days of Orders in a week" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grouped = orderDf.groupby(\"order_id\")[\"order_dow\"].aggregate(\"sum\").reset_index()\n", "grouped = grouped.order_dow.value_counts()\n", "\n", "sns.barplot(grouped.index, grouped.values)\n", "plt.ylabel('Number of orders', fontsize=13)\n", "plt.xlabel('Days of order in a week', fontsize=13)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Number of unique customers in the whole dataset-" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "206209" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(set(orderDf.user_id))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }