Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save parksunwoo/7478810062dbc8cce1ffb7955370ead7 to your computer and use it in GitHub Desktop.
Save parksunwoo/7478810062dbc8cce1ffb7955370ead7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"\n",
"# 일관된 출력을 위해 유사난수 초기화\n",
"np.random.seed(42)\n",
"\n",
"%matplotlib inline\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"# 한글출력\n",
"matplotlib.rc('font', family='NanumBarunGothic')\n",
"plt.rcParams['axes.unicode_minus'] = False\n",
"\n",
"# 그림을 저장할 폴드\n",
"PROJECT_ROOT_DIR = \".\"\n",
"# CHAPTER_ID = \"end_to_end_project\"\n",
"IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\")\n",
"\n",
"def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
" path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n",
" if tight_layout:\n",
" plt.tight_layout()\n",
" plt.savefig(path, format=fig_extension, dpi=resolution)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TripType</th>\n",
" <th>VisitNumber</th>\n",
" <th>Weekday</th>\n",
" <th>Upc</th>\n",
" <th>ScanCount</th>\n",
" <th>DepartmentDescription</th>\n",
" <th>FinelineNumber</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>999</td>\n",
" <td>5</td>\n",
" <td>Friday</td>\n",
" <td>6.811315e+10</td>\n",
" <td>-1</td>\n",
" <td>FINANCIAL SERVICES</td>\n",
" <td>1000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>30</td>\n",
" <td>7</td>\n",
" <td>Friday</td>\n",
" <td>6.053882e+10</td>\n",
" <td>1</td>\n",
" <td>SHOES</td>\n",
" <td>8931.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>30</td>\n",
" <td>7</td>\n",
" <td>Friday</td>\n",
" <td>7.410811e+09</td>\n",
" <td>1</td>\n",
" <td>PERSONAL CARE</td>\n",
" <td>4504.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>26</td>\n",
" <td>8</td>\n",
" <td>Friday</td>\n",
" <td>2.238404e+09</td>\n",
" <td>2</td>\n",
" <td>PAINT AND ACCESSORIES</td>\n",
" <td>3565.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>26</td>\n",
" <td>8</td>\n",
" <td>Friday</td>\n",
" <td>2.006614e+09</td>\n",
" <td>2</td>\n",
" <td>PAINT AND ACCESSORIES</td>\n",
" <td>1017.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TripType VisitNumber Weekday Upc ScanCount \\\n",
"0 999 5 Friday 6.811315e+10 -1 \n",
"1 30 7 Friday 6.053882e+10 1 \n",
"2 30 7 Friday 7.410811e+09 1 \n",
"3 26 8 Friday 2.238404e+09 2 \n",
"4 26 8 Friday 2.006614e+09 2 \n",
"\n",
" DepartmentDescription FinelineNumber \n",
"0 FINANCIAL SERVICES 1000.0 \n",
"1 SHOES 8931.0 \n",
"2 PERSONAL CARE 4504.0 \n",
"3 PAINT AND ACCESSORIES 3565.0 \n",
"4 PAINT AND ACCESSORIES 1017.0 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_train = pd.read_csv(\"../8th_week/data/train2.csv\")\n",
"df_test = pd.read_csv(\"../8th_week/data/test2.csv\")\n",
"df_train.head()\n",
"#df_test.head()\n",
"\n",
"# TripType - a categorical id representing the type of shopping trip the customer made. This is the ground truth that you are predicting. TripType_999 is an \"other\" category.\n",
"# VisitNumber - an id corresponding to a single trip by a single customer\n",
"# Weekday - the weekday of the trip\n",
"# Upc - the UPC number of the product purchased\n",
"# ScanCount - the number of the given item that was purchased. A negative value indicates a product return.\n",
"# DepartmentDescription - a high-level description of the item's department\n",
"# FinelineNumber - a more refined category for each of the products, created by Walmart"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# step1. EDA"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 647054 entries, 0 to 647053\n",
"Data columns (total 7 columns):\n",
"TripType 647054 non-null int64\n",
"VisitNumber 647054 non-null int64\n",
"Weekday 647054 non-null object\n",
"Upc 642925 non-null float64\n",
"ScanCount 647054 non-null int64\n",
"DepartmentDescription 645693 non-null object\n",
"FinelineNumber 642925 non-null float64\n",
"dtypes: float64(2), int64(3), object(2)\n",
"memory usage: 34.6+ MB\n"
]
}
],
"source": [
"df_train.info()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataframe dimensions: (647054, 7)\n"
]
}
],
"source": [
"print('Dataframe dimensions:', df_train.shape)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TripType</th>\n",
" <th>VisitNumber</th>\n",
" <th>Upc</th>\n",
" <th>ScanCount</th>\n",
" <th>FinelineNumber</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>647054.000000</td>\n",
" <td>647054.000000</td>\n",
" <td>6.429250e+05</td>\n",
" <td>647054.000000</td>\n",
" <td>642925.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>58.584511</td>\n",
" <td>96167.640078</td>\n",
" <td>3.060698e+10</td>\n",
" <td>1.108878</td>\n",
" <td>3726.884567</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>157.635533</td>\n",
" <td>55545.485154</td>\n",
" <td>9.120134e+10</td>\n",
" <td>0.700776</td>\n",
" <td>2780.966158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>3.000000</td>\n",
" <td>5.000000</td>\n",
" <td>8.340000e+02</td>\n",
" <td>-12.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>27.000000</td>\n",
" <td>49268.000000</td>\n",
" <td>3.400001e+09</td>\n",
" <td>1.000000</td>\n",
" <td>1404.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>39.000000</td>\n",
" <td>97074.000000</td>\n",
" <td>7.050103e+09</td>\n",
" <td>1.000000</td>\n",
" <td>3352.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>40.000000</td>\n",
" <td>144316.000000</td>\n",
" <td>3.006531e+10</td>\n",
" <td>1.000000</td>\n",
" <td>5501.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>999.000000</td>\n",
" <td>191347.000000</td>\n",
" <td>9.789707e+11</td>\n",
" <td>71.000000</td>\n",
" <td>9998.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TripType VisitNumber Upc ScanCount \\\n",
"count 647054.000000 647054.000000 6.429250e+05 647054.000000 \n",
"mean 58.584511 96167.640078 3.060698e+10 1.108878 \n",
"std 157.635533 55545.485154 9.120134e+10 0.700776 \n",
"min 3.000000 5.000000 8.340000e+02 -12.000000 \n",
"25% 27.000000 49268.000000 3.400001e+09 1.000000 \n",
"50% 39.000000 97074.000000 7.050103e+09 1.000000 \n",
"75% 40.000000 144316.000000 3.006531e+10 1.000000 \n",
"max 999.000000 191347.000000 9.789707e+11 71.000000 \n",
"\n",
" FinelineNumber \n",
"count 642925.000000 \n",
"mean 3726.884567 \n",
"std 2780.966158 \n",
"min 0.000000 \n",
"25% 1404.000000 \n",
"50% 3352.000000 \n",
"75% 5501.000000 \n",
"max 9998.000000 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 숫자형 특성의 요약정보\n",
"df_train.describe()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sunday 133975\n",
"Saturday 122096\n",
"Friday 96247\n",
"Monday 83130\n",
"Tuesday 72529\n",
"Wednesday 71115\n",
"Thursday 67962\n",
"Name: Weekday, dtype: int64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 범주형 특성의 정보\n",
"df_train[\"Weekday\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(array([0.24791079, 0.21412432, 0. , 0.31449204, 0. ,\n",
" 0.34508969, 0.17505494, 0. , 0.18681851, 0.18317637]),\n",
" array([0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4, 6. ]),\n",
" <a list of 10 Patch objects>)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1320: UserWarning: findfont: Font family ['NanumBarunGothic'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD/CAYAAAD8MdEiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAFO9JREFUeJzt3X+s3fV93/HnK1wYyPZVQnCtNRs4SfHSuMOM+a9ZTumaNEnTCCIijdolabPIFRbNolZsaVNE5mYFImWZthETq/lVQtmqYAYEJNhaUAFpS0yJQ65KbhrHbiBpufy6+F4c3Drv/XGOs9OzY9/vPfdcH9vf50M6ss/n+z6f8/nI9n358/1+z+ekqpAktderxj0ASdJ4GQSS1HIGgSS1nEEgSS1nEEhSyxkEktRyBoEktZxBIEktZxBIUstNjHsATZx33nm1du3acQ9Dkk4Zjz322LNVtbpJ7SkRBGvXrmXPnj3jHoYknTKSHGha66khSWo5g0CSWq5RECQ5N8mdSeaTHEiy5Rh1H06yL8lLSb6f5FNJJnqO709yKMlc9/HAqCYiSRpO0xXBzcBhYA2wFdiZZP2AunuAS6pqEvgZYAPwob6ad1fVyu7jF4YctyRpRBYMgiQrgCuA66pqrqoeAe4GruqvrarvVNWLR18K/Aj4qRGOV5I0Yk1WBOuAI1U13dO2Fxi0IiDJliQvAc/SWRF8pq/ktiQzSR5IsmGYQUuSRqdJEKwEZvvaZoFVg4qr6o+6p4bWAbcAf9NzeCuwFrgAeBC4P8mrB/WTZFuSPUn2zMzMNBimJGkYTYJgDpjsa5sEDh7vRVX1bWAK+HRP26NVdaiqXq6qG4AXgc3HeP2uqtpYVRtXr270mQhJ0hCaBME0MJHkwp62DXR+yC9kAnjjcY4XnWsJkqQxWfCTxVU1n2Q3sCPJB4GLgcuAf9Ff2z1+d1U9k+TNwG8D93ePnQ/8Y+BrdALoN4DzgEdHNBfphFv7kXvH8r77b3zXWN5Xp6emt49uB84BngFuB66uqqkkm5PM9dRtAp5IMg/c1338TvfYKmAn8ALwNPAO4J1V9dzSpyFJGlajvYaq6nng8gHtD9O5mHz0+a8dp48p4KIhxihJWkZuMSFJLWcQSFLLGQSS1HIGgSS1nEEgSS1nEEhSyxkEktRyBoEktZxBIEktZxBIUssZBJLUcgaBJLWcQSBJLWcQSFLLGQSS1HKNvo9AamJc39YFfmOXtBSuCCSp5QwCSWo5g0CSWs4gkKSWaxQESc5NcmeS+SQHkmw5Rt2Hk+xL8lKS7yf5VJKJnuNrkzyY5OUkTyZ566gmIkkaTtMVwc3AYWANsBXYmWT9gLp7gEuqahL4GWAD8KGe47cDjwOvBT4KfDnJ6iHHLkkagQWDIMkK4Arguqqaq6pHgLuBq/prq+o7VfXi0ZcCPwJ+qtvPOuAS4PqqOlRVdwBPdPuWJI1JkxXBOuBIVU33tO0FBq0ISLIlyUvAs3RWBJ/pHloP7Kuqg036kSSdGE2CYCUw29c2C6waVFxVf9Q9NbQOuAX4m2H6SbItyZ4ke2ZmZhoMU5I0jCZBMAdM9rVNAgcH1P5YVX0bmAI+PUw/VbWrqjZW1cbVq72MIEnLpUkQTAMTSS7sadtA54f8QiaAN3Z/PwW8IUnvCqBpP5KkZbJgEFTVPLAb2JFkRZJNwGXArf21ST6Y5Ce6v38z8NvAn3T7mQa+Dlyf5Owk7wEuAu4Y1WQkSYvX9PbR7cA5wDN0bgG9uqqmkmxOMtdTtwl4Isk8cF/38Ts9x68ENgIvADcC760qLwBI0hg12n20qp4HLh/Q/jCdi8BHn//aAv3sBy5d1AglScvKLSYkqeUMAklqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJYzCCSp5QwCSWo5g0CSWs4gkKSWMwgkqeUMAklqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJZrFARJzk1yZ5L5JAeSbDlG3bVJvpnkYJLvJrm27/j+JIeSzHUfD4xiEpKk4U00rLsZOAysAS4G7k2yt6qm+uoCvA/4BvBG4IEk36uq/9ZT8+6q+l9LHLckaUQWXBEkWQFcAVxXVXNV9QhwN3BVf21VfaKq/ryq/q6qvgXcBWwa9aAlSaPT5NTQOuBIVU33tO0F1h/vRUkCbAb6Vw23JZlJ8kCSDYsarSRp5JoEwUpgtq9tFli1wOs+1u3/8z1tW4G1wAXAg8D9SV496MVJtiXZk2TPzMxMg2FKkobR5BrBHDDZ1zYJHDzWC5JcQ+daweaqeuVoe1U92lN2Q5L301k13NPfR1XtAnYBbNy4sRqMc6C1H7l32Jcuyf4b3zWW95WkxWqyIpgGJpJc2NO2gf//lA8AST4AfAT4+ap6aoG+i84FZknSmCwYBFU1D+wGdiRZkWQTcBlwa39tkq3A7wNvq6p9fcfOT7IpyVlJzu7eWnoe8Gh/P5KkE6fpB8q2A+cAzwC3A1dX1VSSzUnmeuo+DrwW+FrPZwVu6R5bBewEXgCeBt4BvLOqnhvFRCRJw2n0OYKqeh64fED7w3QuJh99/vrj9DEFXDTEGCVJy8gtJiSp5QwCSWo5g0CSWs4gkKSWMwgkqeUMAklqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJYzCCSp5QwCSWo5g0CSWq7R9xFo8cb1Xcng9yVLWhxXBJLUcgaBJLWcQSBJLWcQSFLLNQqCJOcmuTPJfJIDSbYco+7aJN9McjDJd5Nc23d8bZIHk7yc5Mkkbx3FJCRJw2u6IrgZOAysAbYCO5OsH1AX4H3Aa4B3ANckubLn+O3A48BrgY8CX06yesixS5JGYMEgSLICuAK4rqrmquoR4G7gqv7aqvpEVf15Vf1dVX0LuAvY1O1nHXAJcH1VHaqqO4Anun1LksakyYpgHXCkqqZ72vYCg1YEP5YkwGZgqtu0HthXVQcX048kaXk1CYKVwGxf2yywaoHXfazb/+eH6SfJtiR7kuyZmZlpMExJ0jCaBMEcMNnXNgkcHFALQJJr6FwreFdVvTJMP1W1q6o2VtXG1au9jCBJy6VJEEwDE0ku7GnbwP875fP3JPkA8BHg56vqqZ5DU8AbkvSuAI7ZjyTpxFgwCKpqHtgN7EiyIskm4DLg1v7aJFuB3wfeVlX7+vqZBr4OXJ/k7CTvAS4C7lj6NCRJw2p6++h24BzgGTq3gF5dVVNJNieZ66n7OJ1bQ7+WZK77uKXn+JXARuAF4EbgvVXlBQBJGqNGu49W1fPA5QPaH6ZzEfjo89cv0M9+4NJFjVCStKzcYkKSWs4gkKSW84tpJJ0S/LKn5eOKQJJazhWBJC1gXKuRE7UScUUgSS1nEEhSyxkEktRyBoEktZwXi6VTkLdSapRcEUhSyxkEktRyBoEktZxBIEktZxBIUssZBJLUcgaBJLWcQSBJLWcQSFLLGQSS1HKNgiDJuUnuTDKf5ECSLceo+7kkDyaZTbJ/wPH9SQ4lmes+Hlji+CVJS9R0RXAzcBhYA2wFdiZZP6BuHvgccO1x+np3Va3sPn5hUaOVJI3cgkGQZAVwBXBdVc1V1SPA3cBV/bVV9dWquhXYN/KRSpKWRZMVwTrgSFVN97TtBQatCJq4LclMkgeSbBiyD0nSiDQJgpXAbF/bLLBqiPfbCqwFLgAeBO5P8upBhUm2JdmTZM/MzMwQbyVJaqJJEMwBk31tk8DBxb5ZVT1aVYeq6uWqugF4Edh8jNpdVbWxqjauXr16sW8lSWqoSRBMAxNJLuxp2wBMjeD9C8gI+pEkDWnBIKiqeWA3sCPJiiSbgMuAW/trk7wqydnAmZ2nOTvJWd1j5yfZlOSsbvu1wHnAo6OckCRpcZreProdOAd4BrgduLqqppJsTjLXU/cW4BBwH3B+9/dHPyuwCtgJvAA8DbwDeGdVPbfkWUiShtboO4ur6nng8gHtD9O5mHz0+UMc41RPVU0BFw01SknSsnGLCUlqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJYzCCSp5QwCSWo5g0CSWs4gkKSWMwgkqeUMAklqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJYzCCSp5RoFQZJzk9yZZD7JgSRbjlH3c0keTDKbZP+A42u7x19O8mSSty5x/JKkJWq6IrgZOAysAbYCO5OsH1A3D3wOuPYY/dwOPA68Fvgo8OUkqxc1YknSSC0YBElWAFcA11XVXFU9AtwNXNVfW1VfrapbgX0D+lkHXAJcX1WHquoO4Ilu35KkMWmyIlgHHKmq6Z62vcCgFcHxrAf2VdXBJfYjSRqhJkGwEpjta5sFVi3yvRbVT5JtSfYk2TMzM7PIt5IkNdUkCOaAyb62SeDggNqR9VNVu6pqY1VtXL3aywiStFyaBME0MJHkwp62DcDUIt9rCnhDkt4VwDD9SJJGaMEgqKp5YDewI8mKJJuAy4Bb+2uTvCrJ2cCZnac5O8lZ3X6mga8D13fb3wNcBNwxuulIkhar6e2j24FzgGfo3AJ6dVVNJdmcZK6n7i3AIeA+4Pzu7x/oOX4lsBF4AbgReG9VeQFAksZooklRVT0PXD6g/WE6F4GPPn8IyHH62Q9cusgxSpKWkVtMSFLLGQSS1HIGgSS1nEEgSS1nEEhSyxkEktRyBoEktZxBIEktZxBIUssZBJLUcgaBJLWcQSBJLWcQSFLLGQSS1HIGgSS1nEEgSS1nEEhSyxkEktRyBoEktZxBIEkt1ygIkpyb5M4k80kOJNlyjLokuSnJc93HJ5Kk53h1+5jrPv5gVBORJA1nomHdzcBhYA1wMXBvkr1VNdVXtw24HNgAFPA/gX3ALT01G6rqL5c0aknSyCy4IkiyArgCuK6q5qrqEeBu4KoB5e8HPllVT1XV08AngV8d4XglSSPW5NTQOuBIVU33tO0F1g+oXd89dry6P0vy10l2J1m7iLFKkpZBkyBYCcz2tc0CqxrUzgIre64T/CywFngT8H3gK0kGnp5Ksi3JniR7ZmZmGgxTkjSMJkEwB0z2tU0CBxvUTgJzVVUAVfVnVXW4ql4E/g3weuCnB71pVe2qqo1VtXH16tUNhilJGkaTIJgGJpJc2NO2Aei/UEy3bUODuqMKyHGOS5KW2YJBUFXzwG5gR5IVSTYBlwG3Dij/Q+A3k7wuyU8CvwV8ASDJ+iQXJzkjyUo6F5KfBv5iNFORJA2j6QfKtgPnAM8AtwNXV9VUks1J5nrqPgPcAzwBfBO4t9sGnVtP/zvwEp1bStcCv1RVf7vUSUiShtfocwRV9Tydzwf0tz9M5wLx0ecF/Nvuo7/2T4F/MvRIJUnLwi0mJKnlDAJJajmDQJJaziCQpJYzCCSp5QwCSWo5g0CSWs4gkKSWMwgkqeUMAklqOYNAklrOIJCkljMIJKnlDAJJajmDQJJaziCQpJYzCCSp5QwCSWo5g0CSWs4gkKSWaxQESc5NcmeS+SQHkmw5Rl2S3JTkue7jE0nSc/ziJI8lebn768WjmogkaThNVwQ3A4eBNcBWYGeS9QPqtgGXAxuAi4BfAn4dIMlZwF3Al4DXAF8E7uq2S5LGZMEgSLICuAK4rqrmquoR4G7gqgHl7wc+WVVPVdXTwCeBX+0euxSYAP5TVb1SVf8ZCPAvlzwLSdLQmqwI1gFHqmq6p20vMGhFsL57bFDdeuAbVVU9x79xjH4kSSfIRIOalcBsX9sssKpB7SywsnudYDH9kGQbnVNNAHNJvtVgrIOcBzw75GtPNo3mkptOwEiWZuR/JmOcs3+/Tj6nzZ9JblrSXC5oWtgkCOaAyb62SeBgg9pJYK6qKsli+qGqdgG7GozvuJLsqaqNS+3nZHC6zOV0mQc4l5PR6TIPOHFzaXJqaBqYSHJhT9sGYGpA7VT32KC6KeCi3ruI6FxQHtSPJOkEWTAIqmoe2A3sSLIiySbgMuDWAeV/CPxmktcl+Ungt4AvdI89BBwBPpTkHyS5ptv+p0ubgiRpKZreProdOAd4BrgduLqqppJs7p7yOeozwD3AE8A3gXu7bVTVYTq3lr4PeBH4AHB5t305Lfn00knkdJnL6TIPcC4no9NlHnCC5pK/fxOPJKlt3GJCklrOIJCkljttg6Dp/kgnuyTXJNmT5JUkXxj3eIbVvUHgs90/i4NJHk/yznGPa1hJvpTkB0leSjKd5IPjHtNSJbkwyQ+TfGncYxlWkoe6c5jrPob9/NHYJbkyyV90f4Z9J8nm5XqvJp8jOFX17o90MXBvkr1Vdardrvp94OPA2+lcsD9VTQDfA34W+CvgF4E/TvJPq2r/OAc2pBuAf11VryR5E/BQkser6rFxD2wJbga+Nu5BjMA1VfUH4x7EUiR5G3AT8K+ArwL/cDnf77RcESxyf6STWlXtrqr/ATw37rEsRVXNV9XHqmp/Vf2oqr4CfBf45+Me2zCqaqqqXjn6tPt44xiHtCRJrqRzN9+fjHssAuDfAzuq6n93/7083d2/bVmclkHA4vZH0hgkWUPnz+lUW6H9WJJPJ3kZeBL4AXDfmIc0lCSTwA46n/s5HdyQ5Nkkjya5dNyDWawkZwAbgdVJ/jLJU0n+a5JlOyNwugbBovY10omV5EzgNuCLVfXkuMczrKraTufv1GY6H7p85fivOGn9HvDZqvreuAcyAv8OeAPwOjr34N+T5FRbqa0BzgTeS+fv1sXAPwN+d7ne8HQNgkXta6QTJ8mr6Hwq/TBwzQLlJ72qOtI99fiPgKvHPZ7F6n451FuBT417LKNQVf+nqg52t7r/IvAonetRp5JD3V//S1X9oKqeBf4jyziP0/Vi8Y/3R6qqb3fbjrU/kk6Q7j5Tn6XzP55frKq/HfOQRmmCU/MawaXAWuCvutuArQTOSPLmqrpkjOMalaLzvSenjKp6IclTdMZ+QpyWK4JF7o90UksykeRs4Aw6/0DPTnKqBvhO4KeBd1fVoYWKT1ZJfqJ7a9/KJGckeTvwy5ya+2btohNgF3cft9DZGubt4xzUMJK8Osnbj/4bSbIVeAtw/7jHNoTPA7/R/bv2GuDDwFeW681O1R8oTWwHPkdnf6Tn6O6PNN4hDeV3get7nv8KnTsKPjaW0QwpyQV0vrb0FeCvezah/fWqum1sAxtO0TkNdAud/0wdAD5cVXeNdVRDqKqXgZePPu/uHfbDqpoZ36iGdiadW63fRGeDyyfp7Gd2Kn6W4PfofK/CNPBD4I+B/7Bcb+ZeQ5LUcqflqSFJUnMGgSS1nEEgSS1nEEhSyxkEktRyBoEktZxBIEktZxBIUssZBJLUcv8XeRPxVBWFbHwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116d417b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(df_train.Weekday, normed=True)\n",
"# 주중보다 주말에 방문량이 더 많음 3-40 %"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"GROCERY DRY GOODS 70402\n",
"DSD GROCERY 68332\n",
"PRODUCE 51115\n",
"DAIRY 43820\n",
"PERSONAL CARE 41969\n",
"IMPULSE MERCHANDISE 28712\n",
"HOUSEHOLD CHEMICALS/SUPP 24880\n",
"PHARMACY OTC 23306\n",
"FROZEN FOODS 21101\n",
"HOUSEHOLD PAPER GOODS 16274\n",
"COMM BREAD 15244\n",
"BEAUTY 14865\n",
"MENS WEAR 12250\n",
"FINANCIAL SERVICES 10723\n",
"INFANT CONSUMABLE HARDLINES 10646\n",
"SERVICE DELI 10127\n",
"CANDY, TOBACCO, COOKIES 9808\n",
"PETS AND SUPPLIES 9761\n",
"MEAT - FRESH & FROZEN 9477\n",
"PRE PACKED DELI 9052\n",
"LADIESWEAR 8721\n",
"CELEBRATION 8698\n",
"COOK AND DINE 7600\n",
"BAKERY 7168\n",
"OFFICE SUPPLIES 6578\n",
"HOME MANAGEMENT 6349\n",
"TOYS 6107\n",
"SHOES 6099\n",
"INFANT APPAREL 6051\n",
"AUTOMOTIVE 5414\n",
" ... \n",
"LIQUOR,WINE,BEER 3861\n",
"ELECTRONICS 3190\n",
"PHARMACY RX 2922\n",
"HORTICULTURE AND ACCESS 2893\n",
"JEWELRY AND SUNGLASSES 2526\n",
"SLEEPWEAR/FOUNDATIONS 2376\n",
"BEDDING 2307\n",
"BRAS & SHAPEWEAR 2036\n",
"MEDIA AND GAMING 1993\n",
"SEAFOOD 1923\n",
"WIRELESS 1898\n",
"PAINT AND ACCESSORIES 1720\n",
"ACCESSORIES 1318\n",
"BOOKS AND MAGAZINES 992\n",
"SWIMWEAR/OUTERWEAR 860\n",
"LADIES SOCKS 775\n",
"PLAYERS AND ELECTRONICS 686\n",
"PLUS AND MATERNITY 591\n",
"OPTICAL - FRAMES 579\n",
"FURNITURE 477\n",
"SHEER HOSIERY 434\n",
"1-HR PHOTO 394\n",
"MENSWEAR 338\n",
"CAMERAS AND SUPPLIES 221\n",
"OPTICAL - LENSES 85\n",
"LARGE HOUSEHOLD GOODS 77\n",
"CONCEPT STORES 35\n",
"OTHER DEPARTMENTS 29\n",
"SEASONAL 29\n",
"HEALTH AND BEAUTY AIDS 2\n",
"Name: DepartmentDescription, Length: 68, dtype: int64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_train[\"DepartmentDescription\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"(array([0.00819279, 0.00929348, 0.03153455, 0.02399518, 0.01935446,\n",
" 0.00724437, 0.00711369, 0.01827127, 0.01665262, 0.0054064 ]),\n",
" array([ 0. , 6.8, 13.6, 20.4, 27.2, 34. , 40.8, 47.6, 54.4, 61.2, 68. ]),\n",
" <a list of 10 Patch objects>)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1320: UserWarning: findfont: Font family ['NanumBarunGothic'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a579eb128>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(1, figsize=(20, 6))\n",
"plt.hist(df_train.DepartmentDescription, normed=True)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1320: UserWarning: findfont: Font family ['NanumBarunGothic'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a577565f8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_train.hist(bins=50, figsize=(20,20))\n",
"save_fig(\"attribute_histogram_plots\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"TripType 1.000000\n",
"Has_Neg 0.313378\n",
"Upc 0.046137\n",
"Null 0.012360\n",
"Weekday 0.006273\n",
"VisitNumber 0.000805\n",
"Missing -0.003923\n",
"DepartmentDescription -0.006189\n",
"FinelineNumber -0.024398\n",
"Min -0.057269\n",
"Range -0.106285\n",
"Max -0.118078\n",
"Sum -0.126304\n",
"Mean -0.133646\n",
"Count -0.163719\n",
"ScanCount -0.286024\n",
"Name: TripType, dtype: float64"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"corr_matrix = df_train.corr()\n",
"corr_matrix[\"TripType\"].sort_values(ascending=False)\n",
"# ScanCount -0.286024\n",
"# Has_Neg 0.313378\n",
"# scanCount는 양수이든 음수이든 TripType 에 많은 영향을 준다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#step2. data preprocessing"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import preprocessing\n",
"\n",
"## Label Encoder는 독립 변수가 아닌 종속 변수(라벨)에 대해 사용한다. \n",
"## 문자열이나 정수로된 라벨 값을 0 ~ K−1 까지의 정수로 변환한다. \n",
"## 변환된 규칙은 classes_ 속성에서 확인할 수 있다\n",
"\n",
"def get_features(df_train):\n",
" # basic data fields\n",
" df_train['Upc'].fillna(value=-1, inplace=True)\n",
" df_train['DepartmentDescription'] = preprocessing.LabelEncoder().fit_transform(list(df_train['DepartmentDescription']))\n",
" df_train['FinelineNumber'].fillna(value=9999, inplace=True)\n",
" df_train['Weekday'] = preprocessing.LabelEncoder().fit_transform(list(df_train['Weekday']))\n",
" df_train['Count'] = df_train['ScanCount']\n",
" df_train['Count'][df_train['ScanCount']<0]=0\n",
"\n",
" # min max mean range\n",
" df = df_train.groupby(['VisitNumber', 'DepartmentDescription'], as_index=False)['Count'].sum()\n",
" df1 = df.groupby(['VisitNumber'], as_index=False)['Count'].min()\n",
" df2 = df.groupby(['VisitNumber'], as_index=False)['Count'].max()\n",
" df3 = df.groupby(['VisitNumber'], as_index=False)['Count'].mean()\n",
" df1.rename(columns={'Count': 'Min'}, inplace=True)\n",
" df2.rename(columns={'Count': 'Max'}, inplace=True)\n",
" df3.rename(columns={'Count': 'Mean'}, inplace=True)\n",
" df_train = df_train.merge(df1, how='left', on=['VisitNumber'], copy=True)\n",
" df_train = df_train.merge(df2, how='left', on=['VisitNumber'], copy=True)\n",
" df_train = df_train.merge(df3, how='left', on=['VisitNumber'], copy=True)\n",
" df_train['Range'] = df_train['Max'] - df_train['Min']\n",
"\n",
" # null negative missing \n",
" df = df_train[df_train['DepartmentDescription']==67]\n",
" df = df.groupby(['VisitNumber'], as_index=False)['Count'].count()\n",
" df.rename(columns={'Count': 'Null'}, inplace=True) \n",
" df_train = df_train.merge(df, how='left', on=['VisitNumber'], copy=True) \n",
" df_train['Null'].fillna(value=0, inplace=True) \n",
" df_train['Null'][df_train['Null']>0] = 1\n",
" df = df_train[df_train['ScanCount']<0]\n",
" df = df.groupby(['VisitNumber'], as_index=False)['Count'].count()\n",
" df.rename(columns={'Count': 'Has_Neg'}, inplace=True) \n",
" df_train = df_train.merge(df, how='left', on=['VisitNumber'], copy=True) \n",
" df_train['Has_Neg'].fillna(value=0, inplace=True)\n",
" df_train['Has_Neg'][df_train['Has_Neg']>0] = 1\n",
" df = df_train[df_train['FinelineNumber']==9999]\n",
" df = df.groupby(['VisitNumber'], as_index=False)['Count'].count()\n",
" df.rename(columns={'Count': 'Missing'}, inplace=True) \n",
" df_train = df_train.merge(df, how='left', on=['VisitNumber'], copy=True) \n",
" df_train['Missing'].fillna(value=0, inplace=True)\n",
" df_train['Missing'][df_train['Missing']>0] = 1\n",
" \n",
" # sum\n",
" df = df_train.groupby(['VisitNumber'], as_index=False)['Count'].sum()\n",
" df.rename(columns={'Count': 'Sum'}, inplace=True) \n",
" df_train = df_train.merge(df, how='left', on=['VisitNumber'], copy=True)\n",
" \n",
" return df_train"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:10: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" # Remove the CWD from sys.path while we load stuff.\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:31: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:37: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:43: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"df_train = get_features(df_train)\n",
"train_set, test_set = train_test_split(df_train, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"walmart = train_set.drop(\"TripType\", axis=1) # 훈련 세트를 위해 레이블 삭제\n",
"walmart_labels = train_set[\"TripType\"].copy()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"\n",
"lin_reg = LinearRegression()\n",
"lin_reg.fit(walmart, walmart_labels)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"130.4165188977908"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import mean_squared_error\n",
"\n",
"walmart_predictions = lin_reg.predict(walmart)\n",
"lin_mse = mean_squared_error(walmart_labels, walmart_predictions)\n",
"lin_rmse = np.sqrt(lin_mse)\n",
"lin_rmse"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"45.591172566629744"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import mean_absolute_error\n",
"\n",
"lin_mae = mean_absolute_error(walmart_labels, walmart_predictions)\n",
"lin_mae"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=42, splitter='best')"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.tree import DecisionTreeRegressor\n",
"\n",
"tree_reg = DecisionTreeRegressor(random_state=42)\n",
"tree_reg.fit(walmart, walmart_labels)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"walmart_predictions = tree_reg.predict(walmart)\n",
"tree_mse = mean_squared_error(walmart_labels, walmart_predictions)\n",
"tree_rmse = np.sqrt(tree_mse)\n",
"tree_rmse"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score\n",
"\n",
"scores = cross_val_score(tree_reg, walmart, walmart_labels,\n",
" scoring=\"neg_mean_squared_error\", cv=10)\n",
"tree_rmse_scores = np.sqrt(-scores)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"점수: [92.0287089 93.59302187 94.73218188 93.10431293 94.90621319 95.51491166\n",
" 92.5808704 92.05817412 94.33222348 91.36535916]\n",
"평균: 93.42159775913936\n",
"표준편차: 1.341528046641284\n"
]
}
],
"source": [
"def display_scores(scores):\n",
" print(\"점수:\", scores)\n",
" print(\"평균:\", scores.mean())\n",
" print(\"표준편차:\", scores.std())\n",
"\n",
"display_scores(tree_rmse_scores)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"점수: [131.9896936 130.40261452 126.06881045 131.2032838 127.42956627\n",
" 134.44343276 129.15553472 131.43022018 132.20904885 129.82788925]\n",
"평균: 130.41600944000075\n",
"표준편차: 2.3089365152681776\n"
]
}
],
"source": [
"lin_scores = cross_val_score(lin_reg, walmart, walmart_labels,\n",
" scoring=\"neg_mean_squared_error\", cv=10)\n",
"lin_rmse_scores = np.sqrt(-lin_scores)\n",
"display_scores(lin_rmse_scores)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"29.775378694121"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import RandomForestRegressor\n",
"\n",
"forest_reg = RandomForestRegressor(random_state=42)\n",
"forest_reg.fit(walmart, walmart_labels)\n",
"\n",
"walmart_predictions = forest_reg.predict(walmart)\n",
"forest_mse = mean_squared_error(walmart_labels, walmart_predictions)\n",
"forest_rmse = np.sqrt(forest_mse)\n",
"forest_rmse"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"점수: [72.42821581 70.94014503 70.04994508 72.3167773 69.41758812 73.21046598\n",
" 66.87927795 72.69870424 71.98612447 71.99723357]\n",
"평균: 71.19244775504477\n",
"표준편차: 1.8311902736361652\n"
]
}
],
"source": [
"from sklearn.model_selection import cross_val_score\n",
"\n",
"forest_scores = cross_val_score(forest_reg, walmart, walmart_labels,\n",
" scoring=\"neg_mean_squared_error\", cv=10)\n",
"forest_rmse_scores = np.sqrt(-forest_scores)\n",
"display_scores(forest_rmse_scores)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import RandomizedSearchCV\n",
"from scipy.stats import randint\n",
"\n",
"param_distribs = {\n",
" 'n_estimators': randint(low=1, high=200),\n",
" 'max_features': randint(low=1, high=8),\n",
" }\n",
"\n",
"# forest_reg = RandomForestRegressor(random_state=42)\n",
"# rnd_search = RandomizedSearchCV(forest_reg, param_distributions=param_distribs,\n",
"# n_iter=10, cv=5, scoring='neg_mean_squared_error', \n",
"# random_state=42, n_jobs=-1)\n",
"# rnd_search.fit(walmart, walmart_labels)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"# feature_importances = rnd_search.best_estimator_.feature_importances_\n",
"# feature_importances\n",
"\n",
"# final_model"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"# final_model = rnd_search.best_estimator_\n",
"# max_features=7, n_estimators=180\n",
"\n",
"# X_test = test_set.drop(\"TripType\", axis=1)\n",
"# y_test = test_set[\"TripType\"].copy()\n",
"\n",
"# X_test_prepared = full_pipeline.transform(X_test)\n",
"# final_predictions = final_model.predict(X_test)\n",
"\n",
"# final_mse = mean_squared_error(y_test, final_predictions)\n",
"# final_rmse = np.sqrt(final_mse)\n",
"\n",
"# final_rmse #65.34578544268167"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# path_sample_submission = \"../8th_week/data/sample_submission.csv\"\n",
"# path_submission = \"../8th_week/data/submission.csv\"\n",
"\n",
"# def save_submission(predictions):\n",
"# sample_submission = pd.read_csv(path_sample_submission)\n",
"# columns = list(sample_submission.columns)\n",
"# columns.remove('VisitNumber')\n",
"# sample_submission[columns] = predictions\n",
"# #????\n",
"# sample_submission.to_csv(path_submission, index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## - Random Forest\n",
"\n",
"\n",
"- k-means\n",
"- PCA\n",
"- GMM\n",
"- GBM"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"120.57884855498817"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"clf = RandomForestClassifier(max_depth=2, random_state=42, max_features=7, n_estimators=180)\n",
"clf.fit(walmart, walmart_labels)\n",
"final_predictions = clf.predict(walmart)\n",
"\n",
"forest_mse = mean_squared_error(walmart_labels, final_predictions)\n",
"forest_rmse = np.sqrt(forest_mse)\n",
"forest_rmse"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>importance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Sum</th>\n",
" <td>0.572227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Range</th>\n",
" <td>0.251630</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Max</th>\n",
" <td>0.096484</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mean</th>\n",
" <td>0.047192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Min</th>\n",
" <td>0.021412</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Count</th>\n",
" <td>0.006404</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Upc</th>\n",
" <td>0.001927</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ScanCount</th>\n",
" <td>0.001908</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DepartmentDescription</th>\n",
" <td>0.000798</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FinelineNumber</th>\n",
" <td>0.000020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VisitNumber</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Weekday</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Null</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Has_Neg</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Missing</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" importance\n",
"Sum 0.572227\n",
"Range 0.251630\n",
"Max 0.096484\n",
"Mean 0.047192\n",
"Min 0.021412\n",
"Count 0.006404\n",
"Upc 0.001927\n",
"ScanCount 0.001908\n",
"DepartmentDescription 0.000798\n",
"FinelineNumber 0.000020\n",
"VisitNumber 0.000000\n",
"Weekday 0.000000\n",
"Null 0.000000\n",
"Has_Neg 0.000000\n",
"Missing 0.000000"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"feature_importances = pd.DataFrame(clf.feature_importances_,\n",
" index = walmart.columns,\n",
" columns=['importance']).sort_values('importance', ascending=False)\n",
"feature_importances\n",
"# final_predictions.shape # (653646, 38)\n",
"# randomforest 결과 sum과 range가 중요도가 높은 요소이다"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3, 40, 39, ..., 40, 39, 39], dtype=int64)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import ExtraTreesClassifier\n",
"\n",
"clf2 = ExtraTreesClassifier(n_estimators=180, criterion='entropy', max_depth=15,\n",
" min_samples_split=2, min_samples_leaf=1, \n",
" min_weight_fraction_leaf=0.0, max_features=0.5,\n",
" max_leaf_nodes=None, bootstrap=False, oob_score=False,\n",
" n_jobs=2, random_state=42, verbose=0)\n",
"clf2.fit(walmart, walmart_labels)\n",
"final_predictions = clf2.predict(walmart)\n",
"final_predictions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## - k-means\n",
"- PCA\n",
"- GMM\n",
"- GBM"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"152.46367706989523"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"knn = KNeighborsClassifier()\n",
"knn.fit(walmart, walmart_labels)\n",
"final_predictions = knn.predict(walmart)\n",
"\n",
"knn_mse = mean_squared_error(walmart_labels, final_predictions)\n",
"knn_rmse = np.sqrt(knn_mse)\n",
"knn_rmse"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"38"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"num_class = len(np.unique(walmart_labels))\n",
"num_class"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
" n_clusters=38, n_init=10, n_jobs=1, precompute_distances='auto',\n",
" random_state=42, tol=0.0001, verbose=0)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.cluster import KMeans\n",
"\n",
"clf3 = KMeans(n_clusters = num_class, random_state=42)\n",
"clf3.fit(walmart)\n",
"# final_predictions = clf3.predict_proba(walmart_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## - PCA\n",
"- GMM\n",
"- GBM"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/data.py:616: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/anaconda3/lib/python3.6/site-packages/sklearn/base.py:459: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, **fit_params).transform(X)\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:8: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" \n"
]
},
{
"data": {
"text/plain": [
"98.69300410140357"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
"from sklearn.decomposition import PCA\n",
"\n",
"pca = PCA(n_components=2)\n",
"\n",
"scaler = StandardScaler()\n",
"train = scaler.fit_transform(walmart)\n",
"test = scaler.transform(walmart)\n",
"\n",
"train = pca.fit_transform(train)\n",
"test = pca.transform(test)\n",
"\n",
"clf4 = KNeighborsClassifier()\n",
"clf4.fit(train, walmart_labels)\n",
"final_predictions = clf4.predict(test)\n",
"#final_predictions\n",
"\n",
"pca_knn_mse = mean_squared_error(walmart_labels, final_predictions)\n",
"pca_knn_rmse = np.sqrt(pca_knn_mse)\n",
"pca_knn_rmse"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"pca = PCA()\n",
"pca.fit(walmart)\n",
"cumsum = np.cumsum(pca.explained_variance_ratio_)\n",
"d = np.argmax(cumsum >= 0.95) + 1"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"120.57884855498817"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"pca2 = PCA(n_components=0.95)\n",
"walmart_reduced = pca2.fit_transform(walmart)\n",
"\n",
"log_clf2 = LogisticRegression(multi_class=\"multinomial\", solver=\"lbfgs\", random_state=42)\n",
"log_clf2.fit(walmart_reduced, walmart_labels)\n",
"walmart_predictions = log_clf2.predict(walmart_reduced)\n",
"\n",
"pca_mse = mean_squared_error(walmart_labels, walmart_predictions)\n",
"pca_rmse = np.sqrt(forest_mse)\n",
"pca_rmse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## - lightGBM"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[20]\ttrain's multi_logloss: 1.92374\tvalid's multi_logloss: 1.92957\n",
"[40]\ttrain's multi_logloss: 1.76797\tvalid's multi_logloss: 1.77551\n",
"[60]\ttrain's multi_logloss: 1.67979\tvalid's multi_logloss: 1.68892\n",
"[80]\ttrain's multi_logloss: 1.62324\tvalid's multi_logloss: 1.63335\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-64-ac0c761f864b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mvalid_sets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0md_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md_valid\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0mvalid_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'train'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'valid'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 35\u001b[0;31m \u001b[0mgbdt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlgb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrounds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalid_sets\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalid_sets\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalid_names\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalid_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverbose_eval\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mfeatures\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgbdt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeature_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/lib/python3.6/site-packages/lightgbm/engine.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(params, train_set, num_boost_round, valid_sets, valid_names, fobj, feval, init_model, feature_name, categorical_feature, early_stopping_rounds, evals_result, verbose_eval, learning_rates, keep_training_booster, callbacks)\u001b[0m\n\u001b[1;32m 199\u001b[0m evaluation_result_list=None))\n\u001b[1;32m 200\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0mbooster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfobj\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0mevaluation_result_list\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;32m/anaconda3/lib/python3.6/site-packages/lightgbm/basic.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, train_set, fobj)\u001b[0m\n\u001b[1;32m 1522\u001b[0m _safe_call(_LIB.LGBM_BoosterUpdateOneIter(\n\u001b[1;32m 1523\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1524\u001b[0;31m ctypes.byref(is_finished)))\n\u001b[0m\u001b[1;32m 1525\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__is_predicted_cur_iter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mFalse\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__num_dataset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1526\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mis_finished\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"import lightgbm as lgb\n",
"\n",
"# labels = np.sort(np.unique(walmart_labels))\n",
"# num_class = len(labels)\n",
"num_class = 1000\n",
"\n",
"params = {\n",
" 'boosting_type': 'gbdt',\n",
" 'objective': 'multiclass',\n",
" 'metric': 'multi_logloss',\n",
" 'max_depth': 5,\n",
" 'num_leaves': 31,\n",
" 'learning_rate': 0.025,\n",
" 'feature_fraction': 0.85,\n",
" 'bagging_fraction': 0.85,\n",
" 'bagging_freq': 5,\n",
" 'verbose': 0,\n",
" 'num_threads': 1,\n",
" 'lambda_l2': 1.0,\n",
" 'min_gain_to_split': 0,\n",
" 'num_class': num_class,\n",
" }\n",
"\n",
"X_train = walmart\n",
"Y_train = walmart_labels\n",
"X_val = test_set.drop(\"TripType\", axis=1) # 훈련 세트를 위해 레이블 삭제\n",
"Y_val = test_set[\"TripType\"].copy()\n",
"\n",
"rounds = 15000\n",
"d_train = lgb.Dataset(X_train, label=Y_train, silent=True)\n",
"d_valid = lgb.Dataset(X_val, label=Y_val, silent=True)\n",
"\n",
"valid_sets = [d_train, d_valid]\n",
"valid_names = ['train', 'valid']\n",
"gbdt = lgb.train(params, d_train, rounds, valid_sets=valid_sets, valid_names=valid_names, verbose_eval=20)\n",
"\n",
"features = gbdt.feature_name()\n",
"importance = list(gbdt.feature_importance())\n",
"importance = zip(features, importance)\n",
"importance = sorted(importance, key=lambda x: x[1])\n",
"total = sum(j for i, j in importance)\n",
"importance = [(i, float(j)/total) for i, j in importance]\n",
"importance\n",
"\n",
"### \n",
"# [20]\ttrain's multi_logloss: 1.92374\tvalid's multi_logloss: 1.92957\n",
"# [40]\ttrain's multi_logloss: 1.76797\tvalid's multi_logloss: 1.77551\n",
"# [60]\ttrain's multi_logloss: 1.67979\tvalid's multi_logloss: 1.68892\n",
"# [80]\ttrain's multi_logloss: 1.62324\tvalid's multi_logloss: 1.63335"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### market basket analysis\n",
"\n",
"\t데이터는 매우 크지만 희소행렬로 구성되어있다, 각 컬럼은 아이템 또는 상품들로 구성\n",
"\t각 row는 거래를 나타낸다. 많은 상품들은 함께 구매되고 (빵과 버터) 상관관계를 갖는다\n",
"\t고객이 구매한 데이터가 주어지면 고객이 구매할 아이템들을 예측하는것\n",
"\t일반적으로 frequent itemset mining 으로 해결한다. association rules 를 만들어서 "
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"10\" halign=\"left\">Count</th>\n",
" <th>...</th>\n",
" <th colspan=\"10\" halign=\"left\">Weekday</th>\n",
" </tr>\n",
" <tr>\n",
" <th>DepartmentDescription</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>60</th>\n",
" <th>61</th>\n",
" <th>62</th>\n",
" <th>63</th>\n",
" <th>64</th>\n",
" <th>65</th>\n",
" <th>66</th>\n",
" <th>67</th>\n",
" <th>68</th>\n",
" <th>All</th>\n",
" </tr>\n",
" <tr>\n",
" <th>VisitNumber</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191277</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191280</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191283</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191286</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191287</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191289</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191291</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191293</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191298</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191301</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191304</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191305</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191311</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191312</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191313</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191318</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191322</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191324</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191326</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191329</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191331</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191335</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191337</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191342</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191343</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191344</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191345</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191346</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191347</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>All</th>\n",
" <td>394</td>\n",
" <td>1318</td>\n",
" <td>5414</td>\n",
" <td>7168</td>\n",
" <td>4582</td>\n",
" <td>14865</td>\n",
" <td>2307</td>\n",
" <td>992</td>\n",
" <td>3892</td>\n",
" <td>2036</td>\n",
" <td>...</td>\n",
" <td>10127</td>\n",
" <td>434</td>\n",
" <td>6099</td>\n",
" <td>2376</td>\n",
" <td>5087</td>\n",
" <td>860</td>\n",
" <td>6107</td>\n",
" <td>1898</td>\n",
" <td>1361</td>\n",
" <td>647054</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>95675 rows × 980 columns</p>\n",
"</div>"
],
"text/plain": [
" Count \\\n",
"DepartmentDescription 0 1 2 3 4 5 6 7 8 \n",
"VisitNumber \n",
"5 0 0 0 0 0 0 0 0 0 \n",
"7 0 0 0 0 0 0 0 0 0 \n",
"8 0 0 0 0 0 0 0 0 0 \n",
"9 0 0 0 0 0 0 0 0 0 \n",
"10 0 0 0 0 0 0 0 0 0 \n",
"11 0 0 0 0 0 0 0 0 0 \n",
"12 0 0 0 0 0 0 0 0 2 \n",
"15 0 0 0 0 0 0 0 0 0 \n",
"17 0 0 0 0 0 0 0 0 0 \n",
"19 0 1 0 0 0 0 0 0 0 \n",
"20 0 0 0 0 0 0 0 0 0 \n",
"23 0 0 0 0 0 0 0 0 0 \n",
"25 0 0 0 0 0 0 0 0 0 \n",
"26 0 0 0 0 0 0 0 0 0 \n",
"28 0 0 0 2 0 0 0 0 0 \n",
"29 0 0 0 0 0 0 0 0 0 \n",
"30 0 0 0 0 0 0 0 0 0 \n",
"31 0 0 0 1 0 0 0 0 0 \n",
"32 0 0 0 0 0 0 0 0 0 \n",
"33 0 0 0 0 0 0 0 0 0 \n",
"40 0 0 0 0 0 0 0 0 0 \n",
"41 0 0 0 0 0 0 0 0 0 \n",
"42 0 0 0 0 0 0 0 0 0 \n",
"43 0 0 0 0 0 0 0 0 0 \n",
"45 0 0 0 0 0 0 0 0 0 \n",
"47 0 0 0 0 0 0 0 0 0 \n",
"49 0 0 0 0 0 0 0 0 0 \n",
"50 0 0 0 0 0 0 0 0 0 \n",
"51 0 0 0 0 0 0 0 0 0 \n",
"53 0 0 0 0 0 0 0 0 0 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"191277 0 0 0 0 0 1 0 0 0 \n",
"191280 0 0 0 0 0 0 0 0 0 \n",
"191283 0 0 0 0 0 1 0 0 0 \n",
"191286 0 0 0 0 0 0 0 0 0 \n",
"191287 0 0 0 0 0 0 0 0 0 \n",
"191289 0 0 0 0 0 0 0 0 0 \n",
"191291 0 0 0 0 0 0 0 0 0 \n",
"191293 0 0 0 0 2 2 0 0 0 \n",
"191298 0 0 1 1 0 2 0 0 0 \n",
"191301 0 0 0 0 2 0 0 0 0 \n",
"191304 0 0 0 0 0 0 0 0 0 \n",
"191305 0 0 0 0 0 0 0 0 0 \n",
"191311 0 0 0 0 0 0 0 0 0 \n",
"191312 0 0 0 0 0 0 0 0 0 \n",
"191313 0 0 0 0 0 0 0 0 0 \n",
"191318 0 0 0 0 0 0 0 0 0 \n",
"191322 0 0 0 0 0 0 0 0 0 \n",
"191324 0 0 1 1 0 1 0 0 0 \n",
"191326 0 0 0 0 0 0 0 1 0 \n",
"191329 0 0 0 0 2 0 0 0 0 \n",
"191331 0 0 0 0 0 0 0 0 0 \n",
"191335 0 0 0 0 0 0 0 0 0 \n",
"191337 0 0 0 1 0 0 0 0 0 \n",
"191342 0 0 0 0 0 0 0 0 0 \n",
"191343 0 0 0 0 0 0 0 0 0 \n",
"191344 0 0 0 0 0 4 0 0 0 \n",
"191345 0 0 0 0 0 1 0 0 0 \n",
"191346 0 0 0 0 0 0 0 0 0 \n",
"191347 0 0 0 0 0 0 0 0 0 \n",
"All 394 1318 5414 7168 4582 14865 2307 992 3892 \n",
"\n",
" ... Weekday \\\n",
"DepartmentDescription 9 ... 60 61 62 63 64 65 66 \n",
"VisitNumber ... \n",
"5 0 ... 0 0 0 0 0 0 0 \n",
"7 0 ... 0 0 1 0 0 0 0 \n",
"8 0 ... 0 0 0 0 0 0 0 \n",
"9 0 ... 0 0 0 0 0 0 0 \n",
"10 0 ... 0 0 0 0 0 0 0 \n",
"11 0 ... 0 0 0 0 0 0 0 \n",
"12 0 ... 0 0 1 0 0 0 0 \n",
"15 0 ... 0 0 0 0 0 0 0 \n",
"17 0 ... 0 0 0 0 0 0 0 \n",
"19 0 ... 0 0 0 0 0 0 0 \n",
"20 0 ... 1 0 0 0 0 0 0 \n",
"23 0 ... 0 0 0 0 0 0 0 \n",
"25 0 ... 0 0 0 0 0 0 0 \n",
"26 0 ... 0 0 0 0 0 0 0 \n",
"28 0 ... 0 0 0 0 0 0 0 \n",
"29 0 ... 0 0 0 0 0 0 0 \n",
"30 0 ... 0 0 0 0 0 0 0 \n",
"31 0 ... 0 0 0 0 0 0 0 \n",
"32 0 ... 0 0 0 0 0 0 0 \n",
"33 0 ... 0 0 0 0 0 0 0 \n",
"40 0 ... 0 0 0 0 0 0 0 \n",
"41 0 ... 0 0 0 0 0 0 0 \n",
"42 0 ... 0 0 0 0 0 0 0 \n",
"43 0 ... 0 0 0 0 0 0 0 \n",
"45 0 ... 0 0 0 0 0 0 0 \n",
"47 0 ... 0 0 0 0 0 0 0 \n",
"49 0 ... 1 0 0 0 0 0 0 \n",
"50 0 ... 0 0 0 0 0 0 0 \n",
"51 0 ... 0 0 0 0 0 0 0 \n",
"53 0 ... 0 0 0 0 0 0 0 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"191277 0 ... 0 0 4 0 0 0 0 \n",
"191280 0 ... 0 0 0 0 0 0 0 \n",
"191283 0 ... 0 0 1 0 0 0 0 \n",
"191286 0 ... 0 0 0 0 0 0 0 \n",
"191287 0 ... 0 0 0 0 0 0 0 \n",
"191289 0 ... 0 0 0 0 0 0 0 \n",
"191291 0 ... 0 0 0 0 0 0 0 \n",
"191293 0 ... 0 0 0 1 0 0 0 \n",
"191298 0 ... 0 0 0 0 0 0 0 \n",
"191301 0 ... 0 0 0 0 0 0 1 \n",
"191304 0 ... 0 0 0 0 0 0 0 \n",
"191305 0 ... 0 0 0 0 0 0 0 \n",
"191311 0 ... 0 0 0 0 0 0 0 \n",
"191312 0 ... 0 0 0 0 2 0 0 \n",
"191313 0 ... 0 2 0 0 0 0 0 \n",
"191318 0 ... 0 0 0 0 0 0 0 \n",
"191322 0 ... 0 0 0 0 0 0 0 \n",
"191324 0 ... 0 0 1 0 0 0 0 \n",
"191326 0 ... 0 0 0 0 0 0 0 \n",
"191329 0 ... 0 0 0 0 0 0 0 \n",
"191331 0 ... 0 0 0 0 0 0 0 \n",
"191335 0 ... 0 0 0 0 0 0 0 \n",
"191337 0 ... 0 0 0 0 0 0 0 \n",
"191342 0 ... 0 0 0 0 0 0 0 \n",
"191343 0 ... 0 0 0 0 0 0 0 \n",
"191344 0 ... 0 0 0 0 0 0 0 \n",
"191345 0 ... 0 0 0 0 0 0 0 \n",
"191346 0 ... 0 0 0 0 0 0 0 \n",
"191347 0 ... 0 0 0 0 0 0 0 \n",
"All 2036 ... 10127 434 6099 2376 5087 860 6107 \n",
"\n",
" \n",
"DepartmentDescription 67 68 All \n",
"VisitNumber \n",
"5 0 0 1 \n",
"7 0 0 2 \n",
"8 0 1 23 \n",
"9 0 0 3 \n",
"10 0 0 3 \n",
"11 0 0 4 \n",
"12 0 0 7 \n",
"15 0 0 8 \n",
"17 0 0 4 \n",
"19 0 0 9 \n",
"20 0 0 2 \n",
"23 0 0 2 \n",
"25 0 0 3 \n",
"26 0 0 9 \n",
"28 0 0 8 \n",
"29 0 0 1 \n",
"30 0 0 1 \n",
"31 0 0 2 \n",
"32 0 0 1 \n",
"33 0 0 2 \n",
"40 0 0 2 \n",
"41 0 0 2 \n",
"42 0 0 1 \n",
"43 0 0 4 \n",
"45 0 0 4 \n",
"47 0 0 3 \n",
"49 0 0 5 \n",
"50 0 0 1 \n",
"51 0 0 2 \n",
"53 0 0 1 \n",
"... ... ... ... \n",
"191277 0 0 18 \n",
"191280 0 0 3 \n",
"191283 0 0 10 \n",
"191286 0 0 24 \n",
"191287 0 0 2 \n",
"191289 0 0 1 \n",
"191291 0 0 2 \n",
"191293 0 0 22 \n",
"191298 0 0 21 \n",
"191301 0 0 7 \n",
"191304 0 0 6 \n",
"191305 1 0 1 \n",
"191311 0 0 2 \n",
"191312 2 0 16 \n",
"191313 0 0 4 \n",
"191318 0 0 7 \n",
"191322 0 0 14 \n",
"191324 0 0 20 \n",
"191326 0 0 11 \n",
"191329 0 0 20 \n",
"191331 0 0 1 \n",
"191335 0 0 9 \n",
"191337 0 0 28 \n",
"191342 0 0 2 \n",
"191343 0 0 7 \n",
"191344 1 0 5 \n",
"191345 0 0 13 \n",
"191346 0 0 17 \n",
"191347 0 0 2 \n",
"All 1898 1361 647054 \n",
"\n",
"[95675 rows x 980 columns]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pivot_table = pd.pivot_table(df_train, index=[\"VisitNumber\"], columns=[\"DepartmentDescription\"], fill_value=0, aggfunc=len, margins=True)\n",
"pivot_table"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>DepartmentDescription</th>\n",
" <th>1-HR PHOTO</th>\n",
" <th>ACCESSORIES</th>\n",
" <th>AUTOMOTIVE</th>\n",
" <th>BAKERY</th>\n",
" <th>BATH AND SHOWER</th>\n",
" <th>BEAUTY</th>\n",
" <th>BEDDING</th>\n",
" <th>BOOKS AND MAGAZINES</th>\n",
" <th>BOYS WEAR</th>\n",
" <th>BRAS &amp; SHAPEWEAR</th>\n",
" <th>...</th>\n",
" <th>SEAFOOD</th>\n",
" <th>SEASONAL</th>\n",
" <th>SERVICE DELI</th>\n",
" <th>SHEER HOSIERY</th>\n",
" <th>SHOES</th>\n",
" <th>SLEEPWEAR/FOUNDATIONS</th>\n",
" <th>SPORTING GOODS</th>\n",
" <th>SWIMWEAR/OUTERWEAR</th>\n",
" <th>TOYS</th>\n",
" <th>WIRELESS</th>\n",
" </tr>\n",
" <tr>\n",
" <th>VisitNumber</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191276</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191277</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191280</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191283</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191286</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191287</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191289</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191291</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191293</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191298</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191301</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191304</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191305</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191311</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191312</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191313</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191318</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191322</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191324</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191326</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191329</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191331</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191335</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191337</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191342</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191343</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191344</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191345</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191346</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191347</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>95516 rows × 68 columns</p>\n",
"</div>"
],
"text/plain": [
"DepartmentDescription 1-HR PHOTO ACCESSORIES AUTOMOTIVE BAKERY \\\n",
"VisitNumber \n",
"5 0 0 0 0 \n",
"7 0 0 0 0 \n",
"8 0 0 0 0 \n",
"9 0 0 0 0 \n",
"10 0 0 0 0 \n",
"11 0 0 0 0 \n",
"12 0 0 0 0 \n",
"15 0 0 0 0 \n",
"17 0 0 0 0 \n",
"19 0 1 0 0 \n",
"20 0 0 0 0 \n",
"23 0 0 0 0 \n",
"25 0 0 0 0 \n",
"26 0 0 0 0 \n",
"28 0 0 0 2 \n",
"29 0 0 0 0 \n",
"30 0 0 0 0 \n",
"31 0 0 0 1 \n",
"32 0 0 0 0 \n",
"33 0 0 0 0 \n",
"40 0 0 0 0 \n",
"41 0 0 0 0 \n",
"42 0 0 0 0 \n",
"43 0 0 0 0 \n",
"45 0 0 0 0 \n",
"47 0 0 0 0 \n",
"49 0 0 0 0 \n",
"50 0 0 0 0 \n",
"51 0 0 0 0 \n",
"53 0 0 0 0 \n",
"... ... ... ... ... \n",
"191276 0 0 0 0 \n",
"191277 0 0 0 0 \n",
"191280 0 0 0 0 \n",
"191283 0 0 0 0 \n",
"191286 0 0 0 0 \n",
"191287 0 0 0 0 \n",
"191289 0 0 0 0 \n",
"191291 0 0 0 0 \n",
"191293 0 0 0 0 \n",
"191298 0 0 1 1 \n",
"191301 0 0 0 0 \n",
"191304 0 0 0 0 \n",
"191305 0 0 0 0 \n",
"191311 0 0 0 0 \n",
"191312 0 0 0 0 \n",
"191313 0 0 0 0 \n",
"191318 0 0 0 0 \n",
"191322 0 0 0 0 \n",
"191324 0 0 3 1 \n",
"191326 0 0 0 0 \n",
"191329 0 0 0 0 \n",
"191331 0 0 0 0 \n",
"191335 0 0 0 0 \n",
"191337 0 0 0 1 \n",
"191342 0 0 0 0 \n",
"191343 0 0 0 0 \n",
"191344 0 0 0 0 \n",
"191345 0 0 0 0 \n",
"191346 0 0 0 0 \n",
"191347 0 0 0 0 \n",
"\n",
"DepartmentDescription BATH AND SHOWER BEAUTY BEDDING BOOKS AND MAGAZINES \\\n",
"VisitNumber \n",
"5 0 0 0 0 \n",
"7 0 0 0 0 \n",
"8 0 0 0 0 \n",
"9 0 0 0 0 \n",
"10 0 0 0 0 \n",
"11 0 0 0 0 \n",
"12 0 0 0 0 \n",
"15 0 0 0 0 \n",
"17 0 0 0 0 \n",
"19 0 0 0 0 \n",
"20 0 0 0 0 \n",
"23 0 0 0 0 \n",
"25 0 0 0 0 \n",
"26 0 0 0 0 \n",
"28 0 0 0 0 \n",
"29 0 0 0 0 \n",
"30 0 0 0 0 \n",
"31 0 0 0 0 \n",
"32 0 0 0 0 \n",
"33 0 0 0 0 \n",
"40 0 0 0 0 \n",
"41 0 0 0 0 \n",
"42 0 0 0 0 \n",
"43 0 0 0 0 \n",
"45 0 0 0 0 \n",
"47 0 0 0 0 \n",
"49 0 0 0 0 \n",
"50 0 0 0 0 \n",
"51 0 0 0 0 \n",
"53 0 0 0 0 \n",
"... ... ... ... ... \n",
"191276 0 0 0 0 \n",
"191277 0 1 0 0 \n",
"191280 0 0 0 0 \n",
"191283 0 1 0 0 \n",
"191286 0 0 0 0 \n",
"191287 0 0 0 0 \n",
"191289 0 0 0 0 \n",
"191291 0 0 0 0 \n",
"191293 3 2 0 0 \n",
"191298 0 0 0 0 \n",
"191301 2 0 0 0 \n",
"191304 0 0 0 0 \n",
"191305 0 0 0 0 \n",
"191311 0 0 0 0 \n",
"191312 0 0 0 0 \n",
"191313 0 0 0 0 \n",
"191318 0 0 0 0 \n",
"191322 0 0 0 0 \n",
"191324 0 1 0 0 \n",
"191326 0 0 0 1 \n",
"191329 2 0 0 0 \n",
"191331 0 0 0 0 \n",
"191335 0 0 0 0 \n",
"191337 0 0 0 0 \n",
"191342 0 0 0 0 \n",
"191343 0 0 0 0 \n",
"191344 0 4 0 0 \n",
"191345 0 1 0 0 \n",
"191346 0 0 0 0 \n",
"191347 0 0 0 0 \n",
"\n",
"DepartmentDescription BOYS WEAR BRAS & SHAPEWEAR ... SEAFOOD \\\n",
"VisitNumber ... \n",
"5 0 0 ... 0 \n",
"7 0 0 ... 0 \n",
"8 0 0 ... 0 \n",
"9 0 0 ... 0 \n",
"10 0 0 ... 0 \n",
"11 0 0 ... 0 \n",
"12 2 0 ... 0 \n",
"15 0 0 ... 0 \n",
"17 0 0 ... 0 \n",
"19 0 0 ... 0 \n",
"20 0 0 ... 0 \n",
"23 0 0 ... 0 \n",
"25 0 0 ... 0 \n",
"26 0 0 ... 0 \n",
"28 0 0 ... 0 \n",
"29 0 0 ... 0 \n",
"30 0 0 ... 0 \n",
"31 0 0 ... 0 \n",
"32 0 0 ... 0 \n",
"33 0 0 ... 0 \n",
"40 0 0 ... 0 \n",
"41 0 0 ... 0 \n",
"42 0 0 ... 0 \n",
"43 0 0 ... 0 \n",
"45 0 0 ... 0 \n",
"47 0 0 ... 0 \n",
"49 0 0 ... 0 \n",
"50 0 0 ... 0 \n",
"51 0 0 ... 0 \n",
"53 0 0 ... 0 \n",
"... ... ... ... ... \n",
"191276 0 0 ... 0 \n",
"191277 0 0 ... 0 \n",
"191280 0 0 ... 0 \n",
"191283 0 0 ... 0 \n",
"191286 0 0 ... 1 \n",
"191287 0 0 ... 0 \n",
"191289 0 0 ... 0 \n",
"191291 0 0 ... 0 \n",
"191293 0 0 ... 0 \n",
"191298 0 0 ... 0 \n",
"191301 0 0 ... 0 \n",
"191304 0 0 ... 0 \n",
"191305 0 0 ... 0 \n",
"191311 0 0 ... 0 \n",
"191312 0 0 ... 0 \n",
"191313 0 0 ... 0 \n",
"191318 0 0 ... 0 \n",
"191322 0 0 ... 0 \n",
"191324 0 0 ... 0 \n",
"191326 0 0 ... 0 \n",
"191329 0 0 ... 0 \n",
"191331 0 0 ... 0 \n",
"191335 0 0 ... 0 \n",
"191337 0 0 ... 0 \n",
"191342 0 0 ... 0 \n",
"191343 0 0 ... 0 \n",
"191344 0 0 ... 0 \n",
"191345 0 0 ... 0 \n",
"191346 0 0 ... 0 \n",
"191347 0 0 ... 0 \n",
"\n",
"DepartmentDescription SEASONAL SERVICE DELI SHEER HOSIERY SHOES \\\n",
"VisitNumber \n",
"5 0 0 0 0 \n",
"7 0 0 0 1 \n",
"8 0 0 0 0 \n",
"9 0 0 0 0 \n",
"10 0 0 0 0 \n",
"11 0 0 0 0 \n",
"12 0 0 0 1 \n",
"15 0 0 0 0 \n",
"17 0 0 0 0 \n",
"19 0 0 0 0 \n",
"20 0 2 0 0 \n",
"23 0 0 0 0 \n",
"25 0 0 0 0 \n",
"26 0 0 0 0 \n",
"28 0 0 0 0 \n",
"29 0 0 0 0 \n",
"30 0 0 0 0 \n",
"31 0 0 0 0 \n",
"32 0 0 0 0 \n",
"33 0 0 0 0 \n",
"40 0 0 0 0 \n",
"41 0 0 0 0 \n",
"42 0 0 0 0 \n",
"43 0 0 0 0 \n",
"45 0 0 0 0 \n",
"47 0 0 0 0 \n",
"49 0 1 0 0 \n",
"50 0 0 0 0 \n",
"51 0 0 0 0 \n",
"53 0 0 0 0 \n",
"... ... ... ... ... \n",
"191276 0 0 0 0 \n",
"191277 0 0 0 5 \n",
"191280 0 0 0 0 \n",
"191283 0 0 0 1 \n",
"191286 0 0 0 0 \n",
"191287 0 0 0 0 \n",
"191289 0 0 0 0 \n",
"191291 0 0 0 0 \n",
"191293 0 0 0 0 \n",
"191298 0 0 0 0 \n",
"191301 0 0 0 0 \n",
"191304 0 0 0 0 \n",
"191305 0 0 0 0 \n",
"191311 0 0 0 0 \n",
"191312 0 0 0 0 \n",
"191313 0 0 2 0 \n",
"191318 0 0 0 0 \n",
"191322 0 0 0 0 \n",
"191324 0 0 0 1 \n",
"191326 0 0 0 0 \n",
"191329 0 0 0 0 \n",
"191331 0 0 0 0 \n",
"191335 0 0 0 0 \n",
"191337 0 0 0 0 \n",
"191342 0 0 0 0 \n",
"191343 0 0 0 0 \n",
"191344 0 0 0 0 \n",
"191345 0 0 0 0 \n",
"191346 0 0 0 0 \n",
"191347 0 0 0 0 \n",
"\n",
"DepartmentDescription SLEEPWEAR/FOUNDATIONS SPORTING GOODS \\\n",
"VisitNumber \n",
"5 0 0 \n",
"7 0 0 \n",
"8 0 0 \n",
"9 0 0 \n",
"10 0 0 \n",
"11 0 0 \n",
"12 0 0 \n",
"15 0 0 \n",
"17 0 0 \n",
"19 0 0 \n",
"20 0 0 \n",
"23 0 0 \n",
"25 0 0 \n",
"26 0 0 \n",
"28 0 0 \n",
"29 0 0 \n",
"30 0 0 \n",
"31 0 0 \n",
"32 0 0 \n",
"33 0 0 \n",
"40 0 0 \n",
"41 0 0 \n",
"42 0 0 \n",
"43 0 0 \n",
"45 0 0 \n",
"47 0 0 \n",
"49 0 0 \n",
"50 0 0 \n",
"51 0 0 \n",
"53 0 0 \n",
"... ... ... \n",
"191276 0 0 \n",
"191277 0 0 \n",
"191280 0 0 \n",
"191283 0 0 \n",
"191286 0 0 \n",
"191287 0 0 \n",
"191289 0 0 \n",
"191291 0 0 \n",
"191293 1 0 \n",
"191298 0 0 \n",
"191301 0 0 \n",
"191304 0 0 \n",
"191305 0 0 \n",
"191311 0 0 \n",
"191312 0 2 \n",
"191313 0 0 \n",
"191318 0 0 \n",
"191322 0 0 \n",
"191324 0 0 \n",
"191326 0 0 \n",
"191329 0 0 \n",
"191331 0 0 \n",
"191335 0 0 \n",
"191337 0 0 \n",
"191342 0 0 \n",
"191343 0 0 \n",
"191344 0 0 \n",
"191345 0 0 \n",
"191346 0 0 \n",
"191347 0 0 \n",
"\n",
"DepartmentDescription SWIMWEAR/OUTERWEAR TOYS WIRELESS \n",
"VisitNumber \n",
"5 0 0 0 \n",
"7 0 0 0 \n",
"8 0 0 0 \n",
"9 0 0 0 \n",
"10 0 0 0 \n",
"11 0 0 0 \n",
"12 0 0 0 \n",
"15 0 0 0 \n",
"17 0 0 0 \n",
"19 0 0 0 \n",
"20 0 0 0 \n",
"23 0 0 0 \n",
"25 0 0 0 \n",
"26 0 0 0 \n",
"28 0 0 0 \n",
"29 0 0 0 \n",
"30 0 0 0 \n",
"31 0 0 0 \n",
"32 0 0 0 \n",
"33 0 0 0 \n",
"40 0 0 0 \n",
"41 0 0 0 \n",
"42 0 0 0 \n",
"43 0 0 0 \n",
"45 0 0 0 \n",
"47 0 0 0 \n",
"49 0 0 0 \n",
"50 0 0 0 \n",
"51 0 0 0 \n",
"53 0 0 0 \n",
"... ... ... ... \n",
"191276 0 0 0 \n",
"191277 0 0 0 \n",
"191280 0 0 0 \n",
"191283 0 0 0 \n",
"191286 0 0 0 \n",
"191287 0 0 0 \n",
"191289 0 0 0 \n",
"191291 0 0 0 \n",
"191293 0 0 0 \n",
"191298 0 0 0 \n",
"191301 0 1 0 \n",
"191304 0 0 0 \n",
"191305 0 0 1 \n",
"191311 0 0 0 \n",
"191312 0 0 2 \n",
"191313 0 0 0 \n",
"191318 0 0 0 \n",
"191322 0 0 0 \n",
"191324 0 0 0 \n",
"191326 0 0 0 \n",
"191329 0 0 0 \n",
"191331 0 0 0 \n",
"191335 0 0 0 \n",
"191337 0 0 0 \n",
"191342 0 0 0 \n",
"191343 0 0 0 \n",
"191344 0 0 1 \n",
"191345 0 0 0 \n",
"191346 0 0 0 \n",
"191347 0 0 0 \n",
"\n",
"[95516 rows x 68 columns]"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## 데이터 reload\n",
"df_train = pd.read_csv(\"../8th_week/data/train2.csv\")\n",
"\n",
"df_tran = df_train.groupby(['VisitNumber', 'DepartmentDescription'], as_index=\"VisitNumber\")['ScanCount'].sum()\n",
"df_tran = df_tran.unstack(\"DepartmentDescription\", fill_value=0)\n",
"df_tran"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Apriori 알고리즘은 상점 고객의 구매와 같은 트랜잭션이 포함 된 데이터베이스에서 작동하도록 설계되었습니다. 항목 집합이 사용자 지정한 임계 값을 충족하는 경우 항목 집합은 \"빈번한\"것으로 간주됩니다. 예를 들어 지원 임계 값을 0.5 (50 %)로 설정하면 빈번한 항목 집합이 데이터베이스의 모든 트랜잭션의 50 % 이상에서 함께 발생하는 항목 집합으로 정의\n"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>support</th>\n",
" <th>itemsets</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.057226</td>\n",
" <td>[AUTOMOTIVE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.086938</td>\n",
" <td>[BAKERY]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.051311</td>\n",
" <td>[BATH AND SHOWER]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.157848</td>\n",
" <td>[BEAUTY]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.122964</td>\n",
" <td>[CANDY, TOBACCO, COOKIES]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.104244</td>\n",
" <td>[CELEBRATION]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.183383</td>\n",
" <td>[COMM BREAD]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.084823</td>\n",
" <td>[COOK AND DINE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.529231</td>\n",
" <td>[DAIRY]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.835609</td>\n",
" <td>[DSD GROCERY]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.059079</td>\n",
" <td>[FABRICS AND CRAFTS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.094047</td>\n",
" <td>[FINANCIAL SERVICES]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.265589</td>\n",
" <td>[FROZEN FOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.928829</td>\n",
" <td>[GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.051457</td>\n",
" <td>[HARDWARE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.076322</td>\n",
" <td>[HOME MANAGEMENT]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.281785</td>\n",
" <td>[HOUSEHOLD CHEMICALS/SUPP]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.188304</td>\n",
" <td>[HOUSEHOLD PAPER GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.333044</td>\n",
" <td>[IMPULSE MERCHANDISE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.061613</td>\n",
" <td>[INFANT APPAREL]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.137663</td>\n",
" <td>[INFANT CONSUMABLE HARDLINES]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.076961</td>\n",
" <td>[LADIESWEAR]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.061393</td>\n",
" <td>[LAWN AND GARDEN]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.113929</td>\n",
" <td>[MEAT - FRESH &amp; FROZEN]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.122388</td>\n",
" <td>[MENS WEAR]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.080992</td>\n",
" <td>[OFFICE SUPPLIES]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.469230</td>\n",
" <td>[PERSONAL CARE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.131831</td>\n",
" <td>[PETS AND SUPPLIES]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.268227</td>\n",
" <td>[PHARMACY OTC]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.112253</td>\n",
" <td>[PRE PACKED DELI]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.072061</td>\n",
" <td>[COMM BREAD, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.057236</td>\n",
" <td>[COMM BREAD, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.116452</td>\n",
" <td>[DAIRY, DSD GROCERY]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.060576</td>\n",
" <td>[DAIRY, FROZEN FOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.116096</td>\n",
" <td>[DAIRY, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.093796</td>\n",
" <td>[DAIRY, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.067109</td>\n",
" <td>[DSD GROCERY, FROZEN FOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.135548</td>\n",
" <td>[DSD GROCERY, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.066031</td>\n",
" <td>[DSD GROCERY, HOUSEHOLD CHEMICALS/SUPP]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.062052</td>\n",
" <td>[DSD GROCERY, HOUSEHOLD PAPER GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.083462</td>\n",
" <td>[DSD GROCERY, IMPULSE MERCHANDISE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.076134</td>\n",
" <td>[DSD GROCERY, PERSONAL CARE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.055896</td>\n",
" <td>[DSD GROCERY, PHARMACY OTC]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>0.108233</td>\n",
" <td>[DSD GROCERY, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>0.062084</td>\n",
" <td>[FROZEN FOODS, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>0.050232</td>\n",
" <td>[FROZEN FOODS, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0.057498</td>\n",
" <td>[GROCERY DRY GOODS, HOUSEHOLD CHEMICALS/SUPP]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>0.054567</td>\n",
" <td>[GROCERY DRY GOODS, HOUSEHOLD PAPER GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>0.055132</td>\n",
" <td>[GROCERY DRY GOODS, IMPULSE MERCHANDISE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>0.060430</td>\n",
" <td>[GROCERY DRY GOODS, PERSONAL CARE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.105930</td>\n",
" <td>[GROCERY DRY GOODS, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.050086</td>\n",
" <td>[IMPULSE MERCHANDISE, PERSONAL CARE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.064785</td>\n",
" <td>[PERSONAL CARE, PHARMACY OTC]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.051143</td>\n",
" <td>[COMM BREAD, DAIRY, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.053656</td>\n",
" <td>[COMM BREAD, DSD GROCERY, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.081693</td>\n",
" <td>[DAIRY, DSD GROCERY, GROCERY DRY GOODS]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.066439</td>\n",
" <td>[DAIRY, DSD GROCERY, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>0.069549</td>\n",
" <td>[DAIRY, GROCERY DRY GOODS, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>0.073600</td>\n",
" <td>[DSD GROCERY, GROCERY DRY GOODS, PRODUCE]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>0.053195</td>\n",
" <td>[DAIRY, DSD GROCERY, GROCERY DRY GOODS, PRODUCE]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>67 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" support itemsets\n",
"0 0.057226 [AUTOMOTIVE]\n",
"1 0.086938 [BAKERY]\n",
"2 0.051311 [BATH AND SHOWER]\n",
"3 0.157848 [BEAUTY]\n",
"4 0.122964 [CANDY, TOBACCO, COOKIES]\n",
"5 0.104244 [CELEBRATION]\n",
"6 0.183383 [COMM BREAD]\n",
"7 0.084823 [COOK AND DINE]\n",
"8 0.529231 [DAIRY]\n",
"9 0.835609 [DSD GROCERY]\n",
"10 0.059079 [FABRICS AND CRAFTS]\n",
"11 0.094047 [FINANCIAL SERVICES]\n",
"12 0.265589 [FROZEN FOODS]\n",
"13 0.928829 [GROCERY DRY GOODS]\n",
"14 0.051457 [HARDWARE]\n",
"15 0.076322 [HOME MANAGEMENT]\n",
"16 0.281785 [HOUSEHOLD CHEMICALS/SUPP]\n",
"17 0.188304 [HOUSEHOLD PAPER GOODS]\n",
"18 0.333044 [IMPULSE MERCHANDISE]\n",
"19 0.061613 [INFANT APPAREL]\n",
"20 0.137663 [INFANT CONSUMABLE HARDLINES]\n",
"21 0.076961 [LADIESWEAR]\n",
"22 0.061393 [LAWN AND GARDEN]\n",
"23 0.113929 [MEAT - FRESH & FROZEN]\n",
"24 0.122388 [MENS WEAR]\n",
"25 0.080992 [OFFICE SUPPLIES]\n",
"26 0.469230 [PERSONAL CARE]\n",
"27 0.131831 [PETS AND SUPPLIES]\n",
"28 0.268227 [PHARMACY OTC]\n",
"29 0.112253 [PRE PACKED DELI]\n",
".. ... ...\n",
"37 0.072061 [COMM BREAD, GROCERY DRY GOODS]\n",
"38 0.057236 [COMM BREAD, PRODUCE]\n",
"39 0.116452 [DAIRY, DSD GROCERY]\n",
"40 0.060576 [DAIRY, FROZEN FOODS]\n",
"41 0.116096 [DAIRY, GROCERY DRY GOODS]\n",
"42 0.093796 [DAIRY, PRODUCE]\n",
"43 0.067109 [DSD GROCERY, FROZEN FOODS]\n",
"44 0.135548 [DSD GROCERY, GROCERY DRY GOODS]\n",
"45 0.066031 [DSD GROCERY, HOUSEHOLD CHEMICALS/SUPP]\n",
"46 0.062052 [DSD GROCERY, HOUSEHOLD PAPER GOODS]\n",
"47 0.083462 [DSD GROCERY, IMPULSE MERCHANDISE]\n",
"48 0.076134 [DSD GROCERY, PERSONAL CARE]\n",
"49 0.055896 [DSD GROCERY, PHARMACY OTC]\n",
"50 0.108233 [DSD GROCERY, PRODUCE]\n",
"51 0.062084 [FROZEN FOODS, GROCERY DRY GOODS]\n",
"52 0.050232 [FROZEN FOODS, PRODUCE]\n",
"53 0.057498 [GROCERY DRY GOODS, HOUSEHOLD CHEMICALS/SUPP]\n",
"54 0.054567 [GROCERY DRY GOODS, HOUSEHOLD PAPER GOODS]\n",
"55 0.055132 [GROCERY DRY GOODS, IMPULSE MERCHANDISE]\n",
"56 0.060430 [GROCERY DRY GOODS, PERSONAL CARE]\n",
"57 0.105930 [GROCERY DRY GOODS, PRODUCE]\n",
"58 0.050086 [IMPULSE MERCHANDISE, PERSONAL CARE]\n",
"59 0.064785 [PERSONAL CARE, PHARMACY OTC]\n",
"60 0.051143 [COMM BREAD, DAIRY, GROCERY DRY GOODS]\n",
"61 0.053656 [COMM BREAD, DSD GROCERY, GROCERY DRY GOODS]\n",
"62 0.081693 [DAIRY, DSD GROCERY, GROCERY DRY GOODS]\n",
"63 0.066439 [DAIRY, DSD GROCERY, PRODUCE]\n",
"64 0.069549 [DAIRY, GROCERY DRY GOODS, PRODUCE]\n",
"65 0.073600 [DSD GROCERY, GROCERY DRY GOODS, PRODUCE]\n",
"66 0.053195 [DAIRY, DSD GROCERY, GROCERY DRY GOODS, PRODUCE]\n",
"\n",
"[67 rows x 2 columns]"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from mlxtend.frequent_patterns import apriori\n",
"from mlxtend.frequent_patterns import association_rules\n",
"\n",
"frequent_itemsets = apriori(df_tran, min_support=0.05, use_colnames=True)\n",
"frequent_itemsets\n",
"\n",
"# [GROCERY DRY GOODS] [DSD GROCERY] [PRODUCE] [DAIRY] 순서로 <-- 0.5이상"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### {기저귀} → {맥주}, 기저귀를 사는 사람들이 맥주를 사기 쉬운걸 의미\n",
"\n",
"confidence:\n",
"규칙 A-> C의 신뢰도는 선행문을 포함하고있는 트랜잭션에서 결과를 볼 확률입니다. 메트릭은 대칭되지 않습니다. \n",
"예를 들어, A -> C에 대한 신뢰도는 C -> A에 대한 신뢰도와 다릅니다. \n",
"결과와 선행이 항상 함께 발생한다면 신뢰는 A -> C에 대해 1 (최대)이다.\n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>antecedants</th>\n",
" <th>consequents</th>\n",
" <th>antecedent support</th>\n",
" <th>consequent support</th>\n",
" <th>support</th>\n",
" <th>confidence</th>\n",
" <th>lift</th>\n",
" <th>leverage</th>\n",
" <th>conviction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.529231</td>\n",
" <td>0.183383</td>\n",
" <td>0.063361</td>\n",
" <td>0.119723</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.927682</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.529231</td>\n",
" <td>0.063361</td>\n",
" <td>0.345513</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.719295</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.835609</td>\n",
" <td>0.183383</td>\n",
" <td>0.069852</td>\n",
" <td>0.083594</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.891109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.835609</td>\n",
" <td>0.069852</td>\n",
" <td>0.380909</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.265537</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.183383</td>\n",
" <td>0.928829</td>\n",
" <td>0.072061</td>\n",
" <td>0.392955</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.117242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.928829</td>\n",
" <td>0.183383</td>\n",
" <td>0.072061</td>\n",
" <td>0.077583</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.885301</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.552923</td>\n",
" <td>0.183383</td>\n",
" <td>0.057236</td>\n",
" <td>0.103516</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.910911</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.183383</td>\n",
" <td>0.552923</td>\n",
" <td>0.057236</td>\n",
" <td>0.312115</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.649929</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.835609</td>\n",
" <td>0.116452</td>\n",
" <td>0.220040</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.210769</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.835609</td>\n",
" <td>0.529231</td>\n",
" <td>0.116452</td>\n",
" <td>0.139362</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.547000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.265589</td>\n",
" <td>0.060576</td>\n",
" <td>0.114461</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.829338</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.529231</td>\n",
" <td>0.060576</td>\n",
" <td>0.228083</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.609870</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.928829</td>\n",
" <td>0.116096</td>\n",
" <td>0.219367</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.091171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.529231</td>\n",
" <td>0.116096</td>\n",
" <td>0.124992</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.538017</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.529231</td>\n",
" <td>0.552923</td>\n",
" <td>0.093796</td>\n",
" <td>0.177230</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.543381</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.529231</td>\n",
" <td>0.093796</td>\n",
" <td>0.169636</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.566943</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.835609</td>\n",
" <td>0.067109</td>\n",
" <td>0.252681</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.219975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.265589</td>\n",
" <td>0.067109</td>\n",
" <td>0.080312</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.798543</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.928829</td>\n",
" <td>0.135548</td>\n",
" <td>0.162215</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.084952</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.835609</td>\n",
" <td>0.135548</td>\n",
" <td>0.145934</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.192481</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.281785</td>\n",
" <td>0.835609</td>\n",
" <td>0.066031</td>\n",
" <td>0.234330</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.214703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>0.835609</td>\n",
" <td>0.281785</td>\n",
" <td>0.066031</td>\n",
" <td>0.079021</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.779839</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.188304</td>\n",
" <td>0.062052</td>\n",
" <td>0.074260</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.876808</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.188304</td>\n",
" <td>0.835609</td>\n",
" <td>0.062052</td>\n",
" <td>0.329534</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.245190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.333044</td>\n",
" <td>0.835609</td>\n",
" <td>0.083462</td>\n",
" <td>0.250605</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.219365</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.333044</td>\n",
" <td>0.083462</td>\n",
" <td>0.099882</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.740966</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.469230</td>\n",
" <td>0.835609</td>\n",
" <td>0.076134</td>\n",
" <td>0.162253</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.196230</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.469230</td>\n",
" <td>0.076134</td>\n",
" <td>0.091112</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.583977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.268227</td>\n",
" <td>0.835609</td>\n",
" <td>0.055896</td>\n",
" <td>0.208392</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.207668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>0.835609</td>\n",
" <td>0.268227</td>\n",
" <td>0.055896</td>\n",
" <td>0.066893</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.784232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.108233</td>\n",
" <td>0.529231</td>\n",
" <td>0.066439</td>\n",
" <td>0.613852</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.219142</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.108233</td>\n",
" <td>0.066439</td>\n",
" <td>0.125539</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.019790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116452</td>\n",
" <td>0.066439</td>\n",
" <td>0.120160</td>\n",
" <td>1.031843</td>\n",
" <td>0.002050</td>\n",
" <td>1.004215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.093796</td>\n",
" <td>0.066439</td>\n",
" <td>0.079510</td>\n",
" <td>0.847691</td>\n",
" <td>-0.011937</td>\n",
" <td>0.984480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.928829</td>\n",
" <td>0.069549</td>\n",
" <td>0.741489</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.275313</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.116096</td>\n",
" <td>0.552923</td>\n",
" <td>0.069549</td>\n",
" <td>0.599062</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.115078</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.529231</td>\n",
" <td>0.069549</td>\n",
" <td>0.656553</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.370718</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.105930</td>\n",
" <td>0.069549</td>\n",
" <td>0.131414</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.029340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116096</td>\n",
" <td>0.069549</td>\n",
" <td>0.125783</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.011082</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.928829</td>\n",
" <td>0.093796</td>\n",
" <td>0.069549</td>\n",
" <td>0.074878</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.979551</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.928829</td>\n",
" <td>0.073600</td>\n",
" <td>0.680015</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.222421</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.835609</td>\n",
" <td>0.073600</td>\n",
" <td>0.694801</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.538637</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.552923</td>\n",
" <td>0.073600</td>\n",
" <td>0.542983</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.978250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.135548</td>\n",
" <td>0.073600</td>\n",
" <td>0.133111</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.997189</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.105930</td>\n",
" <td>0.073600</td>\n",
" <td>0.088080</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.980426</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.108233</td>\n",
" <td>0.073600</td>\n",
" <td>0.079240</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.968512</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.066439</td>\n",
" <td>0.928829</td>\n",
" <td>0.053195</td>\n",
" <td>0.800662</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.357038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.069549</td>\n",
" <td>0.835609</td>\n",
" <td>0.053195</td>\n",
" <td>0.764865</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.699137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.081693</td>\n",
" <td>0.552923</td>\n",
" <td>0.053195</td>\n",
" <td>0.651160</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.281610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.073600</td>\n",
" <td>0.529231</td>\n",
" <td>0.053195</td>\n",
" <td>0.722760</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.698054</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.135548</td>\n",
" <td>0.053195</td>\n",
" <td>0.567139</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.997067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.116452</td>\n",
" <td>0.105930</td>\n",
" <td>0.053195</td>\n",
" <td>0.456801</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.645935</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.116096</td>\n",
" <td>0.108233</td>\n",
" <td>0.053195</td>\n",
" <td>0.458202</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.645939</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.116096</td>\n",
" <td>0.053195</td>\n",
" <td>0.491488</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.738216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.116452</td>\n",
" <td>0.053195</td>\n",
" <td>0.502174</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.774815</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.093796</td>\n",
" <td>0.053195</td>\n",
" <td>0.392446</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.491562</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.073600</td>\n",
" <td>0.053195</td>\n",
" <td>0.100514</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.029922</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.081693</td>\n",
" <td>0.053195</td>\n",
" <td>0.096207</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.016059</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.069549</td>\n",
" <td>0.053195</td>\n",
" <td>0.063661</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.993712</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.066439</td>\n",
" <td>0.053195</td>\n",
" <td>0.057271</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.990275</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 9 columns</p>\n",
"</div>"
],
"text/plain": [
" antecedants \\\n",
"0 (DAIRY) \n",
"1 (COMM BREAD) \n",
"2 (DSD GROCERY) \n",
"3 (COMM BREAD) \n",
"4 (COMM BREAD) \n",
"5 (GROCERY DRY GOODS) \n",
"6 (PRODUCE) \n",
"7 (COMM BREAD) \n",
"8 (DAIRY) \n",
"9 (DSD GROCERY) \n",
"10 (DAIRY) \n",
"11 (FROZEN FOODS) \n",
"12 (DAIRY) \n",
"13 (GROCERY DRY GOODS) \n",
"14 (DAIRY) \n",
"15 (PRODUCE) \n",
"16 (FROZEN FOODS) \n",
"17 (DSD GROCERY) \n",
"18 (DSD GROCERY) \n",
"19 (GROCERY DRY GOODS) \n",
"20 (HOUSEHOLD CHEMICALS/SUPP) \n",
"21 (DSD GROCERY) \n",
"22 (DSD GROCERY) \n",
"23 (HOUSEHOLD PAPER GOODS) \n",
"24 (IMPULSE MERCHANDISE) \n",
"25 (DSD GROCERY) \n",
"26 (PERSONAL CARE) \n",
"27 (DSD GROCERY) \n",
"28 (PHARMACY OTC) \n",
"29 (DSD GROCERY) \n",
".. ... \n",
"70 (PRODUCE, DSD GROCERY) \n",
"71 (DAIRY) \n",
"72 (PRODUCE) \n",
"73 (DSD GROCERY) \n",
"74 (DAIRY, PRODUCE) \n",
"75 (DAIRY, GROCERY DRY GOODS) \n",
"76 (PRODUCE, GROCERY DRY GOODS) \n",
"77 (DAIRY) \n",
"78 (PRODUCE) \n",
"79 (GROCERY DRY GOODS) \n",
"80 (PRODUCE, DSD GROCERY) \n",
"81 (PRODUCE, GROCERY DRY GOODS) \n",
"82 (DSD GROCERY, GROCERY DRY GOODS) \n",
"83 (PRODUCE) \n",
"84 (DSD GROCERY) \n",
"85 (GROCERY DRY GOODS) \n",
"86 (DAIRY, PRODUCE, DSD GROCERY) \n",
"87 (DAIRY, PRODUCE, GROCERY DRY GOODS) \n",
"88 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) \n",
"89 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) \n",
"90 (DAIRY, PRODUCE) \n",
"91 (DAIRY, DSD GROCERY) \n",
"92 (DAIRY, GROCERY DRY GOODS) \n",
"93 (PRODUCE, DSD GROCERY) \n",
"94 (PRODUCE, GROCERY DRY GOODS) \n",
"95 (DSD GROCERY, GROCERY DRY GOODS) \n",
"96 (DAIRY) \n",
"97 (PRODUCE) \n",
"98 (DSD GROCERY) \n",
"99 (GROCERY DRY GOODS) \n",
"\n",
" consequents antecedent support \\\n",
"0 (COMM BREAD) 0.529231 \n",
"1 (DAIRY) 0.183383 \n",
"2 (COMM BREAD) 0.835609 \n",
"3 (DSD GROCERY) 0.183383 \n",
"4 (GROCERY DRY GOODS) 0.183383 \n",
"5 (COMM BREAD) 0.928829 \n",
"6 (COMM BREAD) 0.552923 \n",
"7 (PRODUCE) 0.183383 \n",
"8 (DSD GROCERY) 0.529231 \n",
"9 (DAIRY) 0.835609 \n",
"10 (FROZEN FOODS) 0.529231 \n",
"11 (DAIRY) 0.265589 \n",
"12 (GROCERY DRY GOODS) 0.529231 \n",
"13 (DAIRY) 0.928829 \n",
"14 (PRODUCE) 0.529231 \n",
"15 (DAIRY) 0.552923 \n",
"16 (DSD GROCERY) 0.265589 \n",
"17 (FROZEN FOODS) 0.835609 \n",
"18 (GROCERY DRY GOODS) 0.835609 \n",
"19 (DSD GROCERY) 0.928829 \n",
"20 (DSD GROCERY) 0.281785 \n",
"21 (HOUSEHOLD CHEMICALS/SUPP) 0.835609 \n",
"22 (HOUSEHOLD PAPER GOODS) 0.835609 \n",
"23 (DSD GROCERY) 0.188304 \n",
"24 (DSD GROCERY) 0.333044 \n",
"25 (IMPULSE MERCHANDISE) 0.835609 \n",
"26 (DSD GROCERY) 0.469230 \n",
"27 (PERSONAL CARE) 0.835609 \n",
"28 (DSD GROCERY) 0.268227 \n",
"29 (PHARMACY OTC) 0.835609 \n",
".. ... ... \n",
"70 (DAIRY) 0.108233 \n",
"71 (PRODUCE, DSD GROCERY) 0.529231 \n",
"72 (DAIRY, DSD GROCERY) 0.552923 \n",
"73 (DAIRY, PRODUCE) 0.835609 \n",
"74 (GROCERY DRY GOODS) 0.093796 \n",
"75 (PRODUCE) 0.116096 \n",
"76 (DAIRY) 0.105930 \n",
"77 (PRODUCE, GROCERY DRY GOODS) 0.529231 \n",
"78 (DAIRY, GROCERY DRY GOODS) 0.552923 \n",
"79 (DAIRY, PRODUCE) 0.928829 \n",
"80 (GROCERY DRY GOODS) 0.108233 \n",
"81 (DSD GROCERY) 0.105930 \n",
"82 (PRODUCE) 0.135548 \n",
"83 (DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"84 (PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"85 (PRODUCE, DSD GROCERY) 0.928829 \n",
"86 (GROCERY DRY GOODS) 0.066439 \n",
"87 (DSD GROCERY) 0.069549 \n",
"88 (PRODUCE) 0.081693 \n",
"89 (DAIRY) 0.073600 \n",
"90 (DSD GROCERY, GROCERY DRY GOODS) 0.093796 \n",
"91 (PRODUCE, GROCERY DRY GOODS) 0.116452 \n",
"92 (PRODUCE, DSD GROCERY) 0.116096 \n",
"93 (DAIRY, GROCERY DRY GOODS) 0.108233 \n",
"94 (DAIRY, DSD GROCERY) 0.105930 \n",
"95 (DAIRY, PRODUCE) 0.135548 \n",
"96 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) 0.529231 \n",
"97 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"98 (DAIRY, PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"99 (DAIRY, PRODUCE, DSD GROCERY) 0.928829 \n",
"\n",
" consequent support support confidence lift leverage conviction \n",
"0 0.183383 0.063361 0.119723 0.652858 -0.033691 0.927682 \n",
"1 0.529231 0.063361 0.345513 0.652858 -0.033691 0.719295 \n",
"2 0.183383 0.069852 0.083594 0.455846 -0.083384 0.891109 \n",
"3 0.835609 0.069852 0.380909 0.455846 -0.083384 0.265537 \n",
"4 0.928829 0.072061 0.392955 0.423065 -0.098270 0.117242 \n",
"5 0.183383 0.072061 0.077583 0.423065 -0.098270 0.885301 \n",
"6 0.183383 0.057236 0.103516 0.564481 -0.044160 0.910911 \n",
"7 0.552923 0.057236 0.312115 0.564481 -0.044160 0.649929 \n",
"8 0.835609 0.116452 0.220040 0.263328 -0.325778 0.210769 \n",
"9 0.529231 0.116452 0.139362 0.263328 -0.325778 0.547000 \n",
"10 0.265589 0.060576 0.114461 0.430970 -0.079982 0.829338 \n",
"11 0.529231 0.060576 0.228083 0.430970 -0.079982 0.609870 \n",
"12 0.928829 0.116096 0.219367 0.236176 -0.375469 0.091171 \n",
"13 0.529231 0.116096 0.124992 0.236176 -0.375469 0.538017 \n",
"14 0.552923 0.093796 0.177230 0.320534 -0.198828 0.543381 \n",
"15 0.529231 0.093796 0.169636 0.320534 -0.198828 0.566943 \n",
"16 0.835609 0.067109 0.252681 0.302391 -0.154819 0.219975 \n",
"17 0.265589 0.067109 0.080312 0.302391 -0.154819 0.798543 \n",
"18 0.928829 0.135548 0.162215 0.174644 -0.640589 0.084952 \n",
"19 0.835609 0.135548 0.145934 0.174644 -0.640589 0.192481 \n",
"20 0.835609 0.066031 0.234330 0.280431 -0.169431 0.214703 \n",
"21 0.281785 0.066031 0.079021 0.280431 -0.169431 0.779839 \n",
"22 0.188304 0.062052 0.074260 0.394364 -0.095296 0.876808 \n",
"23 0.835609 0.062052 0.329534 0.394364 -0.095296 0.245190 \n",
"24 0.835609 0.083462 0.250605 0.299907 -0.194832 0.219365 \n",
"25 0.333044 0.083462 0.099882 0.299907 -0.194832 0.740966 \n",
"26 0.835609 0.076134 0.162253 0.194173 -0.315959 0.196230 \n",
"27 0.469230 0.076134 0.091112 0.194173 -0.315959 0.583977 \n",
"28 0.835609 0.055896 0.208392 0.249389 -0.168237 0.207668 \n",
"29 0.268227 0.055896 0.066893 0.249389 -0.168237 0.784232 \n",
".. ... ... ... ... ... ... \n",
"70 0.529231 0.066439 0.613852 1.159895 0.009159 1.219142 \n",
"71 0.108233 0.066439 0.125539 1.159895 0.009159 1.019790 \n",
"72 0.116452 0.066439 0.120160 1.031843 0.002050 1.004215 \n",
"73 0.093796 0.066439 0.079510 0.847691 -0.011937 0.984480 \n",
"74 0.928829 0.069549 0.741489 0.798305 -0.017572 0.275313 \n",
"75 0.552923 0.069549 0.599062 1.083446 0.005357 1.115078 \n",
"76 0.529231 0.069549 0.656553 1.240579 0.013487 1.370718 \n",
"77 0.105930 0.069549 0.131414 1.240579 0.013487 1.029340 \n",
"78 0.116096 0.069549 0.125783 1.083446 0.005357 1.011082 \n",
"79 0.093796 0.069549 0.074878 0.798305 -0.017572 0.979551 \n",
"80 0.928829 0.073600 0.680015 0.732122 -0.026930 0.222421 \n",
"81 0.835609 0.073600 0.694801 0.831491 -0.014916 0.538637 \n",
"82 0.552923 0.073600 0.542983 0.982023 -0.001347 0.978250 \n",
"83 0.135548 0.073600 0.133111 0.982023 -0.001347 0.997189 \n",
"84 0.105930 0.073600 0.088080 0.831491 -0.014916 0.980426 \n",
"85 0.108233 0.073600 0.079240 0.732122 -0.026930 0.968512 \n",
"86 0.928829 0.053195 0.800662 0.862012 -0.008515 0.357038 \n",
"87 0.835609 0.053195 0.764865 0.915339 -0.004920 0.699137 \n",
"88 0.552923 0.053195 0.651160 1.177668 0.008025 1.281610 \n",
"89 0.529231 0.053195 0.722760 1.365680 0.014244 1.698054 \n",
"90 0.135548 0.053195 0.567139 4.184048 0.040481 1.997067 \n",
"91 0.105930 0.053195 0.456801 4.312297 0.040860 1.645935 \n",
"92 0.108233 0.053195 0.458202 4.233469 0.040630 1.645939 \n",
"93 0.116096 0.053195 0.491488 4.233469 0.040630 1.738216 \n",
"94 0.116452 0.053195 0.502174 4.312297 0.040860 1.774815 \n",
"95 0.093796 0.053195 0.392446 4.184048 0.040481 1.491562 \n",
"96 0.073600 0.053195 0.100514 1.365680 0.014244 1.029922 \n",
"97 0.081693 0.053195 0.096207 1.177668 0.008025 1.016059 \n",
"98 0.069549 0.053195 0.063661 0.915339 -0.004920 0.993712 \n",
"99 0.066439 0.053195 0.057271 0.862012 -0.008515 0.990275 \n",
"\n",
"[100 rows x 9 columns]"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"association_rules(frequent_itemsets, metric=\"confidence\", min_threshold=0.01)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 리프트 지표는 일반적으로 규칙 A와 C가 통계적으로 독립적 인 경우 기대했던 것보다 함께 얼마나 자주 발생 하는지를 측정하는 데 사용됩니다. A와 C가 독립적 인 경우 Lift 점수는 정확히 1입니다."
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>antecedants</th>\n",
" <th>consequents</th>\n",
" <th>antecedent support</th>\n",
" <th>consequent support</th>\n",
" <th>support</th>\n",
" <th>confidence</th>\n",
" <th>lift</th>\n",
" <th>leverage</th>\n",
" <th>conviction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.529231</td>\n",
" <td>0.183383</td>\n",
" <td>0.063361</td>\n",
" <td>0.119723</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.927682</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.529231</td>\n",
" <td>0.063361</td>\n",
" <td>0.345513</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.719295</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.835609</td>\n",
" <td>0.183383</td>\n",
" <td>0.069852</td>\n",
" <td>0.083594</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.891109</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.835609</td>\n",
" <td>0.069852</td>\n",
" <td>0.380909</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.265537</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.183383</td>\n",
" <td>0.928829</td>\n",
" <td>0.072061</td>\n",
" <td>0.392955</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.117242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.928829</td>\n",
" <td>0.183383</td>\n",
" <td>0.072061</td>\n",
" <td>0.077583</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.885301</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.552923</td>\n",
" <td>0.183383</td>\n",
" <td>0.057236</td>\n",
" <td>0.103516</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.910911</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.183383</td>\n",
" <td>0.552923</td>\n",
" <td>0.057236</td>\n",
" <td>0.312115</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.649929</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.835609</td>\n",
" <td>0.116452</td>\n",
" <td>0.220040</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.210769</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.835609</td>\n",
" <td>0.529231</td>\n",
" <td>0.116452</td>\n",
" <td>0.139362</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.547000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.265589</td>\n",
" <td>0.060576</td>\n",
" <td>0.114461</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.829338</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.529231</td>\n",
" <td>0.060576</td>\n",
" <td>0.228083</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.609870</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.928829</td>\n",
" <td>0.116096</td>\n",
" <td>0.219367</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.091171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.529231</td>\n",
" <td>0.116096</td>\n",
" <td>0.124992</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.538017</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.529231</td>\n",
" <td>0.552923</td>\n",
" <td>0.093796</td>\n",
" <td>0.177230</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.543381</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.529231</td>\n",
" <td>0.093796</td>\n",
" <td>0.169636</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.566943</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.835609</td>\n",
" <td>0.067109</td>\n",
" <td>0.252681</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.219975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.265589</td>\n",
" <td>0.067109</td>\n",
" <td>0.080312</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.798543</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.928829</td>\n",
" <td>0.135548</td>\n",
" <td>0.162215</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.084952</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.835609</td>\n",
" <td>0.135548</td>\n",
" <td>0.145934</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.192481</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.281785</td>\n",
" <td>0.835609</td>\n",
" <td>0.066031</td>\n",
" <td>0.234330</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.214703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>0.835609</td>\n",
" <td>0.281785</td>\n",
" <td>0.066031</td>\n",
" <td>0.079021</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.779839</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.188304</td>\n",
" <td>0.062052</td>\n",
" <td>0.074260</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.876808</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.188304</td>\n",
" <td>0.835609</td>\n",
" <td>0.062052</td>\n",
" <td>0.329534</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.245190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.333044</td>\n",
" <td>0.835609</td>\n",
" <td>0.083462</td>\n",
" <td>0.250605</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.219365</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.333044</td>\n",
" <td>0.083462</td>\n",
" <td>0.099882</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.740966</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.469230</td>\n",
" <td>0.835609</td>\n",
" <td>0.076134</td>\n",
" <td>0.162253</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.196230</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.469230</td>\n",
" <td>0.076134</td>\n",
" <td>0.091112</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.583977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.268227</td>\n",
" <td>0.835609</td>\n",
" <td>0.055896</td>\n",
" <td>0.208392</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.207668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>0.835609</td>\n",
" <td>0.268227</td>\n",
" <td>0.055896</td>\n",
" <td>0.066893</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.784232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.108233</td>\n",
" <td>0.529231</td>\n",
" <td>0.066439</td>\n",
" <td>0.613852</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.219142</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.108233</td>\n",
" <td>0.066439</td>\n",
" <td>0.125539</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.019790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116452</td>\n",
" <td>0.066439</td>\n",
" <td>0.120160</td>\n",
" <td>1.031843</td>\n",
" <td>0.002050</td>\n",
" <td>1.004215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.093796</td>\n",
" <td>0.066439</td>\n",
" <td>0.079510</td>\n",
" <td>0.847691</td>\n",
" <td>-0.011937</td>\n",
" <td>0.984480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.928829</td>\n",
" <td>0.069549</td>\n",
" <td>0.741489</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.275313</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.116096</td>\n",
" <td>0.552923</td>\n",
" <td>0.069549</td>\n",
" <td>0.599062</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.115078</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.529231</td>\n",
" <td>0.069549</td>\n",
" <td>0.656553</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.370718</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.105930</td>\n",
" <td>0.069549</td>\n",
" <td>0.131414</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.029340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116096</td>\n",
" <td>0.069549</td>\n",
" <td>0.125783</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.011082</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.928829</td>\n",
" <td>0.093796</td>\n",
" <td>0.069549</td>\n",
" <td>0.074878</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.979551</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.928829</td>\n",
" <td>0.073600</td>\n",
" <td>0.680015</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.222421</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.835609</td>\n",
" <td>0.073600</td>\n",
" <td>0.694801</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.538637</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.552923</td>\n",
" <td>0.073600</td>\n",
" <td>0.542983</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.978250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.135548</td>\n",
" <td>0.073600</td>\n",
" <td>0.133111</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.997189</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.105930</td>\n",
" <td>0.073600</td>\n",
" <td>0.088080</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.980426</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.108233</td>\n",
" <td>0.073600</td>\n",
" <td>0.079240</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.968512</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.066439</td>\n",
" <td>0.928829</td>\n",
" <td>0.053195</td>\n",
" <td>0.800662</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.357038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.069549</td>\n",
" <td>0.835609</td>\n",
" <td>0.053195</td>\n",
" <td>0.764865</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.699137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.081693</td>\n",
" <td>0.552923</td>\n",
" <td>0.053195</td>\n",
" <td>0.651160</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.281610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.073600</td>\n",
" <td>0.529231</td>\n",
" <td>0.053195</td>\n",
" <td>0.722760</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.698054</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.135548</td>\n",
" <td>0.053195</td>\n",
" <td>0.567139</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.997067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.116452</td>\n",
" <td>0.105930</td>\n",
" <td>0.053195</td>\n",
" <td>0.456801</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.645935</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.116096</td>\n",
" <td>0.108233</td>\n",
" <td>0.053195</td>\n",
" <td>0.458202</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.645939</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.116096</td>\n",
" <td>0.053195</td>\n",
" <td>0.491488</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.738216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.116452</td>\n",
" <td>0.053195</td>\n",
" <td>0.502174</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.774815</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.093796</td>\n",
" <td>0.053195</td>\n",
" <td>0.392446</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.491562</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.073600</td>\n",
" <td>0.053195</td>\n",
" <td>0.100514</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.029922</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.081693</td>\n",
" <td>0.053195</td>\n",
" <td>0.096207</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.016059</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.069549</td>\n",
" <td>0.053195</td>\n",
" <td>0.063661</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.993712</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.066439</td>\n",
" <td>0.053195</td>\n",
" <td>0.057271</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.990275</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 9 columns</p>\n",
"</div>"
],
"text/plain": [
" antecedants \\\n",
"0 (DAIRY) \n",
"1 (COMM BREAD) \n",
"2 (DSD GROCERY) \n",
"3 (COMM BREAD) \n",
"4 (COMM BREAD) \n",
"5 (GROCERY DRY GOODS) \n",
"6 (PRODUCE) \n",
"7 (COMM BREAD) \n",
"8 (DAIRY) \n",
"9 (DSD GROCERY) \n",
"10 (DAIRY) \n",
"11 (FROZEN FOODS) \n",
"12 (DAIRY) \n",
"13 (GROCERY DRY GOODS) \n",
"14 (DAIRY) \n",
"15 (PRODUCE) \n",
"16 (FROZEN FOODS) \n",
"17 (DSD GROCERY) \n",
"18 (DSD GROCERY) \n",
"19 (GROCERY DRY GOODS) \n",
"20 (HOUSEHOLD CHEMICALS/SUPP) \n",
"21 (DSD GROCERY) \n",
"22 (DSD GROCERY) \n",
"23 (HOUSEHOLD PAPER GOODS) \n",
"24 (IMPULSE MERCHANDISE) \n",
"25 (DSD GROCERY) \n",
"26 (PERSONAL CARE) \n",
"27 (DSD GROCERY) \n",
"28 (PHARMACY OTC) \n",
"29 (DSD GROCERY) \n",
".. ... \n",
"70 (PRODUCE, DSD GROCERY) \n",
"71 (DAIRY) \n",
"72 (PRODUCE) \n",
"73 (DSD GROCERY) \n",
"74 (DAIRY, PRODUCE) \n",
"75 (DAIRY, GROCERY DRY GOODS) \n",
"76 (PRODUCE, GROCERY DRY GOODS) \n",
"77 (DAIRY) \n",
"78 (PRODUCE) \n",
"79 (GROCERY DRY GOODS) \n",
"80 (PRODUCE, DSD GROCERY) \n",
"81 (PRODUCE, GROCERY DRY GOODS) \n",
"82 (DSD GROCERY, GROCERY DRY GOODS) \n",
"83 (PRODUCE) \n",
"84 (DSD GROCERY) \n",
"85 (GROCERY DRY GOODS) \n",
"86 (DAIRY, PRODUCE, DSD GROCERY) \n",
"87 (DAIRY, PRODUCE, GROCERY DRY GOODS) \n",
"88 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) \n",
"89 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) \n",
"90 (DAIRY, PRODUCE) \n",
"91 (DAIRY, DSD GROCERY) \n",
"92 (DAIRY, GROCERY DRY GOODS) \n",
"93 (PRODUCE, DSD GROCERY) \n",
"94 (PRODUCE, GROCERY DRY GOODS) \n",
"95 (DSD GROCERY, GROCERY DRY GOODS) \n",
"96 (DAIRY) \n",
"97 (PRODUCE) \n",
"98 (DSD GROCERY) \n",
"99 (GROCERY DRY GOODS) \n",
"\n",
" consequents antecedent support \\\n",
"0 (COMM BREAD) 0.529231 \n",
"1 (DAIRY) 0.183383 \n",
"2 (COMM BREAD) 0.835609 \n",
"3 (DSD GROCERY) 0.183383 \n",
"4 (GROCERY DRY GOODS) 0.183383 \n",
"5 (COMM BREAD) 0.928829 \n",
"6 (COMM BREAD) 0.552923 \n",
"7 (PRODUCE) 0.183383 \n",
"8 (DSD GROCERY) 0.529231 \n",
"9 (DAIRY) 0.835609 \n",
"10 (FROZEN FOODS) 0.529231 \n",
"11 (DAIRY) 0.265589 \n",
"12 (GROCERY DRY GOODS) 0.529231 \n",
"13 (DAIRY) 0.928829 \n",
"14 (PRODUCE) 0.529231 \n",
"15 (DAIRY) 0.552923 \n",
"16 (DSD GROCERY) 0.265589 \n",
"17 (FROZEN FOODS) 0.835609 \n",
"18 (GROCERY DRY GOODS) 0.835609 \n",
"19 (DSD GROCERY) 0.928829 \n",
"20 (DSD GROCERY) 0.281785 \n",
"21 (HOUSEHOLD CHEMICALS/SUPP) 0.835609 \n",
"22 (HOUSEHOLD PAPER GOODS) 0.835609 \n",
"23 (DSD GROCERY) 0.188304 \n",
"24 (DSD GROCERY) 0.333044 \n",
"25 (IMPULSE MERCHANDISE) 0.835609 \n",
"26 (DSD GROCERY) 0.469230 \n",
"27 (PERSONAL CARE) 0.835609 \n",
"28 (DSD GROCERY) 0.268227 \n",
"29 (PHARMACY OTC) 0.835609 \n",
".. ... ... \n",
"70 (DAIRY) 0.108233 \n",
"71 (PRODUCE, DSD GROCERY) 0.529231 \n",
"72 (DAIRY, DSD GROCERY) 0.552923 \n",
"73 (DAIRY, PRODUCE) 0.835609 \n",
"74 (GROCERY DRY GOODS) 0.093796 \n",
"75 (PRODUCE) 0.116096 \n",
"76 (DAIRY) 0.105930 \n",
"77 (PRODUCE, GROCERY DRY GOODS) 0.529231 \n",
"78 (DAIRY, GROCERY DRY GOODS) 0.552923 \n",
"79 (DAIRY, PRODUCE) 0.928829 \n",
"80 (GROCERY DRY GOODS) 0.108233 \n",
"81 (DSD GROCERY) 0.105930 \n",
"82 (PRODUCE) 0.135548 \n",
"83 (DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"84 (PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"85 (PRODUCE, DSD GROCERY) 0.928829 \n",
"86 (GROCERY DRY GOODS) 0.066439 \n",
"87 (DSD GROCERY) 0.069549 \n",
"88 (PRODUCE) 0.081693 \n",
"89 (DAIRY) 0.073600 \n",
"90 (DSD GROCERY, GROCERY DRY GOODS) 0.093796 \n",
"91 (PRODUCE, GROCERY DRY GOODS) 0.116452 \n",
"92 (PRODUCE, DSD GROCERY) 0.116096 \n",
"93 (DAIRY, GROCERY DRY GOODS) 0.108233 \n",
"94 (DAIRY, DSD GROCERY) 0.105930 \n",
"95 (DAIRY, PRODUCE) 0.135548 \n",
"96 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) 0.529231 \n",
"97 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"98 (DAIRY, PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"99 (DAIRY, PRODUCE, DSD GROCERY) 0.928829 \n",
"\n",
" consequent support support confidence lift leverage conviction \n",
"0 0.183383 0.063361 0.119723 0.652858 -0.033691 0.927682 \n",
"1 0.529231 0.063361 0.345513 0.652858 -0.033691 0.719295 \n",
"2 0.183383 0.069852 0.083594 0.455846 -0.083384 0.891109 \n",
"3 0.835609 0.069852 0.380909 0.455846 -0.083384 0.265537 \n",
"4 0.928829 0.072061 0.392955 0.423065 -0.098270 0.117242 \n",
"5 0.183383 0.072061 0.077583 0.423065 -0.098270 0.885301 \n",
"6 0.183383 0.057236 0.103516 0.564481 -0.044160 0.910911 \n",
"7 0.552923 0.057236 0.312115 0.564481 -0.044160 0.649929 \n",
"8 0.835609 0.116452 0.220040 0.263328 -0.325778 0.210769 \n",
"9 0.529231 0.116452 0.139362 0.263328 -0.325778 0.547000 \n",
"10 0.265589 0.060576 0.114461 0.430970 -0.079982 0.829338 \n",
"11 0.529231 0.060576 0.228083 0.430970 -0.079982 0.609870 \n",
"12 0.928829 0.116096 0.219367 0.236176 -0.375469 0.091171 \n",
"13 0.529231 0.116096 0.124992 0.236176 -0.375469 0.538017 \n",
"14 0.552923 0.093796 0.177230 0.320534 -0.198828 0.543381 \n",
"15 0.529231 0.093796 0.169636 0.320534 -0.198828 0.566943 \n",
"16 0.835609 0.067109 0.252681 0.302391 -0.154819 0.219975 \n",
"17 0.265589 0.067109 0.080312 0.302391 -0.154819 0.798543 \n",
"18 0.928829 0.135548 0.162215 0.174644 -0.640589 0.084952 \n",
"19 0.835609 0.135548 0.145934 0.174644 -0.640589 0.192481 \n",
"20 0.835609 0.066031 0.234330 0.280431 -0.169431 0.214703 \n",
"21 0.281785 0.066031 0.079021 0.280431 -0.169431 0.779839 \n",
"22 0.188304 0.062052 0.074260 0.394364 -0.095296 0.876808 \n",
"23 0.835609 0.062052 0.329534 0.394364 -0.095296 0.245190 \n",
"24 0.835609 0.083462 0.250605 0.299907 -0.194832 0.219365 \n",
"25 0.333044 0.083462 0.099882 0.299907 -0.194832 0.740966 \n",
"26 0.835609 0.076134 0.162253 0.194173 -0.315959 0.196230 \n",
"27 0.469230 0.076134 0.091112 0.194173 -0.315959 0.583977 \n",
"28 0.835609 0.055896 0.208392 0.249389 -0.168237 0.207668 \n",
"29 0.268227 0.055896 0.066893 0.249389 -0.168237 0.784232 \n",
".. ... ... ... ... ... ... \n",
"70 0.529231 0.066439 0.613852 1.159895 0.009159 1.219142 \n",
"71 0.108233 0.066439 0.125539 1.159895 0.009159 1.019790 \n",
"72 0.116452 0.066439 0.120160 1.031843 0.002050 1.004215 \n",
"73 0.093796 0.066439 0.079510 0.847691 -0.011937 0.984480 \n",
"74 0.928829 0.069549 0.741489 0.798305 -0.017572 0.275313 \n",
"75 0.552923 0.069549 0.599062 1.083446 0.005357 1.115078 \n",
"76 0.529231 0.069549 0.656553 1.240579 0.013487 1.370718 \n",
"77 0.105930 0.069549 0.131414 1.240579 0.013487 1.029340 \n",
"78 0.116096 0.069549 0.125783 1.083446 0.005357 1.011082 \n",
"79 0.093796 0.069549 0.074878 0.798305 -0.017572 0.979551 \n",
"80 0.928829 0.073600 0.680015 0.732122 -0.026930 0.222421 \n",
"81 0.835609 0.073600 0.694801 0.831491 -0.014916 0.538637 \n",
"82 0.552923 0.073600 0.542983 0.982023 -0.001347 0.978250 \n",
"83 0.135548 0.073600 0.133111 0.982023 -0.001347 0.997189 \n",
"84 0.105930 0.073600 0.088080 0.831491 -0.014916 0.980426 \n",
"85 0.108233 0.073600 0.079240 0.732122 -0.026930 0.968512 \n",
"86 0.928829 0.053195 0.800662 0.862012 -0.008515 0.357038 \n",
"87 0.835609 0.053195 0.764865 0.915339 -0.004920 0.699137 \n",
"88 0.552923 0.053195 0.651160 1.177668 0.008025 1.281610 \n",
"89 0.529231 0.053195 0.722760 1.365680 0.014244 1.698054 \n",
"90 0.135548 0.053195 0.567139 4.184048 0.040481 1.997067 \n",
"91 0.105930 0.053195 0.456801 4.312297 0.040860 1.645935 \n",
"92 0.108233 0.053195 0.458202 4.233469 0.040630 1.645939 \n",
"93 0.116096 0.053195 0.491488 4.233469 0.040630 1.738216 \n",
"94 0.116452 0.053195 0.502174 4.312297 0.040860 1.774815 \n",
"95 0.093796 0.053195 0.392446 4.184048 0.040481 1.491562 \n",
"96 0.073600 0.053195 0.100514 1.365680 0.014244 1.029922 \n",
"97 0.081693 0.053195 0.096207 1.177668 0.008025 1.016059 \n",
"98 0.069549 0.053195 0.063661 0.915339 -0.004920 0.993712 \n",
"99 0.066439 0.053195 0.057271 0.862012 -0.008515 0.990275 \n",
"\n",
"[100 rows x 9 columns]"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rules = association_rules(frequent_itemsets, metric=\"lift\", min_threshold=0.03)\n",
"rules"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>antecedants</th>\n",
" <th>consequents</th>\n",
" <th>antecedent support</th>\n",
" <th>consequent support</th>\n",
" <th>support</th>\n",
" <th>confidence</th>\n",
" <th>lift</th>\n",
" <th>leverage</th>\n",
" <th>conviction</th>\n",
" <th>antecedant_len</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.529231</td>\n",
" <td>0.183383</td>\n",
" <td>0.063361</td>\n",
" <td>0.119723</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.927682</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.529231</td>\n",
" <td>0.063361</td>\n",
" <td>0.345513</td>\n",
" <td>0.652858</td>\n",
" <td>-0.033691</td>\n",
" <td>0.719295</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.835609</td>\n",
" <td>0.183383</td>\n",
" <td>0.069852</td>\n",
" <td>0.083594</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.891109</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.183383</td>\n",
" <td>0.835609</td>\n",
" <td>0.069852</td>\n",
" <td>0.380909</td>\n",
" <td>0.455846</td>\n",
" <td>-0.083384</td>\n",
" <td>0.265537</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.183383</td>\n",
" <td>0.928829</td>\n",
" <td>0.072061</td>\n",
" <td>0.392955</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.117242</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.928829</td>\n",
" <td>0.183383</td>\n",
" <td>0.072061</td>\n",
" <td>0.077583</td>\n",
" <td>0.423065</td>\n",
" <td>-0.098270</td>\n",
" <td>0.885301</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(COMM BREAD)</td>\n",
" <td>0.552923</td>\n",
" <td>0.183383</td>\n",
" <td>0.057236</td>\n",
" <td>0.103516</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.910911</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>(COMM BREAD)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.183383</td>\n",
" <td>0.552923</td>\n",
" <td>0.057236</td>\n",
" <td>0.312115</td>\n",
" <td>0.564481</td>\n",
" <td>-0.044160</td>\n",
" <td>0.649929</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.835609</td>\n",
" <td>0.116452</td>\n",
" <td>0.220040</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.210769</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.835609</td>\n",
" <td>0.529231</td>\n",
" <td>0.116452</td>\n",
" <td>0.139362</td>\n",
" <td>0.263328</td>\n",
" <td>-0.325778</td>\n",
" <td>0.547000</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.265589</td>\n",
" <td>0.060576</td>\n",
" <td>0.114461</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.829338</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.529231</td>\n",
" <td>0.060576</td>\n",
" <td>0.228083</td>\n",
" <td>0.430970</td>\n",
" <td>-0.079982</td>\n",
" <td>0.609870</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.928829</td>\n",
" <td>0.116096</td>\n",
" <td>0.219367</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.091171</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.529231</td>\n",
" <td>0.116096</td>\n",
" <td>0.124992</td>\n",
" <td>0.236176</td>\n",
" <td>-0.375469</td>\n",
" <td>0.538017</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.529231</td>\n",
" <td>0.552923</td>\n",
" <td>0.093796</td>\n",
" <td>0.177230</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.543381</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.529231</td>\n",
" <td>0.093796</td>\n",
" <td>0.169636</td>\n",
" <td>0.320534</td>\n",
" <td>-0.198828</td>\n",
" <td>0.566943</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.265589</td>\n",
" <td>0.835609</td>\n",
" <td>0.067109</td>\n",
" <td>0.252681</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.219975</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(FROZEN FOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.265589</td>\n",
" <td>0.067109</td>\n",
" <td>0.080312</td>\n",
" <td>0.302391</td>\n",
" <td>-0.154819</td>\n",
" <td>0.798543</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.928829</td>\n",
" <td>0.135548</td>\n",
" <td>0.162215</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.084952</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.835609</td>\n",
" <td>0.135548</td>\n",
" <td>0.145934</td>\n",
" <td>0.174644</td>\n",
" <td>-0.640589</td>\n",
" <td>0.192481</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.281785</td>\n",
" <td>0.835609</td>\n",
" <td>0.066031</td>\n",
" <td>0.234330</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.214703</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD CHEMICALS/SUPP)</td>\n",
" <td>0.835609</td>\n",
" <td>0.281785</td>\n",
" <td>0.066031</td>\n",
" <td>0.079021</td>\n",
" <td>0.280431</td>\n",
" <td>-0.169431</td>\n",
" <td>0.779839</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.188304</td>\n",
" <td>0.062052</td>\n",
" <td>0.074260</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.876808</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>(HOUSEHOLD PAPER GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.188304</td>\n",
" <td>0.835609</td>\n",
" <td>0.062052</td>\n",
" <td>0.329534</td>\n",
" <td>0.394364</td>\n",
" <td>-0.095296</td>\n",
" <td>0.245190</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.333044</td>\n",
" <td>0.835609</td>\n",
" <td>0.083462</td>\n",
" <td>0.250605</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.219365</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(IMPULSE MERCHANDISE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.333044</td>\n",
" <td>0.083462</td>\n",
" <td>0.099882</td>\n",
" <td>0.299907</td>\n",
" <td>-0.194832</td>\n",
" <td>0.740966</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.469230</td>\n",
" <td>0.835609</td>\n",
" <td>0.076134</td>\n",
" <td>0.162253</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.196230</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PERSONAL CARE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.469230</td>\n",
" <td>0.076134</td>\n",
" <td>0.091112</td>\n",
" <td>0.194173</td>\n",
" <td>-0.315959</td>\n",
" <td>0.583977</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.268227</td>\n",
" <td>0.835609</td>\n",
" <td>0.055896</td>\n",
" <td>0.208392</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.207668</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PHARMACY OTC)</td>\n",
" <td>0.835609</td>\n",
" <td>0.268227</td>\n",
" <td>0.055896</td>\n",
" <td>0.066893</td>\n",
" <td>0.249389</td>\n",
" <td>-0.168237</td>\n",
" <td>0.784232</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.108233</td>\n",
" <td>0.529231</td>\n",
" <td>0.066439</td>\n",
" <td>0.613852</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.219142</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.529231</td>\n",
" <td>0.108233</td>\n",
" <td>0.066439</td>\n",
" <td>0.125539</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.019790</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116452</td>\n",
" <td>0.066439</td>\n",
" <td>0.120160</td>\n",
" <td>1.031843</td>\n",
" <td>0.002050</td>\n",
" <td>1.004215</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.835609</td>\n",
" <td>0.093796</td>\n",
" <td>0.066439</td>\n",
" <td>0.079510</td>\n",
" <td>0.847691</td>\n",
" <td>-0.011937</td>\n",
" <td>0.984480</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.928829</td>\n",
" <td>0.069549</td>\n",
" <td>0.741489</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.275313</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.116096</td>\n",
" <td>0.552923</td>\n",
" <td>0.069549</td>\n",
" <td>0.599062</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.115078</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.529231</td>\n",
" <td>0.069549</td>\n",
" <td>0.656553</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.370718</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.105930</td>\n",
" <td>0.069549</td>\n",
" <td>0.131414</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.029340</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.116096</td>\n",
" <td>0.069549</td>\n",
" <td>0.125783</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.011082</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.928829</td>\n",
" <td>0.093796</td>\n",
" <td>0.069549</td>\n",
" <td>0.074878</td>\n",
" <td>0.798305</td>\n",
" <td>-0.017572</td>\n",
" <td>0.979551</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.928829</td>\n",
" <td>0.073600</td>\n",
" <td>0.680015</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.222421</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.835609</td>\n",
" <td>0.073600</td>\n",
" <td>0.694801</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.538637</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.552923</td>\n",
" <td>0.073600</td>\n",
" <td>0.542983</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.978250</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.135548</td>\n",
" <td>0.073600</td>\n",
" <td>0.133111</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.997189</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.105930</td>\n",
" <td>0.073600</td>\n",
" <td>0.088080</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.980426</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.108233</td>\n",
" <td>0.073600</td>\n",
" <td>0.079240</td>\n",
" <td>0.732122</td>\n",
" <td>-0.026930</td>\n",
" <td>0.968512</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.066439</td>\n",
" <td>0.928829</td>\n",
" <td>0.053195</td>\n",
" <td>0.800662</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.357038</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.069549</td>\n",
" <td>0.835609</td>\n",
" <td>0.053195</td>\n",
" <td>0.764865</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.699137</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.081693</td>\n",
" <td>0.552923</td>\n",
" <td>0.053195</td>\n",
" <td>0.651160</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.281610</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.073600</td>\n",
" <td>0.529231</td>\n",
" <td>0.053195</td>\n",
" <td>0.722760</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.698054</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.135548</td>\n",
" <td>0.053195</td>\n",
" <td>0.567139</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.997067</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.116452</td>\n",
" <td>0.105930</td>\n",
" <td>0.053195</td>\n",
" <td>0.456801</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.645935</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>0.116096</td>\n",
" <td>0.108233</td>\n",
" <td>0.053195</td>\n",
" <td>0.458202</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.645939</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>0.108233</td>\n",
" <td>0.116096</td>\n",
" <td>0.053195</td>\n",
" <td>0.491488</td>\n",
" <td>4.233469</td>\n",
" <td>0.040630</td>\n",
" <td>1.738216</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.116452</td>\n",
" <td>0.053195</td>\n",
" <td>0.502174</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.774815</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.093796</td>\n",
" <td>0.053195</td>\n",
" <td>0.392446</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.491562</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>(DAIRY)</td>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.529231</td>\n",
" <td>0.073600</td>\n",
" <td>0.053195</td>\n",
" <td>0.100514</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.029922</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>(PRODUCE)</td>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.552923</td>\n",
" <td>0.081693</td>\n",
" <td>0.053195</td>\n",
" <td>0.096207</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.016059</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>0.835609</td>\n",
" <td>0.069549</td>\n",
" <td>0.053195</td>\n",
" <td>0.063661</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.993712</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>0.928829</td>\n",
" <td>0.066439</td>\n",
" <td>0.053195</td>\n",
" <td>0.057271</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.990275</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" antecedants \\\n",
"0 (DAIRY) \n",
"1 (COMM BREAD) \n",
"2 (DSD GROCERY) \n",
"3 (COMM BREAD) \n",
"4 (COMM BREAD) \n",
"5 (GROCERY DRY GOODS) \n",
"6 (PRODUCE) \n",
"7 (COMM BREAD) \n",
"8 (DAIRY) \n",
"9 (DSD GROCERY) \n",
"10 (DAIRY) \n",
"11 (FROZEN FOODS) \n",
"12 (DAIRY) \n",
"13 (GROCERY DRY GOODS) \n",
"14 (DAIRY) \n",
"15 (PRODUCE) \n",
"16 (FROZEN FOODS) \n",
"17 (DSD GROCERY) \n",
"18 (DSD GROCERY) \n",
"19 (GROCERY DRY GOODS) \n",
"20 (HOUSEHOLD CHEMICALS/SUPP) \n",
"21 (DSD GROCERY) \n",
"22 (DSD GROCERY) \n",
"23 (HOUSEHOLD PAPER GOODS) \n",
"24 (IMPULSE MERCHANDISE) \n",
"25 (DSD GROCERY) \n",
"26 (PERSONAL CARE) \n",
"27 (DSD GROCERY) \n",
"28 (PHARMACY OTC) \n",
"29 (DSD GROCERY) \n",
".. ... \n",
"70 (PRODUCE, DSD GROCERY) \n",
"71 (DAIRY) \n",
"72 (PRODUCE) \n",
"73 (DSD GROCERY) \n",
"74 (DAIRY, PRODUCE) \n",
"75 (DAIRY, GROCERY DRY GOODS) \n",
"76 (PRODUCE, GROCERY DRY GOODS) \n",
"77 (DAIRY) \n",
"78 (PRODUCE) \n",
"79 (GROCERY DRY GOODS) \n",
"80 (PRODUCE, DSD GROCERY) \n",
"81 (PRODUCE, GROCERY DRY GOODS) \n",
"82 (DSD GROCERY, GROCERY DRY GOODS) \n",
"83 (PRODUCE) \n",
"84 (DSD GROCERY) \n",
"85 (GROCERY DRY GOODS) \n",
"86 (DAIRY, PRODUCE, DSD GROCERY) \n",
"87 (DAIRY, PRODUCE, GROCERY DRY GOODS) \n",
"88 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) \n",
"89 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) \n",
"90 (DAIRY, PRODUCE) \n",
"91 (DAIRY, DSD GROCERY) \n",
"92 (DAIRY, GROCERY DRY GOODS) \n",
"93 (PRODUCE, DSD GROCERY) \n",
"94 (PRODUCE, GROCERY DRY GOODS) \n",
"95 (DSD GROCERY, GROCERY DRY GOODS) \n",
"96 (DAIRY) \n",
"97 (PRODUCE) \n",
"98 (DSD GROCERY) \n",
"99 (GROCERY DRY GOODS) \n",
"\n",
" consequents antecedent support \\\n",
"0 (COMM BREAD) 0.529231 \n",
"1 (DAIRY) 0.183383 \n",
"2 (COMM BREAD) 0.835609 \n",
"3 (DSD GROCERY) 0.183383 \n",
"4 (GROCERY DRY GOODS) 0.183383 \n",
"5 (COMM BREAD) 0.928829 \n",
"6 (COMM BREAD) 0.552923 \n",
"7 (PRODUCE) 0.183383 \n",
"8 (DSD GROCERY) 0.529231 \n",
"9 (DAIRY) 0.835609 \n",
"10 (FROZEN FOODS) 0.529231 \n",
"11 (DAIRY) 0.265589 \n",
"12 (GROCERY DRY GOODS) 0.529231 \n",
"13 (DAIRY) 0.928829 \n",
"14 (PRODUCE) 0.529231 \n",
"15 (DAIRY) 0.552923 \n",
"16 (DSD GROCERY) 0.265589 \n",
"17 (FROZEN FOODS) 0.835609 \n",
"18 (GROCERY DRY GOODS) 0.835609 \n",
"19 (DSD GROCERY) 0.928829 \n",
"20 (DSD GROCERY) 0.281785 \n",
"21 (HOUSEHOLD CHEMICALS/SUPP) 0.835609 \n",
"22 (HOUSEHOLD PAPER GOODS) 0.835609 \n",
"23 (DSD GROCERY) 0.188304 \n",
"24 (DSD GROCERY) 0.333044 \n",
"25 (IMPULSE MERCHANDISE) 0.835609 \n",
"26 (DSD GROCERY) 0.469230 \n",
"27 (PERSONAL CARE) 0.835609 \n",
"28 (DSD GROCERY) 0.268227 \n",
"29 (PHARMACY OTC) 0.835609 \n",
".. ... ... \n",
"70 (DAIRY) 0.108233 \n",
"71 (PRODUCE, DSD GROCERY) 0.529231 \n",
"72 (DAIRY, DSD GROCERY) 0.552923 \n",
"73 (DAIRY, PRODUCE) 0.835609 \n",
"74 (GROCERY DRY GOODS) 0.093796 \n",
"75 (PRODUCE) 0.116096 \n",
"76 (DAIRY) 0.105930 \n",
"77 (PRODUCE, GROCERY DRY GOODS) 0.529231 \n",
"78 (DAIRY, GROCERY DRY GOODS) 0.552923 \n",
"79 (DAIRY, PRODUCE) 0.928829 \n",
"80 (GROCERY DRY GOODS) 0.108233 \n",
"81 (DSD GROCERY) 0.105930 \n",
"82 (PRODUCE) 0.135548 \n",
"83 (DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"84 (PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"85 (PRODUCE, DSD GROCERY) 0.928829 \n",
"86 (GROCERY DRY GOODS) 0.066439 \n",
"87 (DSD GROCERY) 0.069549 \n",
"88 (PRODUCE) 0.081693 \n",
"89 (DAIRY) 0.073600 \n",
"90 (DSD GROCERY, GROCERY DRY GOODS) 0.093796 \n",
"91 (PRODUCE, GROCERY DRY GOODS) 0.116452 \n",
"92 (PRODUCE, DSD GROCERY) 0.116096 \n",
"93 (DAIRY, GROCERY DRY GOODS) 0.108233 \n",
"94 (DAIRY, DSD GROCERY) 0.105930 \n",
"95 (DAIRY, PRODUCE) 0.135548 \n",
"96 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) 0.529231 \n",
"97 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) 0.552923 \n",
"98 (DAIRY, PRODUCE, GROCERY DRY GOODS) 0.835609 \n",
"99 (DAIRY, PRODUCE, DSD GROCERY) 0.928829 \n",
"\n",
" consequent support support confidence lift leverage conviction \\\n",
"0 0.183383 0.063361 0.119723 0.652858 -0.033691 0.927682 \n",
"1 0.529231 0.063361 0.345513 0.652858 -0.033691 0.719295 \n",
"2 0.183383 0.069852 0.083594 0.455846 -0.083384 0.891109 \n",
"3 0.835609 0.069852 0.380909 0.455846 -0.083384 0.265537 \n",
"4 0.928829 0.072061 0.392955 0.423065 -0.098270 0.117242 \n",
"5 0.183383 0.072061 0.077583 0.423065 -0.098270 0.885301 \n",
"6 0.183383 0.057236 0.103516 0.564481 -0.044160 0.910911 \n",
"7 0.552923 0.057236 0.312115 0.564481 -0.044160 0.649929 \n",
"8 0.835609 0.116452 0.220040 0.263328 -0.325778 0.210769 \n",
"9 0.529231 0.116452 0.139362 0.263328 -0.325778 0.547000 \n",
"10 0.265589 0.060576 0.114461 0.430970 -0.079982 0.829338 \n",
"11 0.529231 0.060576 0.228083 0.430970 -0.079982 0.609870 \n",
"12 0.928829 0.116096 0.219367 0.236176 -0.375469 0.091171 \n",
"13 0.529231 0.116096 0.124992 0.236176 -0.375469 0.538017 \n",
"14 0.552923 0.093796 0.177230 0.320534 -0.198828 0.543381 \n",
"15 0.529231 0.093796 0.169636 0.320534 -0.198828 0.566943 \n",
"16 0.835609 0.067109 0.252681 0.302391 -0.154819 0.219975 \n",
"17 0.265589 0.067109 0.080312 0.302391 -0.154819 0.798543 \n",
"18 0.928829 0.135548 0.162215 0.174644 -0.640589 0.084952 \n",
"19 0.835609 0.135548 0.145934 0.174644 -0.640589 0.192481 \n",
"20 0.835609 0.066031 0.234330 0.280431 -0.169431 0.214703 \n",
"21 0.281785 0.066031 0.079021 0.280431 -0.169431 0.779839 \n",
"22 0.188304 0.062052 0.074260 0.394364 -0.095296 0.876808 \n",
"23 0.835609 0.062052 0.329534 0.394364 -0.095296 0.245190 \n",
"24 0.835609 0.083462 0.250605 0.299907 -0.194832 0.219365 \n",
"25 0.333044 0.083462 0.099882 0.299907 -0.194832 0.740966 \n",
"26 0.835609 0.076134 0.162253 0.194173 -0.315959 0.196230 \n",
"27 0.469230 0.076134 0.091112 0.194173 -0.315959 0.583977 \n",
"28 0.835609 0.055896 0.208392 0.249389 -0.168237 0.207668 \n",
"29 0.268227 0.055896 0.066893 0.249389 -0.168237 0.784232 \n",
".. ... ... ... ... ... ... \n",
"70 0.529231 0.066439 0.613852 1.159895 0.009159 1.219142 \n",
"71 0.108233 0.066439 0.125539 1.159895 0.009159 1.019790 \n",
"72 0.116452 0.066439 0.120160 1.031843 0.002050 1.004215 \n",
"73 0.093796 0.066439 0.079510 0.847691 -0.011937 0.984480 \n",
"74 0.928829 0.069549 0.741489 0.798305 -0.017572 0.275313 \n",
"75 0.552923 0.069549 0.599062 1.083446 0.005357 1.115078 \n",
"76 0.529231 0.069549 0.656553 1.240579 0.013487 1.370718 \n",
"77 0.105930 0.069549 0.131414 1.240579 0.013487 1.029340 \n",
"78 0.116096 0.069549 0.125783 1.083446 0.005357 1.011082 \n",
"79 0.093796 0.069549 0.074878 0.798305 -0.017572 0.979551 \n",
"80 0.928829 0.073600 0.680015 0.732122 -0.026930 0.222421 \n",
"81 0.835609 0.073600 0.694801 0.831491 -0.014916 0.538637 \n",
"82 0.552923 0.073600 0.542983 0.982023 -0.001347 0.978250 \n",
"83 0.135548 0.073600 0.133111 0.982023 -0.001347 0.997189 \n",
"84 0.105930 0.073600 0.088080 0.831491 -0.014916 0.980426 \n",
"85 0.108233 0.073600 0.079240 0.732122 -0.026930 0.968512 \n",
"86 0.928829 0.053195 0.800662 0.862012 -0.008515 0.357038 \n",
"87 0.835609 0.053195 0.764865 0.915339 -0.004920 0.699137 \n",
"88 0.552923 0.053195 0.651160 1.177668 0.008025 1.281610 \n",
"89 0.529231 0.053195 0.722760 1.365680 0.014244 1.698054 \n",
"90 0.135548 0.053195 0.567139 4.184048 0.040481 1.997067 \n",
"91 0.105930 0.053195 0.456801 4.312297 0.040860 1.645935 \n",
"92 0.108233 0.053195 0.458202 4.233469 0.040630 1.645939 \n",
"93 0.116096 0.053195 0.491488 4.233469 0.040630 1.738216 \n",
"94 0.116452 0.053195 0.502174 4.312297 0.040860 1.774815 \n",
"95 0.093796 0.053195 0.392446 4.184048 0.040481 1.491562 \n",
"96 0.073600 0.053195 0.100514 1.365680 0.014244 1.029922 \n",
"97 0.081693 0.053195 0.096207 1.177668 0.008025 1.016059 \n",
"98 0.069549 0.053195 0.063661 0.915339 -0.004920 0.993712 \n",
"99 0.066439 0.053195 0.057271 0.862012 -0.008515 0.990275 \n",
"\n",
" antecedant_len \n",
"0 1 \n",
"1 1 \n",
"2 1 \n",
"3 1 \n",
"4 1 \n",
"5 1 \n",
"6 1 \n",
"7 1 \n",
"8 1 \n",
"9 1 \n",
"10 1 \n",
"11 1 \n",
"12 1 \n",
"13 1 \n",
"14 1 \n",
"15 1 \n",
"16 1 \n",
"17 1 \n",
"18 1 \n",
"19 1 \n",
"20 1 \n",
"21 1 \n",
"22 1 \n",
"23 1 \n",
"24 1 \n",
"25 1 \n",
"26 1 \n",
"27 1 \n",
"28 1 \n",
"29 1 \n",
".. ... \n",
"70 2 \n",
"71 1 \n",
"72 1 \n",
"73 1 \n",
"74 2 \n",
"75 2 \n",
"76 2 \n",
"77 1 \n",
"78 1 \n",
"79 1 \n",
"80 2 \n",
"81 2 \n",
"82 2 \n",
"83 1 \n",
"84 1 \n",
"85 1 \n",
"86 3 \n",
"87 3 \n",
"88 3 \n",
"89 3 \n",
"90 2 \n",
"91 2 \n",
"92 2 \n",
"93 2 \n",
"94 2 \n",
"95 2 \n",
"96 1 \n",
"97 1 \n",
"98 1 \n",
"99 1 \n",
"\n",
"[100 rows x 10 columns]"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rules[\"antecedant_len\"] = rules[\"antecedants\"].apply(lambda x: len(x))\n",
"rules"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>antecedants</th>\n",
" <th>consequents</th>\n",
" <th>antecedent support</th>\n",
" <th>consequent support</th>\n",
" <th>support</th>\n",
" <th>confidence</th>\n",
" <th>lift</th>\n",
" <th>leverage</th>\n",
" <th>conviction</th>\n",
" <th>antecedant_len</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>(DAIRY, COMM BREAD)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.063361</td>\n",
" <td>0.928829</td>\n",
" <td>0.051143</td>\n",
" <td>0.807171</td>\n",
" <td>0.869021</td>\n",
" <td>-0.007708</td>\n",
" <td>0.369091</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>(COMM BREAD, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.072061</td>\n",
" <td>0.529231</td>\n",
" <td>0.051143</td>\n",
" <td>0.709720</td>\n",
" <td>1.341040</td>\n",
" <td>0.013006</td>\n",
" <td>1.621774</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>(COMM BREAD, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.069852</td>\n",
" <td>0.928829</td>\n",
" <td>0.053656</td>\n",
" <td>0.768135</td>\n",
" <td>0.826994</td>\n",
" <td>-0.011225</td>\n",
" <td>0.306952</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>(COMM BREAD, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.072061</td>\n",
" <td>0.835609</td>\n",
" <td>0.053656</td>\n",
" <td>0.744588</td>\n",
" <td>0.891073</td>\n",
" <td>-0.006559</td>\n",
" <td>0.643632</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.116096</td>\n",
" <td>0.835609</td>\n",
" <td>0.081693</td>\n",
" <td>0.703670</td>\n",
" <td>0.842105</td>\n",
" <td>-0.015317</td>\n",
" <td>0.554758</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.135548</td>\n",
" <td>0.529231</td>\n",
" <td>0.081693</td>\n",
" <td>0.602688</td>\n",
" <td>1.138800</td>\n",
" <td>0.009957</td>\n",
" <td>1.184885</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.093796</td>\n",
" <td>0.835609</td>\n",
" <td>0.066439</td>\n",
" <td>0.708338</td>\n",
" <td>0.847691</td>\n",
" <td>-0.011937</td>\n",
" <td>0.563636</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.116452</td>\n",
" <td>0.552923</td>\n",
" <td>0.066439</td>\n",
" <td>0.570530</td>\n",
" <td>1.031843</td>\n",
" <td>0.002050</td>\n",
" <td>1.040996</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>(PRODUCE, DSD GROCERY)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.108233</td>\n",
" <td>0.529231</td>\n",
" <td>0.066439</td>\n",
" <td>0.613852</td>\n",
" <td>1.159895</td>\n",
" <td>0.009159</td>\n",
" <td>1.219142</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>(DAIRY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.116096</td>\n",
" <td>0.552923</td>\n",
" <td>0.069549</td>\n",
" <td>0.599062</td>\n",
" <td>1.083446</td>\n",
" <td>0.005357</td>\n",
" <td>1.115078</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.529231</td>\n",
" <td>0.069549</td>\n",
" <td>0.656553</td>\n",
" <td>1.240579</td>\n",
" <td>0.013487</td>\n",
" <td>1.370718</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.835609</td>\n",
" <td>0.073600</td>\n",
" <td>0.694801</td>\n",
" <td>0.831491</td>\n",
" <td>-0.014916</td>\n",
" <td>0.538637</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.135548</td>\n",
" <td>0.552923</td>\n",
" <td>0.073600</td>\n",
" <td>0.542983</td>\n",
" <td>0.982023</td>\n",
" <td>-0.001347</td>\n",
" <td>0.978250</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>(DAIRY, PRODUCE, DSD GROCERY)</td>\n",
" <td>(GROCERY DRY GOODS)</td>\n",
" <td>0.066439</td>\n",
" <td>0.928829</td>\n",
" <td>0.053195</td>\n",
" <td>0.800662</td>\n",
" <td>0.862012</td>\n",
" <td>-0.008515</td>\n",
" <td>0.357038</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>(DAIRY, PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DSD GROCERY)</td>\n",
" <td>0.069549</td>\n",
" <td>0.835609</td>\n",
" <td>0.053195</td>\n",
" <td>0.764865</td>\n",
" <td>0.915339</td>\n",
" <td>-0.004920</td>\n",
" <td>0.699137</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>(DAIRY, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(PRODUCE)</td>\n",
" <td>0.081693</td>\n",
" <td>0.552923</td>\n",
" <td>0.053195</td>\n",
" <td>0.651160</td>\n",
" <td>1.177668</td>\n",
" <td>0.008025</td>\n",
" <td>1.281610</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>(PRODUCE, DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY)</td>\n",
" <td>0.073600</td>\n",
" <td>0.529231</td>\n",
" <td>0.053195</td>\n",
" <td>0.722760</td>\n",
" <td>1.365680</td>\n",
" <td>0.014244</td>\n",
" <td>1.698054</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>(DAIRY, PRODUCE)</td>\n",
" <td>(DSD GROCERY, GROCERY DRY GOODS)</td>\n",
" <td>0.093796</td>\n",
" <td>0.135548</td>\n",
" <td>0.053195</td>\n",
" <td>0.567139</td>\n",
" <td>4.184048</td>\n",
" <td>0.040481</td>\n",
" <td>1.997067</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>(PRODUCE, GROCERY DRY GOODS)</td>\n",
" <td>(DAIRY, DSD GROCERY)</td>\n",
" <td>0.105930</td>\n",
" <td>0.116452</td>\n",
" <td>0.053195</td>\n",
" <td>0.502174</td>\n",
" <td>4.312297</td>\n",
" <td>0.040860</td>\n",
" <td>1.774815</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" antecedants \\\n",
"50 (DAIRY, COMM BREAD) \n",
"52 (COMM BREAD, GROCERY DRY GOODS) \n",
"56 (COMM BREAD, DSD GROCERY) \n",
"58 (COMM BREAD, GROCERY DRY GOODS) \n",
"63 (DAIRY, GROCERY DRY GOODS) \n",
"64 (DSD GROCERY, GROCERY DRY GOODS) \n",
"68 (DAIRY, PRODUCE) \n",
"69 (DAIRY, DSD GROCERY) \n",
"70 (PRODUCE, DSD GROCERY) \n",
"75 (DAIRY, GROCERY DRY GOODS) \n",
"76 (PRODUCE, GROCERY DRY GOODS) \n",
"81 (PRODUCE, GROCERY DRY GOODS) \n",
"82 (DSD GROCERY, GROCERY DRY GOODS) \n",
"86 (DAIRY, PRODUCE, DSD GROCERY) \n",
"87 (DAIRY, PRODUCE, GROCERY DRY GOODS) \n",
"88 (DAIRY, DSD GROCERY, GROCERY DRY GOODS) \n",
"89 (PRODUCE, DSD GROCERY, GROCERY DRY GOODS) \n",
"90 (DAIRY, PRODUCE) \n",
"94 (PRODUCE, GROCERY DRY GOODS) \n",
"\n",
" consequents antecedent support consequent support \\\n",
"50 (GROCERY DRY GOODS) 0.063361 0.928829 \n",
"52 (DAIRY) 0.072061 0.529231 \n",
"56 (GROCERY DRY GOODS) 0.069852 0.928829 \n",
"58 (DSD GROCERY) 0.072061 0.835609 \n",
"63 (DSD GROCERY) 0.116096 0.835609 \n",
"64 (DAIRY) 0.135548 0.529231 \n",
"68 (DSD GROCERY) 0.093796 0.835609 \n",
"69 (PRODUCE) 0.116452 0.552923 \n",
"70 (DAIRY) 0.108233 0.529231 \n",
"75 (PRODUCE) 0.116096 0.552923 \n",
"76 (DAIRY) 0.105930 0.529231 \n",
"81 (DSD GROCERY) 0.105930 0.835609 \n",
"82 (PRODUCE) 0.135548 0.552923 \n",
"86 (GROCERY DRY GOODS) 0.066439 0.928829 \n",
"87 (DSD GROCERY) 0.069549 0.835609 \n",
"88 (PRODUCE) 0.081693 0.552923 \n",
"89 (DAIRY) 0.073600 0.529231 \n",
"90 (DSD GROCERY, GROCERY DRY GOODS) 0.093796 0.135548 \n",
"94 (DAIRY, DSD GROCERY) 0.105930 0.116452 \n",
"\n",
" support confidence lift leverage conviction antecedant_len \n",
"50 0.051143 0.807171 0.869021 -0.007708 0.369091 2 \n",
"52 0.051143 0.709720 1.341040 0.013006 1.621774 2 \n",
"56 0.053656 0.768135 0.826994 -0.011225 0.306952 2 \n",
"58 0.053656 0.744588 0.891073 -0.006559 0.643632 2 \n",
"63 0.081693 0.703670 0.842105 -0.015317 0.554758 2 \n",
"64 0.081693 0.602688 1.138800 0.009957 1.184885 2 \n",
"68 0.066439 0.708338 0.847691 -0.011937 0.563636 2 \n",
"69 0.066439 0.570530 1.031843 0.002050 1.040996 2 \n",
"70 0.066439 0.613852 1.159895 0.009159 1.219142 2 \n",
"75 0.069549 0.599062 1.083446 0.005357 1.115078 2 \n",
"76 0.069549 0.656553 1.240579 0.013487 1.370718 2 \n",
"81 0.073600 0.694801 0.831491 -0.014916 0.538637 2 \n",
"82 0.073600 0.542983 0.982023 -0.001347 0.978250 2 \n",
"86 0.053195 0.800662 0.862012 -0.008515 0.357038 3 \n",
"87 0.053195 0.764865 0.915339 -0.004920 0.699137 3 \n",
"88 0.053195 0.651160 1.177668 0.008025 1.281610 3 \n",
"89 0.053195 0.722760 1.365680 0.014244 1.698054 3 \n",
"90 0.053195 0.567139 4.184048 0.040481 1.997067 2 \n",
"94 0.053195 0.502174 4.312297 0.040860 1.774815 2 "
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rules[ (rules['antecedant_len'] >= 2) &\n",
" (rules['confidence'] > 0.5) &\n",
" (rules['lift'] > 0.8) ]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment