{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "_cell_guid": "3ddcbdb0-0f1f-c998-eea2-180c8fd72d5e"
      },
      "source": [
        "This kernel refers to the previous kernel [predict_sales_with_pandas\n",
        "](https://www.kaggle.com/zygmunt/rossmann-store-sales/predict-sales-with-pandas-py)\n",
        "\n",
        "### 1 \"Predict sales as a historical median for a given store, day of week, and promo\"\n",
        "### 2 \"Predict sales as a historical mean for a given store, day of week, and promo\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "6216b452-e9a1-348e-0dab-a920362cc44f"
      },
      "outputs": [],
      "source": [
        "import pandas as pd\n",
        "# Read data\n",
        "train_data=pd.read_csv('../input/train.csv')\n",
        "test_data=pd.read_csv('../input/test.csv')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "d03e5f78-f60d-0182-db24-a35e5125c162"
      },
      "outputs": [],
      "source": [
        "# Get mean/median sales value from store/DayOfWeek,Promo\n",
        "mean_value=train_data[train_data['Open']==1][['Sales','Store','DayOfWeek','Promo']].groupby(['Store','DayOfWeek','Promo']).mean()\n",
        "median_value=train_data[train_data['Open']==1][['Sales','Store','DayOfWeek','Promo']].groupby(['Store','DayOfWeek','Promo']).median()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "39a89aad-4563-a292-dc5e-cdb2aa25ff54"
      },
      "outputs": [],
      "source": [
        "def set_testValue(value_df,isOpen,storeId,dayOfWeek,isPromo):\n",
        "    if isOpen==0:\n",
        "        return 0\n",
        "    else:\n",
        "        return value_df.ix[storeId,dayOfWeek,isPromo]\n",
        "# Based on the mean value\n",
        "test_data['Sales_Prediction_Mean']=test_data.apply(lambda row: set_testValue(\n",
        "        mean_value,row['Open'],row['Store'],row['DayOfWeek'],row['Promo']),axis=1)\n",
        "# Based on the median value\n",
        "test_data['Sales_Prediction_Median']=test_data.apply(lambda row: set_testValue(\n",
        "        median_value,row['Open'],row['Store'],row['DayOfWeek'],row['Promo']),axis=1)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "34ddc9a7-5459-a452-ba98-2da788b5fb6c"
      },
      "outputs": [],
      "source": [
        "#Output data to csv\n",
        "mean_output=test_data.ix[:,['Id','Sales_Prediction_Mean']].rename(columns={'Sales_Prediction_Mean': 'Sales'})\n",
        "mean_output.to_csv('rossmann_sales_mean.csv',index=False)\n",
        "\n",
        "median_output=test_data.ix[:,['Id','Sales_Prediction_Median']].rename(columns={'Sales_Prediction_Median': 'Sales'})\n",
        "median_output.to_csv('rossmann_sales_median.csv',index=False)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "24eb8186-c9a9-3343-6904-b8621921c41b"
      },
      "outputs": [],
      "source": ""
    }
  ],
  "metadata": {
    "_change_revision": 0,
    "_is_fork": false,
    "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.6.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}