Skip to content

Instantly share code, notes, and snippets.

@DeepakRavi
Created October 17, 2016 00:46
Show Gist options
  • Save DeepakRavi/d958de94c689d630d45a01a31de2be49 to your computer and use it in GitHub Desktop.
Save DeepakRavi/d958de94c689d630d45a01a31de2be49 to your computer and use it in GitHub Desktop.
Conversion Rate
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Conversion Rate"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is data about users who hit an XYZ site. It contains information as to whether they converted or not and as well as their characteristics such as their country, marketing channel, age, whether they are repeat users etc. \n",
"\n",
"The analysis below is to predict the conversion rate and come up with recommendations to improve conversion. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Loading important libraries\n",
"import pandas as pd\n",
"import numpy as np\n",
"from pandas import DataFrame, Series\n",
"import sklearn\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.metrics import classification_report \n",
"from sklearn.cross_validation import train_test_split\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.grid_search import GridSearchCV \n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.ensemble.partial_dependence import plot_partial_dependence\n",
"from sklearn.ensemble import partial_dependence"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Reading the data below"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = pd.read_csv('conversion_data.csv')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>UK</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>Ads</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>US</td>\n",
" <td>23</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>US</td>\n",
" <td>28</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>China</td>\n",
" <td>39</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>US</td>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited converted\n",
"0 UK 25 1 Ads 1 0\n",
"1 US 23 1 Seo 5 0\n",
"2 US 28 1 Seo 4 0\n",
"3 China 39 1 Seo 5 0\n",
"4 US 30 1 Seo 6 0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Head of data\n",
"data.head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Describing basic summary statistics"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>316200.000000</td>\n",
" <td>316200.000000</td>\n",
" <td>316200.000000</td>\n",
" <td>316200.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>30.569858</td>\n",
" <td>0.685465</td>\n",
" <td>4.872966</td>\n",
" <td>0.032258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8.271802</td>\n",
" <td>0.464331</td>\n",
" <td>3.341104</td>\n",
" <td>0.176685</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>17.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>24.000000</td>\n",
" <td>0.000000</td>\n",
" <td>2.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>30.000000</td>\n",
" <td>1.000000</td>\n",
" <td>4.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>36.000000</td>\n",
" <td>1.000000</td>\n",
" <td>7.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>123.000000</td>\n",
" <td>1.000000</td>\n",
" <td>29.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age new_user total_pages_visited converted\n",
"count 316200.000000 316200.000000 316200.000000 316200.000000\n",
"mean 30.569858 0.685465 4.872966 0.032258\n",
"std 8.271802 0.464331 3.341104 0.176685\n",
"min 17.000000 0.000000 1.000000 0.000000\n",
"25% 24.000000 0.000000 2.000000 0.000000\n",
"50% 30.000000 1.000000 4.000000 0.000000\n",
"75% 36.000000 1.000000 7.000000 0.000000\n",
"max 123.000000 1.000000 29.000000 1.000000"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Some quick observations\n",
"\n",
"1. The users for this site is fairly young with a mean age of about 30 years.\n",
"2. There seems to be some data inconsistency. The maximum age is indicated to be 123 years. \n",
"3. 68% of the users are new and only less that 32% are return users.\n",
"4. The average number of pages visited by a user in one session is around 4.8 pages.\n",
"5. Total number of users that convert is around 3% which seems reasonable as it is the industry standard."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 316200\n",
"unique 4\n",
"top US\n",
"freq 178092\n",
"Name: country, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#investigating country and source columns\n",
"data['country'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 316200\n",
"unique 3\n",
"top Seo\n",
"freq 155040\n",
"Name: source, dtype: object"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data['source'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</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>China</th>\n",
" <td>76602</td>\n",
" <td>76602</td>\n",
" <td>76602</td>\n",
" <td>76602</td>\n",
" <td>76602</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Germany</th>\n",
" <td>13056</td>\n",
" <td>13056</td>\n",
" <td>13056</td>\n",
" <td>13056</td>\n",
" <td>13056</td>\n",
" </tr>\n",
" <tr>\n",
" <th>UK</th>\n",
" <td>48450</td>\n",
" <td>48450</td>\n",
" <td>48450</td>\n",
" <td>48450</td>\n",
" <td>48450</td>\n",
" </tr>\n",
" <tr>\n",
" <th>US</th>\n",
" <td>178092</td>\n",
" <td>178092</td>\n",
" <td>178092</td>\n",
" <td>178092</td>\n",
" <td>178092</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age new_user source total_pages_visited converted\n",
"country \n",
"China 76602 76602 76602 76602 76602\n",
"Germany 13056 13056 13056 13056 13056\n",
"UK 48450 48450 48450 48450 48450\n",
"US 178092 178092 178092 178092 178092"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby('country').count() "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Highest traffic for the site comes from US, followed by China and UK.\n",
"This indicates it's probably a US based site."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Checking for data inconsistencies below"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>90928</th>\n",
" <td>Germany</td>\n",
" <td>123</td>\n",
" <td>0</td>\n",
" <td>Seo</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>295581</th>\n",
" <td>UK</td>\n",
" <td>111</td>\n",
" <td>0</td>\n",
" <td>Ads</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>265167</th>\n",
" <td>US</td>\n",
" <td>79</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>192644</th>\n",
" <td>US</td>\n",
" <td>77</td>\n",
" <td>0</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>154217</th>\n",
" <td>US</td>\n",
" <td>73</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>208969</th>\n",
" <td>US</td>\n",
" <td>72</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>301366</th>\n",
" <td>UK</td>\n",
" <td>70</td>\n",
" <td>0</td>\n",
" <td>Ads</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114485</th>\n",
" <td>US</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" <td>Ads</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57122</th>\n",
" <td>UK</td>\n",
" <td>69</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>290142</th>\n",
" <td>US</td>\n",
" <td>69</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited converted\n",
"90928 Germany 123 0 Seo 15 1\n",
"295581 UK 111 0 Ads 10 1\n",
"265167 US 79 1 Direct 1 0\n",
"192644 US 77 0 Direct 4 0\n",
"154217 US 73 1 Seo 5 0\n",
"208969 US 72 1 Direct 4 0\n",
"301366 UK 70 0 Ads 5 0\n",
"114485 US 70 1 Ads 9 0\n",
"57122 UK 69 1 Direct 4 0\n",
"290142 US 69 1 Seo 6 0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.sort_values(by = 'age', ascending = False).head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"It's evident that there are only two rows with probably wrong data entered.\n",
"\n",
"The next course of action is one of two things\n",
"\n",
"1. Remove both these rows\n",
"2. Fill these rows with a substituted value such as mean age etc\n",
"\n",
"It's safer to remove the entire row"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>265167</th>\n",
" <td>US</td>\n",
" <td>79</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>192644</th>\n",
" <td>US</td>\n",
" <td>77</td>\n",
" <td>0</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>154217</th>\n",
" <td>US</td>\n",
" <td>73</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>208969</th>\n",
" <td>US</td>\n",
" <td>72</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114485</th>\n",
" <td>US</td>\n",
" <td>70</td>\n",
" <td>1</td>\n",
" <td>Ads</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>301366</th>\n",
" <td>UK</td>\n",
" <td>70</td>\n",
" <td>0</td>\n",
" <td>Ads</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57122</th>\n",
" <td>UK</td>\n",
" <td>69</td>\n",
" <td>1</td>\n",
" <td>Direct</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited converted\n",
"265167 US 79 1 Direct 1 0\n",
"192644 US 77 0 Direct 4 0\n",
"154217 US 73 1 Seo 5 0\n",
"208969 US 72 1 Direct 4 0\n",
"114485 US 70 1 Ads 9 0\n",
"301366 UK 70 0 Ads 5 0\n",
"57122 UK 69 1 Direct 4 0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.drop([90928,295581], axis = 0).sort_values(by = 'age', ascending = False).head(7)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"The inconsistent data points have been removed"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exploring the data below to get a better sense of it."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Conversion rate by countries\n",
"\n",
"data_country = data.groupby('country')[['converted']].mean()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>converted</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>China</th>\n",
" <td>0.001332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Germany</th>\n",
" <td>0.062500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>UK</th>\n",
" <td>0.052632</td>\n",
" </tr>\n",
" <tr>\n",
" <th>US</th>\n",
" <td>0.037801</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" converted\n",
"country \n",
"China 0.001332\n",
"Germany 0.062500\n",
"UK 0.052632\n",
"US 0.037801"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Plotting the above dataframe\n",
"\n",
"data_country.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x9a35dd8>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEzCAYAAADKCUOEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHJtJREFUeJzt3XuUVOWd7vHv0yCOJIrIAI00NEZFl44GoxLUZFmJSQRz\nIRkXsTsXEsYx5JwwsMbJjEZPYuPJMZc1GU/UkxENMSExkuUlkckwxlxsZhJHIAqGCaAYpYWG9DKD\nRMGEAP7OH7W7LcrurgKqq7pen89atbr2u99d9asNPP3y1r4oIjAzs7Q01LoAMzOrPIe7mVmCHO5m\nZglyuJuZJcjhbmaWIIe7mVmCygp3SdMlbZT0pKSr+uhzk6RNktZKmpK1TZa0RtJj2c/fS5pfyQ9g\nZmavplLHuUtqAJ4ELgK2AauBlojYWNBnBjAvIt4t6c3AVyNiWi+vsxV4c0RsqezHMDOzQuWM3KcC\nmyKiIyL2AkuBmUV9ZgJLACJiJTBC0tiiPu8AfuNgNzMbeOWE+3igMJC3Zm399enspc9lwF0HW6CZ\nmR28qnyhKukI4H3A3dV4PzOz17qhZfTpBCYWLDdlbcV9JvTTZwbwaEQ819ebSPJFbszMDlJEqLf2\nckbuq4GTJDVLGga0AMuK+iwDZgNImgbsjIiugvWtlDElExGD+nHdddfVvIaUHt6f3p+D+VEP+7M/\nJUfuEbFf0jzgQfK/DBZHxAZJc/Or47aIWC7pEklPAbuBOd3bSxpO/svUT5R6LzMzq4xypmWIiAeA\nU4raFhUtz+tj25eA0YdaoJmZHTyfoXoQcrlcrUtIivdnZXl/Vla978+SJzFVi6QYLLWYmdUDSUQf\nX6iWNS1jZumbNGkSHR0dtS7DetHc3MzmzZsPahuP3M0M6BkF1roM60Vffzb9jdw9525mliCHu5lZ\nghzuZmYJcribmQ0Cc+bM4XOf+1zFXs/hbma9amxqRNKAPRqbGmv9ESuqoaGBp59+utZl9PChkGbW\nq67OLmgbwNdv6yrdqQ7s37+fIUOGIPV60ErNeORuZnVh69atXHrppYwZM4bRo0czf/58IoLPf/7z\nTJo0icbGRj7+8Y/zwgsvANDR0UFDQwNLliyhubmZMWPGcMMNNwCwfft2hg8fzs6dO3tef82aNYwe\nPZr9+/cD8I1vfIPTTjuNUaNGMWPGDJ599tmevg0NDXzta19j8uTJTJ48mQsvvJCI4Mwzz+SYY47h\n7rvzVzf/4Q9/yFlnncXIkSN5y1vewrp16w54v7PPPpsRI0bQ0tLCH//4x4ruL4e7mQ16L7/8Mu95\nz3s44YQT6OjooLOzk5aWFr75zW+yZMkSVqxYwdNPP82LL77IvHkHXubqF7/4BZs2beInP/kJ119/\nPU888QTjxo3j/PPP59577+3pd9dddzFr1iyGDBnC/fffzxe/+EV+8IMf8Nxzz/HWt76V1tbWA173\n/vvvZ9WqVaxfv54VK1YAsG7dOl544QVmzZrFmjVruPzyy7n99tvZsWMHc+fO5X3vex979+5l7969\nfOADH+BjH/sYO3bsYNasWQfUUgkOdzMb9FatWsX27dv58pe/zFFHHcWwYcM4//zzufPOO7nyyitp\nbm5m+PDhfOELX2Dp0qW8/PLLQP4kn7a2NoYNG8aZZ57JG9/4Rh5//HEAWltb+e53v9vzHkuXLuXD\nH/4wAIsWLeIzn/kMkydPpqGhgauvvpq1a9eyZcsrN5y75pprOPbYYznyyCN72gpPNLr99tv55Cc/\nyTnnnIMkPvrRj3LkkUfyyCOP8Mgjj7Bv3z7mz5/PkCFDuPTSSzn33HMrus8c7mY26G3ZsoXm5mYa\nGg6MrG3bttHc3Nyz3NzczL59++jqemU+f+zYV27nPHz4cHbt2gXApZdeyiOPPEJXVxcrVqxgyJAh\nXHDBBUB+SmfBggUcd9xxHHfccYwaNQpJdHa+cg+ipqamfmvu6OjgK1/5Ss9rjBw5kq1bt7Jt2za2\nbdvG+PEH3om08HNUgsPdzAa9CRMm8Oyzz/aMyLsdf/zxB1wPp6OjgyOOOOKAQO/Lsccey7ve9S6W\nLl3KXXfdRUtLS8+6iRMnsmjRInbs2MGOHTt4/vnn2bVrF9OmTevpU+oL1AkTJnDttde+6jUuu+wy\nxo0bd8AvCuCAOf1KcLib2aA3depUxo0bx9VXX81LL73Enj17ePjhh2ltbeXGG29k8+bN7Nq1i2uv\nvZaWlpaeEX6pa+W0trayZMkS7r33Xj70oQ/1tM+dO5cbbriB9evXA/D73/+ee+65p9/XamxsPOBQ\nyCuuuIJbb72VVatWAbB7926WL1/O7t27Oe+88xg6dCg333wz+/bt47777uvpVzG1vk1Uwe2iwsxq\np/jf4NjxYwMYsMfY8WMPqr4tW7bE+9///hg1alSMHj06FixYEBER119/fUyYMCHGjBkTs2fPjp07\nd0ZExObNm6OhoSH279/f8xpve9vbYvHixT3Lf/jDH+Loo4+OM84441Xv953vfCfOOOOMGDFiREyc\nODEuv/zynnUNDQ3xm9/85oD+ixYtinHjxsXIkSPj7rvvjoiIH/3oR3HuuefGyJEj4/jjj48PfvCD\nsWvXroiIePTRR+Oss86KY445JlpaWqKlpSU++9nP9vrZ+8rHrL3XTPVVIc0M8FUhBzNfFdLMzACH\nu5lZkhzuVpaBvs6Ir1diVlmec7eySBrQ64xUTFvpIySsd55zH7w8525mZkCZ4S5puqSNkp6UdFUf\nfW6StEnSWklTCtpHSLpb0gZJv5b05koVb2ZmvSt5yV9JDcAtwEXANmC1pPsjYmNBnxnAiRFxchbe\ntwLdp3J9FVgeEbMkDQWGV/pDmNnha25uHnSXrbW8Q7k0QTnXc58KbIqIDgBJS4GZwMaCPjOBJQAR\nsTIbrY8F/gC8NSI+nq3bB7xw0FWa2YDbvHlzrUuwCipnWmY8sKVgeWvW1l+fzqztBOB3ku6Q9Jik\n2yQddTgFm5lZaQN9J6ahwJuAT0XELyX9X+Bq4LreOre1tfU8z+Vy5HK5AS7PzKx+tLe3097eXlbf\nkodCSpoGtEXE9Gz5avLXM/hSQZ9bgYci4nvZ8kbgwmz1f0bEG7L2twBXRcR7e3kfHwo5iPlQSLPB\n53APhVwNnCSpWdIwoAVYVtRnGTA7e7NpwM6I6IqILmCLpMlZv4uA9YfyIczMrHwlp2UiYr+kecCD\n5H8ZLI6IDZLm5lfHbRGxXNIlkp4CdgNzCl5iPnCnpCOAp4vWmZnZAPAZqlYWT8uYDT4+Q9XM7DXG\n4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJ\ncribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZjXQ2NSIpEH/aGxqrPWuskM0\ntNYFmL0WdXV21cUNx7vaumpdgh0ij9zNzBLkcDczS1BZ4S5puqSNkp6UdFUffW6StEnSWklnFbRv\nlvS4pDWSVlWqcDMz61vJOXdJDcAtwEXANmC1pPsjYmNBnxnAiRFxsqQ3A/8MTMtWvwzkIuL5ildv\nZma9KmfkPhXYFBEdEbEXWArMLOozE1gCEBErgRGSxmbrVOb7mJlZhZQTuuOBLQXLW7O2/vp0FvQJ\n4MeSVku64lALNTOz8lXjUMgLImK7pNHkQ35DRPy8t45tbW09z3O5HLlcrgrlmZnVh/b2dtrb28vq\nW064dwITC5absrbiPhN66xMR27Ofz0n6PvlpnpLhbmZmByoe9C5cuLDPvuVMy6wGTpLULGkY0AIs\nK+qzDJgNIGkasDMiuiQNl/T6rP11wLuA/yr/o5iZ2aEoOXKPiP2S5gEPkv9lsDgiNkiam18dt0XE\nckmXSHoK2A3MyTYfC3xfUmTvdWdEPDgwH8XMzLqVNeceEQ8ApxS1LSpantfLds8AUw6nQDMzO3g+\nRNHMLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS\n5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOz\nBDnczcwSVFa4S5ouaaOkJyVd1UefmyRtkrRW0pSidQ2SHpO0rBJFm5lZ/0qGu6QG4BbgYuB0oFXS\nqUV9ZgAnRsTJwFzg1qKXWQCsr0jFZmZWUjkj96nApojoiIi9wFJgZlGfmcASgIhYCYyQNBZAUhNw\nCfD1ilVtZmb9KifcxwNbCpa3Zm399eks6HMj8PdAHGKNZmZ2kIYO5ItLejfQFRFrJeUA9de/ra2t\n53kulyOXyw1keWZmdaW9vZ329vay+iqi/wG1pGlAW0RMz5avBiIivlTQ51bgoYj4Xra8EbiQ/Fz7\nR4B9wFHA0cB9ETG7l/eJUrVY7UiCtlpXUYY2qIe/R96fVgmSiIheB83lTMusBk6S1CxpGNACFB/1\nsgyYnb3ZNGBnRHRFxDURMTEi3pBt97Pegt3MzCqr5LRMROyXNA94kPwvg8URsUHS3PzquC0ilku6\nRNJTwG5gzsCWbWZm/Slrzj0iHgBOKWpbVLQ8r8RrrABWHGyBZmZ28HyGqplZghzuZmYJcribWd1r\nbGpE0qB+NDY1VnWfDOhx7mZm1dDV2TXoDy3tauuq6vt55G5mliCHu5lZghzuZmYJcribmSXI4W5m\nliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcrib\nmSXI4W5mliCHu5lZghzuZmYJKivcJU2XtFHSk5Ku6qPPTZI2SVoraUrWdqSklZLWSFon6bpKFm9m\nZr0rGe6SGoBbgIuB04FWSacW9ZkBnBgRJwNzgVsBImIP8LaIOAuYAsyQNLWyH8HMzIqVM3KfCmyK\niI6I2AssBWYW9ZkJLAGIiJXACEljs+WXsj5HAkOBqEThZmbWt3LCfTywpWB5a9bWX5/O7j6SGiSt\nAX4L/DgiVh96uWZmVo6hA/0GEfEycJakY4AfSDotItb31retra3neS6XI5fLDXR5ZmZ1o729nfb2\n9rL6lhPuncDEguWmrK24z4T++kTEC5IeAqYDJcPdzMwOVDzoXbhwYZ99y5mWWQ2cJKlZ0jCgBVhW\n1GcZMBtA0jRgZ0R0SfpzSSOy9qOAdwIby/8oZmZ2KEqO3CNiv6R5wIPkfxksjogNkubmV8dtEbFc\n0iWSngJ2A3OyzccB38qOuGkAvhcRywfmo5iZWbey5twj4gHglKK2RUXL83rZbh3wpsMp0MzMDp7P\nUDUzS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7ME\nOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cws\nQQ53M7MElRXukqZL2ijpSUlX9dHnJkmbJK2VNCVra5L0M0m/lrRO0vxKFm9mZr0rGe6SGoBbgIuB\n04FWSacW9ZkBnBgRJwNzgVuzVfuAKyPidOA84FPF25qZWeWVM3KfCmyKiI6I2AssBWYW9ZkJLAGI\niJXACEljI+K3EbE2a98FbADGV6x6MzPrVTnhPh7YUrC8lVcHdHGfzuI+kiYBU4CVB1ukmZkdnKHV\neBNJrwfuARZkI/hetbW19TzP5XLkcrkBr83MrF60t7fT3t5eVt9ywr0TmFiw3JS1FfeZ0FsfSUPJ\nB/u3I+L+/t6oMNzNzOxAxYPehQsX9tm3nGmZ1cBJkpolDQNagGVFfZYBswEkTQN2RkRXtu4bwPqI\n+Gq5H8DMzA5PyZF7ROyXNA94kPwvg8URsUHS3PzquC0ilku6RNJTwG7g4wCSLgA+DKyTtAYI4JqI\neGCAPo+ZmVHmnHsWxqcUtS0qWp7Xy3a/AIYcToFmZnbwfIaqmVmCHO5mZglyuJuZJcjhbmaWIIe7\nmVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjh\nbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJaiscJc0XdJGSU9KuqqPPjdJ\n2iRpraSzCtoXS+qS9KtKFW1mZv0rGe6SGoBbgIuB04FWSacW9ZkBnBgRJwNzgX8uWH1Htq2ZmVVJ\nOSP3qcCmiOiIiL3AUmBmUZ+ZwBKAiFgJjJA0Nlv+OfB85Uo2M7NSygn38cCWguWtWVt/fTp76WNm\nZlUytNYFFGpra+t5nsvlyOVyNavFzGywaW9vp729vay+5YR7JzCxYLkpayvuM6FEn5IKw93MzA5U\nPOhduHBhn33LmZZZDZwkqVnSMKAFWFbUZxkwG0DSNGBnRHQVrFf2MDOzKigZ7hGxH5gHPAj8Glga\nERskzZX0iazPcuAZSU8Bi4D/2b29pO8CDwOTJT0rac4AfA4zMytQ1px7RDwAnFLUtqhoeV4f237o\nkKszM7ND4jNUzcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3\nM0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnc\nzcwS5HA3M0tQWeEuabqkjZKelHRVH31ukrRJ0lpJUw5mWzMzq6yS4S6pAbgFuBg4HWiVdGpRnxnA\niRFxMjAXuLXcbQdSY1Mjkgb1o7GpsVq7Y/B5ptYFJMb7s7LqfH8OLaPPVGBTRHQASFoKzAQ2FvSZ\nCSwBiIiVkkZIGgucUMa2A6arswvaKviCDwFvq+DrAV1tXZV9wXqymfzfEKuMzXh/VtJm6np/ljMt\nMx7YUrC8NWsrp08525qZWYUN1BeqGqDXNTOzMpQzLdMJTCxYbsraivtM6KXPsDK27SENwO+Etgq/\n3ooKvx4D9LkHQtsAvKb3Z2V5f1ZWhfdnNfdlOeG+GjhJUjOwHWgBWov6LAM+BXxP0jRgZ0R0Sfpd\nGdsCEBF18jfIzGzwKxnuEbFf0jzgQfLTOIsjYoOkufnVcVtELJd0iaSngN3AnP62HbBPY2ZmACgi\nal2DmZlVmM9QNTNLkMPdzCxBDnerKklfkXR6reuod5I+1kf7EZLuqnY9qZE0UnVzmFDvHO4lSBot\n6R8lLZf0s+5HreuqYxuA2yStlPRJSSNqXVCdWiDpE4UNkl4H/CvwUm1Kqk+SPtd9WRRJR0p6CPgN\n0CXpHbWt7tA53Eu7k3wgnQAsJH9S8upaFlTPIuLrEXEBMBuYBPxK0nclVfjCDsl7B/DXkuZDfhAC\ntAOPRcTltSysDl0GPJE97/4f0WjgQuCGmlRUAQ730kZFxGJgb0SsiIi/At5e66LqmaQhwKnZ43fA\n48CV2bWHrAwRsYN8wF8m6YvAvwPfiYira1tZXfpTvHLY4MXA0ojYnx22Xc65QINS3RZeRXuzn9sl\nvRvYBhxXw3rqmqQbgfcCPwVuiIhV2aovSXqi7y2tkKS/zJ7eBvwT+f25pbs9Iu6rVW11aI+kvwC6\nyF8a8NMF64bXpqTD53Av7fPZvPDfATcDxwB/W9uS6tqvgP8VEbt7WTe12sXUsfcC3aPNZdnP95C/\nrlMADvfyLQDuIT8V808R8QyApEuANbUs7HD4JCarOknjgWYKBhcR8e+1q6j+SPq7gsXuf8TPAT/v\nDicrj6QreeVih5E9fked70uP3EvIvqi6gvyXf4Vh9Fe1qqmeZfPDLcB6YH/WHOTnjK18r++lrRm4\nVlJbRPj7i/Id3UvbJOp8X3rkXoKkh4H/AB7llTAiIu6tWVF1LJtXPzMi9tS6lhRJOg74SUS8qda1\n1Lt635ceuZc2PCJ879fKeRo4AnC4D4CI2FHvJ98MFvW+Lx3upf1Q0iURsbzWhSTiJWCtpJ9SEPAR\nMb92JaUjO1/g+VrXkYJ635eelilB0ovA68gH0V6yoxEi4piaFlan+jptPiK+Ve1a6pmkdbzyRWq3\n48gfqjs7Iqpyn+IUpLovHe5mdSi7AU6hAP67j0NMrR+p7kuHex8knRoRGyX1+mVKRDxW7ZpSIOlk\n4AvAacCfdbdHxBtqVpRZgjzn3rcrgU8AX+llXeBLEByqO4DrgBvJnw04B18Gw6ziPHK3qpL0aESc\nLWldRJxR2Fbr2sxS4pF7GSSdz6tPYlpSs4Lq2x5JDcCm7P66nfR+Qo6ZHQaP3EuQ9G3gRGAtBWdU\n+tC9QyPpXPKXUD4W+N/ACODLEfFITQszS4zDvQRJG4DTwjvKzOqIp2VK+y+gEdhe60JSIOkc4Fpe\nfeGwM2tWlFmCPHLvg6R/IX9UzNHAFGAVB55R+b4alVbXsmvL/D2wDni5uz0iOmpWlFmCPHLv2zJg\nLPmLhhV6Kx7FH47nImJZ6W5mdjg8cu+DpB8Cn4mIdUXtZ5C/g9B7a1NZfZN0EdBK/s5Bhf8T8s0l\nzCrII/e+jS0OdoCIWCdpUvXLScYc8vdOPYJXpmV85yCzCnO49+3YftYdVbUq0nNuRJxS6yLMUufT\nvvv2S0lXFDdK+mvyN+6wQ/OwpNNqXYRZ6jzn3gdJY4HvA3/ilTA/BxgGfCAiflur2upZdt7AicAz\n5Ofcuy+h7EMhzSrI4V5CdsH+v8gWfx0RP6tlPfWul8urAj4U0qzSHO5WNZKGkP8FeWqtazFLnefc\nrWoiYj/whKSJta7FLHU+WsaqbSTwa0mrgJ473fiMX7PKcrhbtX221gWYvRZ4zt2qLvtS9eSI+Imk\n4cCQiHix1nWZpcRz7lZV2bkD9wCLsqbxwA9qV5FZmhzuVm2fAi4AXgCIiE3AmJpWZJYgh7tV256I\n+FP3gqSh5K8tY2YV5HC3alsh6RrgKEnvBO4G/qXGNZklx1+oWlVlN8e+HHhX1vSjiPh6DUsyS5LD\n3apC0kygKSL+X7a8ChhNfkrmHyLinlrWZ5YaT8tYtfwD+btbdRsGnA3kgP9Ri4LMUuaTmKxahkXE\nloLln0fEDmCHpNfVqiizVHnkbtUysnAhIuYVLI6uci1myXO4W7Ws7OPmJ3OBVTWoxyxp/kLVqkLS\nGPJnou4BHsuazwaOBN4fEV21qs0sRQ53qypJbwdOzxZ98xOzAeJwNzNLkOfczcwS5HA3M0uQw93M\nLEEOd7NDIGmBpD+rdR1mffEXqmaHQNIzwNnZWbbF6xoi4uUalGXWwyN3S5ak2ZIel7RG0rckNUv6\nqaS1kn4sqSnrd4ekvyzY7sXs54WSHpJ0t6QNkr6dtf8NcDzwkKSfdm8j6R8lrQGukfT9gtd7h6T7\nqvjRzXxtGUuTpNOAa4DzIuJ5SSOBbwF3RMR3JM0BbgY+0Mvmhf+dnQKcBvwW+IWk8yPiZkl/C+Qi\n4vms3+uA/4yIT2fvv17SqIj4b2AOsHggPqdZXzxyt1S9Hbi7O3yzn+cBd2Xrv03+dn+lrIqI7ZGf\nv1wLTMralT267QMKR+ffBj4iaQQwDfi3Q/wcZofEI3d7LenrC6Z9ZAMdSSJ/OeJuewqe76fvfzN/\njAO/wPom+TtM7SH/S8Zz8FZVHrlbqn4GzJJ0HED282GgNVv/EeA/suebgXOy5zOBI8p4/ReAYwqW\nC0fxRMR2YBtwLXDHwZdvdng8crckRcR6Sf+H/D1b9wFrgL8Bvinp08Bz5OfCAW4H7s++DP0RsLuv\nly14fjvwgKTOiLiI3v9XcCfw5xHxxOF/IrOD40MhzQaIpJuBxyLCI3erOoe72QCQ9EtgF/DOiNhb\n63rstcfhbmaWIH+hamaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmC/j/oo3CCIY3OOQAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x971cf28>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data_country.plot(kind = 'bar', color = 'g')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Some quick takeaways\n",
"\n",
"1. Although Germany seems to have the lowest traffic, it still seems to maintain the highest conversion rate.\n",
"2. This is true of UK as well.\n",
"3. However, it is interesting to note that, China has a very low conversion rate. Much lesser than the other three countries\n",
"\n",
"Let's look into this further"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting total pages visited. This plot is as expected. As the number of pages visited increases, the conversion rate increases as well."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x971c748>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXEAAAEQCAYAAABGL0RbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl0VfW5//H3E8ABlVFmY3AAHAqiKILSGhERtPcHV64I\nWBVrLddWpbXLn9yfS6XUoXpvpQ4VtUCVWwUEnBcitDVSUJAqAlUZBJIwiVVAmYfk+f2xd0ISMpwk\nJ9ln+LzW2ouz9/5mn2fnhCffPPu7v9vcHRERSU4ZUQcgIiI1pyQuIpLElMRFRJKYkriISBJTEhcR\nSWJK4iIiSazKJG5mk8xsq5ktr6TNE2a2xsw+MbPu8Q1RREQqEktP/E/AFRXtNLOBwGnu3gkYBTwT\np9hERKQKVSZxd18AbK+kySBgSth2MdDUzNrEJzwREalMPGriHYANJdY3hdtERKSO6cKmiEgSaxiH\nY2wCMkusnxRuO4KZaaIWEZEacHcrb3usPXELl/K8AdwAYGa9gB3uvrWSQJJ2uf/++yOPQeer8y27\nfP2189hjzs03O336OK1aOccf7/To4YwY4fz61860ac7Spc6uXcl9run22RYtlamyJ25mLwHZQEsz\nywfuB44K8rE/5+6zzexKM/sC2A3cVNUxRaT2du6E8ePhiSfghz+EXr3guuugSxdo1w6som6XpJQq\nk7i7j4ihzW3xCUdEqrJvH0yYAL/9LVx+OSxaBKefHnVUEpV41MTTRnZ2dtQh1Cudb2I5dAiefx7G\njYNzz4V586Bbt5odK9HPNd5S+XytqnpLXN/MzOvz/URSQWEhzJwJ994L7dvDQw9B795RRyX1yczw\nCi5sqicukqDcYc4cuOceaNAAnnoK+vWrXa27Y8eO5OXlxS9IiausrCxyc3Or9TXqiYskoAUL4L/+\nC775Bh54AP793+NzoTLs0dX+QFInKvp81BMXSRJ798Jdd8Hrr8NvfgPXXx/0wkUqoiQukiCWLYMR\nI6BrV1ixApo1izoiSQa67V4kYoWFwXjvfv1gzBiYOlUJXGKnnrhIhLZsgZEj4bvvYPFiOPXUqCOS\nunTTTTeRmZnJuHHj4nZM9cRFIvL668F479694e9/VwJPBhkZGaxbty7qMEpRT1yknu3ZA3feCXPn\nwqxZcPHFUUckVSkoKKBBgwZYAs5loJ64SD36+GM47zzYvRuWLlUCL2vjxo0MGTKE1q1b06pVK+64\n4w7cnQceeICOHTvStm1bRo4cyXfffQdAXl4eGRkZTJkyhaysLFq3bs1DDz0EwJYtW2jcuDE7duwo\nPv7SpUtp1aoVBQUFAEyePJmzzjqLli1bMnDgQPLz84vbZmRk8PTTT9O5c2c6d+7MJZdcgrvTrVs3\nmjRpwowZMwB46623OPfcc2nevDl9+vRhxYoVpd6vR48eNG3alGHDhrFv3774f9PqeSYuF0lHBQXu\njz7q3qqV+4svRhdHIv8fLCgo8HPOOcd/9atf+Z49e3z//v2+cOFCnzx5snfq1Mlzc3N99+7dfvXV\nV/v111/v7u65ubluZv7Tn/7U9+/f78uWLfOjjz7aV65c6e7ul112mU+cOLH4Pe666y6/9dZb3d39\ntdde806dOvmqVau8oKDAH3zwQb/ooouK25qZ9+/f37dv3+779u0r3rZu3briNh9//LG3bt3alyxZ\n4oWFhT5lyhTv2LGjHzhwwA8cOOBZWVn++OOP+6FDh3zmzJneqFEjv/feeyv8HlT0+YTby8+rFe2o\niyWRf4BE6sr27e79+rn36eO+fn20scTyfzC4V7R2S0188MEH3rp1ay8oKCi1/bLLLvMJEyYUr69a\ntcobNWrkBQUFnpub6xkZGb558+bi/T179vTp06e7u/vEiRO9b9++xfsyMzN9wYIF7u4+cOBAnzx5\ncvG+goICb9y4sefn57t7kLBzcnJKxWJmvnbt2uL1W2+91e+7775Sbbp06eLz58/3+fPne4cOHUrt\nu+iii+KexFVOEalDX38NffvCmWdCTg507Bh1RFWLRxqviQ0bNpCVlUVGRum0tHnzZrKysorXs7Ky\nOHToEFu3Hn5sQZs2hx/r27hxY3bt2gXAkCFDWLRoEVu3buW9996jQYMGXBzWsPLy8hg9ejQtWrSg\nRYsWtGzZEjNj06bDz7Q56aSTKo05Ly+P3/3ud8XHaN68ORs3bmTz5s1s3ryZDh1KP6my5HnEi5K4\nSB3ZsgUuuQQGDIDHH9edl1XJzMwkPz+fwsLCUtvbt29far6XvLw8GjVqVCpxV6RZs2b079+fadOm\nMXXqVIYNG1a87+STT+bZZ59l27ZtbNu2je3bt7Nr1y569epV3KaqC5mZmZncc889Rxzj2muvpV27\ndqV+IQClau7xoiQuUgfy8+EHPwjuwHzoIT2gIRY9e/akXbt2jBkzhj179rB//37ef/99hg8fzvjx\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x97e9b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data.groupby('total_pages_visited')[['converted']].mean().plot(kind = 'line', color = 'b')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>age</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">China</th>\n",
" <th>count</th>\n",
" <td>76602.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>30.672972</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8.283862</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>30.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>36.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>69.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">Germany</th>\n",
" <th>count</th>\n",
" <td>13056.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>30.449985</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8.289022</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>30.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>36.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>123.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">UK</th>\n",
" <th>count</th>\n",
" <td>48450.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>30.451538</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8.244991</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>30.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>36.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>111.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">US</th>\n",
" <th>count</th>\n",
" <td>178092.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>30.566482</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8.272128</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>24.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>30.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>36.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>79.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age\n",
"country \n",
"China count 76602.000000\n",
" mean 30.672972\n",
" std 8.283862\n",
" min 17.000000\n",
" 25% 24.000000\n",
" 50% 30.000000\n",
" 75% 36.000000\n",
" max 69.000000\n",
"Germany count 13056.000000\n",
" mean 30.449985\n",
" std 8.289022\n",
" min 17.000000\n",
" 25% 24.000000\n",
" 50% 30.000000\n",
" 75% 36.000000\n",
" max 123.000000\n",
"UK count 48450.000000\n",
" mean 30.451538\n",
" std 8.244991\n",
" min 17.000000\n",
" 25% 24.000000\n",
" 50% 30.000000\n",
" 75% 36.000000\n",
" max 111.000000\n",
"US count 178092.000000\n",
" mean 30.566482\n",
" std 8.272128\n",
" min 17.000000\n",
" 25% 24.000000\n",
" 50% 30.000000\n",
" 75% 36.000000\n",
" max 79.000000"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Looking into China\n",
"#Mean age of chinese users\n",
"data.groupby('country')[['age']].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Roughly the mean age of chinese users is on par with the mean age of users in other countries.\n",
"Hence, this is probably not the cause for their low conversion."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>China</th>\n",
" <td>30.672972</td>\n",
" <td>0.698520</td>\n",
" <td>4.553523</td>\n",
" <td>0.001332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Germany</th>\n",
" <td>30.449985</td>\n",
" <td>0.677237</td>\n",
" <td>5.190717</td>\n",
" <td>0.062500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>UK</th>\n",
" <td>30.451538</td>\n",
" <td>0.679835</td>\n",
" <td>5.082167</td>\n",
" <td>0.052632</td>\n",
" </tr>\n",
" <tr>\n",
" <th>US</th>\n",
" <td>30.566482</td>\n",
" <td>0.681985</td>\n",
" <td>4.930160</td>\n",
" <td>0.037801</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age new_user total_pages_visited converted\n",
"country \n",
"China 30.672972 0.698520 4.553523 0.001332\n",
"Germany 30.449985 0.677237 5.190717 0.062500\n",
"UK 30.451538 0.679835 5.082167 0.052632\n",
"US 30.566482 0.681985 4.930160 0.037801"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Number of pages visited by an average Chinese user\n",
"data.groupby('country').mean()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x97e9cc0>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x9c96da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Users' from ads\n",
"df_analysis = data.groupby(['source','country'])[['converted']].count()\n",
"df_analysis.plot(kind = 'bar')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x105829b0>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEjCAYAAADUjb3BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8VWW2//HPClUQAqEk0lHAC4olKBbgZwAFdCw4XBBF\npdkAUXT0CoyOoHdsI46MjjqOCAELWMY2FymWOOqggqiIIMRClwiGqkML6/fH2TmehJSTkHASzvf9\nep0Xe6/zPHs/OwlnnV2XuTsiIhKfEmI9ABERiR0lARGROKYkICISx5QERETimJKAiEgcUxIQEYlj\nUSUBM7vRzL4MXjcEsfpmNs/MVpjZXDNLjGg/zswyzWy5mfWKiKea2RIzW2lmD0fEq5vZzKDPAjNr\nUZYbKSIiBSs2CZjZccBw4BTgJOB8MzsGGAu85e7HAu8A44L2HYABQHvgXOAxM7NgcY8Dw929HdDO\nzHoH8eFAtru3BR4GHiij7RMRkSJEsyfQHvjY3Xe7ew7wL+C3wIVAetAmHegbTF8IzHT3fe6+CsgE\nOptZClDH3RcG7aZH9LkoYlkvAT1Lv0kiIhKtaJLAUqBbcPinFnAe0BxIdvcsAHffCDQO2jcF1kb0\nXx/EmgLrIuLrgliePkGi2WpmSaXaIhERiVrV4hq4+9dmdj8wH9gJfAbkFNS0DMdlBQbN9IwLEZFS\ncPcCP1ejOjHs7lPd/RR3TwO2AiuALDNLBggO9fwYNF9PaE8hV7MgVlg8Tx8zqwLUdffsQsZy2L7u\nvPPOmI9BL/3u4vF1uP/+ihLt1UGNgn9bABcDzwGvA0OCJoOB14Lp14GBwRU/rYE2wCceOmS0zcw6\nByeKr8zXZ3Aw3Z/QiWYRESlnxR4OCrwcHKPfC4x09+3BIaIXzGwYsJrQFUG4+zIzewFYFtE+NxWN\nAqYBNYHZ7j4niE8BZphZJvATMPDgN01ERIpjxe0qVCRm5pVpvCWVkZFBWlparIchpaDfXeV2uP/+\nzAwv5JyAkoCIyGGuqCQQ7eEgkbjQqlUrVq9eHethiJRKy5YtWbVqVYn6aE9AJELwjSnWwxAplcL+\nfovaE9AD5ERE4piSgIhIHFMSEBGJY0oCIiJxTElAJE4kJCRw6623hucnTZrEXXfdFcMRHbz09HQ2\nbtwY62FUakoCInGiRo0a/OMf/yA7u8DHclVK06ZNY/369QW+t3///kM8mspJSUAkTlStWpVrrrmG\nhx566ID3Vq9eTc+ePTnppJM455xzWLcu9NT3oUOHcuONN9KlSxfatGnDP/7xj3CfBx98kM6dO3PS\nSScxceLEAtc5Z84cOnXqxMknn8w555wDwJYtW7j44os58cQTOfPMM1m6dCkAEydOzDO2jh07smbN\nGlavXk2HDh245pprOP744+nTpw+7d+/m5ZdfZtGiRVx++eWkpqaya9cuWrduzdixYznllFO47777\n6NSpU3h533zzTZ55CVESEIkTZsaoUaN49tln2bFjR573Ro8ezdChQ/n888+57LLLGD16dPi9jRs3\n8uGHH/LGG29w2223ATB//nwyMzP55JNP+Oyzz1i0aBEffPBBnmVu3ryZa665hldeeYXPPvuMF198\nEYA777yT1NRUvvjiC/74xz9yxRVXFDreXN988w2jR49m6dKlJCYm8vLLL9OvXz9OOeUUnnvuORYv\nXkzNmjUBaNiwIYsWLWL8+PHUq1ePJUuWADB16lSGDRt2kD/Fw4+SgEgcOfLIIxk8eDCTJ0/OE1+w\nYAGXXnopAFdccQUffvhh+L2+fUMFANu3b8+PP4aeGD9v3jzmz59PamoqqamprFixgszMzDzL/Oij\njzjrrLNo0SJUMrxevXoAfPDBB+EP/u7du5Odnc3OnTsPGGvkTU+tW7emY8eOAHTq1CnPXbH5b466\n5JJLwtPDhw9n6tSp7N+/n1mzZnHZZZcV9yOKO3pshEicufHGG0lNTWXo0KHhWOS37vxq1KgRns79\nwHV3xo0bx9VXX13kugq7e7UgVatWzXMcf9euXQWOoUqVKnney6927drh6X79+jFx4kS6d+/OKaec\nQv369YscbzzSnoBInMj9QK5fvz4DBgxgypQp4ffOPPNMnn/+eQCeeeYZunXrVuQyevfuzdNPP83P\nP/8MwIYNG9i8eTMAZ599Nj/88AOnn34677//fvhZTFu2bAGgW7duPPPMM0Do6Z0NGzbkyCOPpFWr\nVixevBiAxYsX8/333x+w3vzq1KnD9u3bC93mGjVq0Lt3b0aMGJEn6cmvtCcgEiciv4H/7ne/469/\n/Ws49pe//IWhQ4fy4IMP0qhRI6ZOnXpAn8j5c845h6+//pozzjgDCH0YP/PMMzRo0IBvv/2WpKQk\natSowZNPPsnFF1+Mu9O4cWPmzp3LnXfeybBhwzjxxBOpXbs26enpQOhb+/Tp0+nYsSOnnXYaxx57\n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\nKaeckmfcue8Vp0GDBvzwww/Ftsu/7QVVNYum7YMPPsjTTz8dXueOHTvCNRVy5xMTE6MaeyzpnIBI\nJXHCCSewcuXK8Hzz5s359ttvD2jXpEkTsrOzwwVfIPQB3rRp0wPaFqR///5kZGSwfv16XnnllXAS\naN68OTVr1uSnn34iOzubLVu2sHXr1nANXyi8/kCuhg0bUqtWLb766iuys7PJzs5m69atbNu2DYCj\njjqKtWt/ferM6tWroz4n0LNnT9atWxc+v1Ge3n//ff70pz/x0ksvsWXLFrZs2ULdunXzJKzly5dz\n4oknlvtYDpaSgEglcd555+V5FEBu/dx3330Xd2fDhg2sWLGCZs2aceaZZzJu3Dh2797NkiVLmDJl\nSqEF3SHvFTgNGzbkrLPOYujQoRx99NHh4i4pKSn06tWLm266iR07duDufPfdd/zrX/8qdLnJycms\nW7eOvXv3AqGkcPXVVzNmzBg2bdoEwPr168MntAcMGMC0adNYvnw5v/zyC3fddVee5aWnp9O6desC\n19WmTRtGjhzJpZdeynvvvcfevXvZvXs3s2bN4oEHHijiJ1tyO3fupFq1ajRo0IA9e/Zw11135dlL\nA3jvvfc499xzy3S95UFJQKQIycktCd0fWT6v0PKjc+WVV/Lmm2+Gr6Q59dRTmTp1KmPGjCExMZG0\ntDTWrAmV4Xjuuef4/vvvadKkCf369ePuu++me/fuhS47/7ftyy67jLfffptBgwbliU+fPp09e/bQ\noUMHkpKS6N+/Pxs3bix0uT169OC4444jJSWFxo1Dz5i87777aNOmDaeffjr16tWjV69e4T2cPn36\nMGbMGHr06EG7du3o2TPvA4XXrl1L165dC13f5MmTuf766xk1ahT169enTZs2vPrqq1xwwQWF9inq\n51CY3r1707t3b9q1a0fr1q2pVatWnkNhu3btYvbs2QwePLiIpVQMqiwmEqGi1xO4/fbbady4MTfc\ncEOshxITffr0YfLkyXlKT1ZEjz76KOvWreO+++47pOstt8piFYWSgJS3ip4ERIpSnkVlRETkMKQk\nICISx5QERETimJKAiEgcUxIQEYljSgIiInGs2CRgZu3M7DMzWxz8u83MbjCz+mY2z8xWmNlcM0uM\n6DPOzDLNbLmZ9YqIp5rZEjNbaWYPR8Srm9nMoM8CM2uRfxwiIlL2oikvudLdT3b3VKAT8DPwCqES\n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\nAosmCVQldCz/r+6eCvxM6FBQ/n20snz+bqGpf8KECeFX5H8IkfLQMjkZg3J7tUxOjnosV155JW++\n+Wb4SppTTz2VqVOnMmbMGBITE0lLS2PNmjUAPPfcc3z//fc0adKEfv36cffdd9O9e/dCl53/2/Zl\nl13G22+/HT4hnGv69Ons2bOHDh06kJSURP/+/dm4cWOhy+3RowfHHXccKSkpNG4c+p5433330aZN\nG04//XTq1atHr169wh/Cffr0YcyYMfTo0YN27drRs2fegwJr166la9euha7vscceIykpiRNOOIHk\n5GQee+wxZs+eTaNGjQpsf/vtt3PVVVdx9tln8/333/PDDz+wfPly+vbtW2D7yiIjIyPPZ2VRiq0n\nYGbJwAJ3PzqY70ooCRwDpLl7VnCo5113b29mYwmdhLg/aD8HuBNYndsmiA8EznL3Eblt3P1jM6sC\n/ODujQsYi0d7fFCkNCp6PQGVlyzf8pK33HILbdq04brrriuX5Ze3cisvaWbvAVe7+0ozuxPIPeOU\n7e73m9ltQH13HxucGH6W0BVETYH5QFt3dzP7CLgBWAj8H/AXd59jZiOB4919ZJAc+rr7wALGoSQg\n5aqiJwGRopRnEjgReAqoBnwHDAWqAC8AzQl9yx/g7luD9uMIXfGzF7jR3ecF8U7ANKAmoauNbgzi\nNYAZwMnAT8DA4KRy/nEoCUi5UhKQykyF5kUOkpKAVGYqLykiIiWiJCAiEseUBERE4piSgIhIHFMS\nEBGJY0oCIpWIykuWr9NOO43ly5cfknVVFEoCIkVIadGiXMtLprRoEfVYVF6yaNGUl9y7dy+/+93v\naN68OXXr1uXoo4/m5ptvDre99dZbueOOOw5qvJVN1VgPQKQiy1q7Ft59t/yWX8TzfPJTecniFbeu\ne+65h8WLF7No0SKSk5NZs2ZNngfgXXDBBVx77bX8+OOP4WcdHe60JyBSSai85MFbtGgRF198McnB\ng/tatGjB5ZdfHn6/Ro0adOrUiblz55bZOis6JQGRSkLlJQ/e6aefzqRJk3j88cdZunRpgW3irbyk\nkoBIJbF161bq1KkTnn/66acZPnw4PXr0AEJFVdq1a8e6detYsGAB999/P9WqVePEE0/kqquuYvr0\n6eG+Xbt2pXfv3pgZV1xxRbgwTIsWLUhNTeWVV14B4O2336Z27dqceuqpZGVl8eabb/LnP/+ZmjVr\n0rBhQ8aMGROuQgbQtGlTRo4cSUJCQqGHrf7+97/z5z//mcTERGrXrs3YsWPDy3jxxRcZOnQo7du3\n54gjjii8UVmRAAAVeUlEQVT2McglNW7cOMaOHctzzz3HqaeeSrNmzfL8XADq1KnD1q1by3S9FZmS\ngEglofKSRYumvGRCQgIjRozg/fffZ+vWrYwfP55hw4axYsWKcHuVlxSRCknlJYtWkvKSEDr+P3Lk\nSOrXr8+yZcvCcZWXFJEKSeUlD7685OTJk3nvvffYtWsXOTk5pKens3PnTk4++WQAdu/ezaeffso5\n55xT6DYddty90rxCwxUpP/n/xpKbN3dCpVPL5ZXcvHnUY9u8ebM3b97cd+3aFY69+uqrfsIJJ3id\nOnW8bdu2Pm/ePHd3X7dunZ9//vmelJTkbdq08SeffDLcZ8KECX7FFVeE51etWuUJCQmek5MTjs2Y\nMcMTEhJ80qRJecawfft2HzFihDdr1szr1avnqampPmvWLHd3nzZtmnfr1i1P+z179oTH0ahRI3d3\n37Vrl48fP96PPvpoT0xM9A4dOvgjjzwS7nP//fd7SkqKN23a1KdOneoJCQn+7bffurv73Xff7Zdf\nfnmhP6OtW7f61Vdf7U2bNvWkpCTv2rWrL1iwIPz+k08+6Z06dfJ69ep5/fr1/bTTTvPZs2eH33/h\nhRe8X79+hS6/oivsMzKIF/i5Gm1RmVXANmA/sNfdO5tZfWAW0BJYRaiozLag/ThgGLCPvEVlUslb\nVGZMEK8OTAc6AZuBS9x9TQHj8GjGK1JaFb2egMpLlm95yTPOOIMpU6bQoUOHcll+eSvPymLfAZ3c\nfUtE7H7gJ3d/oJDykqcCzYC3+LW85MfA9e6+0MxmA5Pdfa6ZjQA6eqi85CXAxa7ykhIDFT0JiBSl\nPIvKWAFtLwLSg+l0oG8wfSEw0933eahEZCbQOShGX8fdFwbtpkf0iVzWS0DPKMclIiIHIdok4MB8\nM1toZlcFsWR3zwJw941A7j3WTYG1EX3XB7GmwLqI+LoglqePu+cAW80sqYTbIiIiJRTts4O6uPsP\nZtYImGdmKwglhkhluQ9ddveJi4hIoaJKAu7+Q/DvJjN7FegMZJlZsrtnBYd6fgyarwci7xhpFsQK\ni0f22WBmVYC67p5d0Fgi7yBMS0sjLS0tmk04rKW0aBF60FkJJTdvzsY1B5x/F5FKLiMjI8/lxEUp\n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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10643860>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Absolute numbers\n",
"df_analysis.unstack('country').plot(kind = 'bar')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"4\" halign=\"left\">converted</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th>China</th>\n",
" <th>Germany</th>\n",
" <th>UK</th>\n",
" <th>US</th>\n",
" </tr>\n",
" <tr>\n",
" <th>source</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Ads</th>\n",
" <td>21561</td>\n",
" <td>3760</td>\n",
" <td>13518</td>\n",
" <td>49901</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Direct</th>\n",
" <td>17463</td>\n",
" <td>2864</td>\n",
" <td>11131</td>\n",
" <td>40962</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Seo</th>\n",
" <td>37578</td>\n",
" <td>6432</td>\n",
" <td>23801</td>\n",
" <td>87229</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" converted \n",
"country China Germany UK US\n",
"source \n",
"Ads 21561 3760 13518 49901\n",
"Direct 17463 2864 11131 40962\n",
"Seo 37578 6432 23801 87229"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#percentages\n",
"df_analysis.unstack('country')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"4\" halign=\"left\">converted</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th>China</th>\n",
" <th>Germany</th>\n",
" <th>UK</th>\n",
" <th>US</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>27</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>22</td>\n",
" <td>21</td>\n",
" <td>22</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>48</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" converted \n",
"country China Germany UK US\n",
"0 28 28 27 28\n",
"1 22 21 22 23\n",
"2 49 49 49 48"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x):\n",
" y = Series([0,0,0])\n",
" for i in np.arange(3):\n",
" y[i] = 100 * x[i]/sum(x)\n",
" return y\n",
"\n",
"df_analysis.unstack('country').apply(f, axis = 0)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x108a7518>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAD8CAYAAAC8TPVwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4jXf+//HnJ5Yo0kioRJBgTPxQW6ii5iu2MJ32wrjs\nSxqtokVVGXQjpnWZttpLq2o6tQSNqq66KC2irdGq0qrWqCWN2KIktumI7fP7I8lpTmQ5OUnELa/H\ndZ3LOfe5l/c5kde58zn3fb+NtRYREXEGn9IuQEREPKfQFhFxEIW2iIiDKLRFRBxEoS0i4iAKbRER\nBynvyUzGmF+A08AV4KK1tq0xJgBYCYQBvwD9rbWnS6hOERHB8z3tK0CktbaVtbZt5rSpwGfW2kbA\nBmBaSRQoIiK/8zS0TS7z9gLiMu/HAb2LqygREcmdp6FtgU+NMd8YY+7LnBZkrU0BsNYeA2qWRIEi\nIvI7j8a0gTustUeNMbcA64wxe8gI8uxyPR/eGKPz5EVEvGCtNTmnebSnba09mvnvr8B7QFsgxRgT\nBGCMCQaO57P8DXubPn16qdegm352ZfF2o//88lJgaBtjKhtjqmberwJEAT8Aq4F7MmeLBt4vOP5F\nRKQoPBkeCQLezRzmKA+8bq1dZ4zZBrxpjBkBJAH9S7BOERHBg9C21iYCLXOZngp0K4minCQyMrK0\nSxAv6WfnbGX152fyGzsplg0YY0t6GyJS+oKD65GSklTo5Xwq+nDlwpVCL1fZx4ffrhR+ubCgIH45\ndqzQy11rxhhsLl9EKrSvY/Xq1SMpqfC/BCLXC1/fMNLTfylgLgMzvFj5jDwOWSt4a/l+0Xe9yCu0\nPT3kT0pBUlKSI/5zieTFmKsyR4pIF4wSEXEQhbaIlC0VKmCMKfQtODS0tCsHNDwiImXNxYuwcWOh\nF0vp3LkEiik87WmLiDiIQltKjY+PD5MnT3Y9njNnDjNnzizFioouLi6OYw44nEycS6EtpcbX15d3\n3nmH1NTU0i6l2CxZsoTDhw/n+twVL44pFslJoS2lpnz58tx///08//zzVz2XlJRE165dadmyJd27\nd+fQoUMAxMTE8NBDD3HHHXfQsGFD3nnnHdcyzz33HG3btqVly5bExsbmus1PPvmE1q1b06pVK7p3\n7w5AWloaffr0oUWLFnTo0IFdu3YBEBsb61Zbs2bNOHjwIElJSTRp0oT777+fW2+9lZ49e5Kens7b\nb7/Ntm3bGDp0KBEREZw/f5769eszdepU2rRpw+zZs2ndurVrffv27XN7LOIJhbaUGmMMDz74IK+/\n/jpnz551e27cuHHExMTw3XffMXjwYMaNG+d67tixY2zevJkPPviAKVOmAPDpp5+yd+9etm7dyo4d\nO9i2bRtffvml2zpPnDjB/fffz7vvvsuOHTtYtWoVANOnTyciIoLvv/+ep59+mmHDhuVZb5Z9+/Yx\nbtw4du3ahb+/P2+//TZ9+/alTZs2xMfHs337dipVqgRAjRo12LZtG48++ijVqlVj586dACxevJgR\nI0YU8V2UskahLaWqatWqREdHM3fuXLfpW7ZsYdCgQQAMGzaMzZs3u57r3TujSVLjxo05fjzjisDr\n1q3j008/JSIigoiICPbs2cPevXvd1vnVV1/RqVMnQjMP3apWrRoAX375pSuoO3fuTGpqKufOnbuq\n1uwnOtWvX59mzZoB0Lp1a3755Zdc5wMYMGCA6/69997L4sWLuXLlCitXrmTw4MEFvUUibnTIn5S6\nhx56iIiICGJiYlzT8juTztfX13U/KyCttUybNo2RI0fmu63czjDNa1vly5d3G4c+f/58rjWUK1fO\n7bmcqlSp4rrft29fYmNj6dy5M23atCEgICDfekVy0p62lJqsAA0ICKB///4sXLjQ9VyHDh1YsWIF\nAMuXL+dPf/pTvuvo0aMHixYt4r///S8AR44c4cSJEwB069aNo0eP0q5dO7744gvX9VzS0tIA+NOf\n/sTy5csBSEhIoEaNGlStWpV69eqxfft2ALZv305iYuJV283Jz8+PM2fO5PmafX196dGjB2PGjHH7\nkBLxlPa0pdRk38N95JFHePnll13TXnzxRWJiYnjuuee45ZZbWLx48VXLZH/cvXt3/vOf/9C+fXsg\nIzyXL19O9erV2b9/P4GBgfj6+vLqq6/Sp08frLXUrFmTtWvXMn36dEaMGEGLFi2oUqUKcXEZ/ar7\n9u3L0qVLadasGbfffjuNGjXKtfbs7rnnHkaPHk3lypX597//net8Q4YM4b333iMqKsrbt07KMF3l\n7zqWeZWv0i7D0X788UcWL17Mc889V9qluMyZM4czZ87keYTLjSTjQ6ug/8PX/ip/3pwRSefO1/T3\nUVf5kzKpadOm11Vg//Wvf+XAgQNs2LChtEsRh1Joi1xD2Y8rF/GGvogUEXEQhbaIiIMotEVEHESh\nLSLiIAptEREHUWhLkTz66KO8+OKLpV3GNeXj48OBAweKZV0xMTE8+eSTeT7v5+fndl0Tb82bN4+p\nU6cWeT1S+hTaDhMcXM+r/nYe98ELrudxLSdOnGDZsmWMGjWq5F5wMYuLi8vzlHhPFbbD+Isvvkiz\nZs2oWrUqoaGhDBgwgB9//NGjZc+ePUu9evW8qNLdyJEjef31112n9otzKbQdJiUliYzzwErmlrF+\nzyxZsoQ777zT7eJJ17PLly9jrS106OZUmLPixo8fz0svvcS8efNIS0vj559/pnfv3nz00UdFqqGw\nfH19ufPOO1m6dOk13a4UP4W2eG3NmjV06tTJbdr7779Pq1at8Pf3549//CPr1q0D4OjRo/Tq1Yvq\n1asTHh7Oa6+95lomNjaWAQMGEB0dzc0330yzZs1cF2p65pln6Nevn9s2HnroISZMmADAmTNnuO++\n+wgJCaFu3bo88cQTrlCNi4ujY8eOTJw4kRo1ajBw4EDGjBnDli1b8PPzIzAwEIALFy4wadIkwsLC\nqFWrFg888ADp6emu7T377LOEhIRQp04dFi9e7HHo79u3j/nz5/PGG2/QqVMnKlSoQKVKlRg0aBB/\n+9vfXPOlpqZy1113cfPNN9O+fXu3C1NlH4qJiYlh7Nixec47YcIEQkND8ff357bbbrvqeuKdOnW6\n5h8WUvwU2uK1H374we0iSlu3biU6Opo5c+Zw+vRpPv/8c9ef9gMGDCA0NJRjx46xatUqHn30URIS\nElzLfvDBBwwePJjTp09z99138+CDDwIwcOBA1qxZ47p635UrV1i1ahVDhgwBIDo6mooVK3LgwAF2\n7NjBp59+6vaB8PXXX9OwYUOOHz/O8uXLWbBgAe3bt+fs2bOuNmdTpkxh37597Ny5k3379nH48GFX\nr8pPPvmE559/nvXr17N3714+++wzj9+f9evXU7du3QK706xcuZLY2FhOnTrFH/7wBx577DHXczk/\nIPKbt23btuzcuZO0tDQGDx5Mv379uHDhguv5xo0b8/3333tcv1yfFNritVOnTuHn5+d6vGjRIu69\n9166dOkCQK1atQgPD+fQoUNs2bKFf/zjH1SoUIEWLVpw3333uf2p3rFjR3r06IExhmHDhrm6u4SG\nhhIREcG7774LZARhlSpVuO2220hJSWHNmjW88MILVKpUiRo1ajBhwgTXJV0BateuzQMPPICPj0+e\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1066d160>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_analysis.unstack('country').apply(f, axis = 0).plot(kind = 'bar')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"From the above table, it is evident that the conversion from seo is maximum for all countries.\n",
"Also, the distribution of ads, seo and direct is comparable for all countries.\n",
"\n",
"We have eliminated all the obvious reasons why China might be converting poorly. \n",
"From this analysis it can be said that, data from Chinese users is very similar to the ones from other users.\n",
"\n",
"We need to look into it even further. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Delving into Machine Learning"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" <th>converted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>UK</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>Ads</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>US</td>\n",
" <td>23</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>US</td>\n",
" <td>28</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>China</td>\n",
" <td>39</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>US</td>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited converted\n",
"0 UK 25 1 Ads 1 0\n",
"1 US 23 1 Seo 5 0\n",
"2 US 28 1 Seo 4 0\n",
"3 China 39 1 Seo 5 0\n",
"4 US 30 1 Seo 6 0"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['country', 'age', 'new_user', 'source', 'total_pages_visited',\n",
" 'converted'], dtype=object)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns.values"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 0\n",
"2 0\n",
"3 0\n",
"4 0\n",
"Name: converted, dtype: int64"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#The response variable\n",
"y = data['converted']\n",
"y.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>UK</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>Ads</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>US</td>\n",
" <td>23</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>US</td>\n",
" <td>28</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>China</td>\n",
" <td>39</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>US</td>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>Seo</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited\n",
"0 UK 25 1 Ads 1\n",
"1 US 23 1 Seo 5\n",
"2 US 28 1 Seo 4\n",
"3 China 39 1 Seo 5\n",
"4 US 30 1 Seo 6"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#The features\n",
"X = data[data.columns.values[:-1]]\n",
"X.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Deepak\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" app.launch_new_instance()\n",
"C:\\Users\\Deepak\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:4: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country</th>\n",
" <th>age</th>\n",
" <th>new_user</th>\n",
" <th>source</th>\n",
" <th>total_pages_visited</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2</td>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>23</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>28</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>39</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3</td>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country age new_user source total_pages_visited\n",
"0 2 25 1 0 1\n",
"1 3 23 1 2 5\n",
"2 3 28 1 2 4\n",
"3 0 39 1 2 5\n",
"4 3 30 1 2 6"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#creating labels for country and source in the features data\n",
"lb = LabelEncoder()\n",
"X['country'] = lb.fit_transform(X['country'])\n",
"X['source'] = lb.fit_transform(X['source'])\n",
"X.head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating training and testing samples"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating an instance of the estimator"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"pipeline = Pipeline(steps = [('clf', DecisionTreeClassifier(criterion = 'entropy'))])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Defining the hyperparameters for the grid search"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"parameters = [{\n",
" 'clf__max_depth': (150, 155, 160),\n",
" 'clf__min_samples_split': (1,2,3),\n",
" 'clf__min_samples_leaf': (1,2,3)\n",
" }]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Employing gridsearchcv"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"grid_search = GridSearchCV(pipeline, parameters, n_jobs= -1, error_score= 0)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"GridSearchCV(cv=None, error_score=0,\n",
" estimator=Pipeline(steps=[('clf', DecisionTreeClassifier(class_weight=None, criterion='entropy', max_depth=None,\n",
" max_features=None, max_leaf_nodes=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best'))]),\n",
" fit_params={}, iid=True, n_jobs=-1,\n",
" param_grid=[{'clf__max_depth': (150, 155, 160), 'clf__min_samples_leaf': (1, 2, 3), 'clf__min_samples_split': (1, 2, 3)}],\n",
" pre_dispatch='2*n_jobs', refit=True, scoring=None, verbose=0)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid_search.fit(X_train, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Best parameters are as follows"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{'clf': DecisionTreeClassifier(class_weight=None, criterion='entropy', max_depth=155,\n",
" max_features=None, max_leaf_nodes=None, min_samples_leaf=3,\n",
" min_samples_split=3, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best'),\n",
" 'clf__class_weight': None,\n",
" 'clf__criterion': 'entropy',\n",
" 'clf__max_depth': 155,\n",
" 'clf__max_features': None,\n",
" 'clf__max_leaf_nodes': None,\n",
" 'clf__min_samples_leaf': 3,\n",
" 'clf__min_samples_split': 3,\n",
" 'clf__min_weight_fraction_leaf': 0.0,\n",
" 'clf__presort': False,\n",
" 'clf__random_state': None,\n",
" 'clf__splitter': 'best',\n",
" 'steps': [('clf',\n",
" DecisionTreeClassifier(class_weight=None, criterion='entropy', max_depth=155,\n",
" max_features=None, max_leaf_nodes=None, min_samples_leaf=3,\n",
" min_samples_split=3, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best'))]}"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_parameters = grid_search.best_estimator_.get_params()\n",
"best_parameters"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{'clf__max_depth': 155,\n",
" 'clf__min_samples_leaf': 3,\n",
" 'clf__min_samples_split': 3}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid_search.best_params_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Predicting conversion rate"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 0.99 1.00 0.99 76448\n",
" 1 0.83 0.66 0.74 2602\n",
"\n",
"avg / total 0.98 0.98 0.98 79050\n",
"\n"
]
}
],
"source": [
"preds = grid_search.predict(X_test)\n",
"print classification_report(y_test, preds)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Note\n",
"\n",
"Recall = sensitivity = TP/(TP + FN)\n",
"\n",
"Precision = TP/(TP + FP)\n",
"\n",
"Specificity = TN/(TN + FP) \n",
"\n",
"1. From the above results we can conclude, recall = 0.66 and precision = 0.82\n",
"2. This implies of all people who converted, we weren't able to identify 34% of them\n",
"3. Similarly of all the people we identified would convert only 82% of them actually converted\n",
"\n",
"We need to improve sensitivity further"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Using Ensemble Methods"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"pipeline = Pipeline(steps = [('clf', RandomForestClassifier(criterion = 'entropy'))])"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"clf_forest = RandomForestClassifier(n_estimators= 20, criterion = 'entropy', max_depth= 50, min_samples_leaf= 3,\n",
" min_samples_split= 3, oob_score= True)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Deepak\\Anaconda2\\lib\\site-packages\\sklearn\\ensemble\\forest.py:403: UserWarning: Some inputs do not have OOB scores. This probably means too few trees were used to compute any reliable oob estimates.\n",
" warn(\"Some inputs do not have OOB scores. \"\n"
]
},
{
"data": {
"text/plain": [
"RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy',\n",
" max_depth=50, max_features='auto', max_leaf_nodes=None,\n",
" min_samples_leaf=3, min_samples_split=3,\n",
" min_weight_fraction_leaf=0.0, n_estimators=20, n_jobs=1,\n",
" oob_score=True, random_state=None, verbose=0, warm_start=False)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf_forest.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, ..., 0, 0, 0], dtype=int64)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preds = clf_forest.predict(X_test)\n",
"preds"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 0.99 1.00 0.99 76448\n",
" 1 0.84 0.68 0.75 2602\n",
"\n",
"avg / total 0.98 0.99 0.98 79050\n",
"\n"
]
}
],
"source": [
"print classification_report(y_test, preds)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Precision has remained the same.\n",
"Sensitivity has improved by 3%"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Understanding the important variables"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.06106308, 0.08600927, 0.06928473, 0.0123783 , 0.77126463])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf_forest.feature_importances_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Features used are"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['country', 'age', 'new_user', 'source', 'total_pages_visited'], dtype=object)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns.values[:-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Out of box score"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.98545646215475435"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf_forest.oob_score_"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Some insights\n",
"\n",
"From variable importance, it can be said that, total_pages_visited is the most important feature.\n",
"Also from oob score it can be said that oob error rate is close to 1.4%.\n",
"\n",
"Out of box score is 98.5%. This implies, the predictions were right for 98.5% of the data set. However, it is useful to recognize that the dataset is highly imbalanced with 97% of the data in class 0 and only 3% in class 1. This implies, even if we had classified everything as 0, the accuracy would still be 97%. Therefore, our predictions have only improved by 1.5% which is the difference of 98.5% and 97%.\n",
"\n",
"The real challenge lies in improving the recall value of class 1. This value is close to 70%. This implies 30% of the customers\n",
"who converted were not recognized by our system as potential customers. \n",
"\n",
"Recall value needs to be improved even if that results in an increased overall error rate (decrease in precision) and a \n",
"decrease in specificity value. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Building RandomForest again. This time without the total pages visited feature. \n",
"Also since, the classes are heavily imbalanced, giving it weights."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_new_train = X_train.copy()\n",
"X_new_test = X_test.copy()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_new_train = X_new_train.drop('total_pages_visited', axis = 1)\n",
"X_new_test = X_new_test.drop('total_pages_visited', axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"clf_forest_new = RandomForestClassifier(n_estimators= 20, criterion = 'entropy', max_depth= 150, min_samples_leaf= 2,\n",
" min_samples_split= 2, oob_score= True, class_weight = {0: 0.1, 1: 0.9})"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestClassifier(bootstrap=True, class_weight={0: 0.1, 1: 0.9},\n",
" criterion='entropy', max_depth=150, max_features='auto',\n",
" max_leaf_nodes=None, min_samples_leaf=2, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, n_estimators=20, n_jobs=1,\n",
" oob_score=True, random_state=None, verbose=0, warm_start=False)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf_forest_new.fit(X_new_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, ..., 0, 1, 0], dtype=int64)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preds = clf_forest_new.predict(X_new_test)\n",
"preds"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.92 0.95 76448\n",
" 1 0.15 0.39 0.21 2602\n",
"\n",
"avg / total 0.95 0.90 0.92 79050\n",
"\n"
]
}
],
"source": [
"print classification_report(y_test, preds)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.33620725, 0.25286962, 0.39397703, 0.01694609])"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf_forest_new.feature_importances_"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array(['country', 'age', 'new_user', 'source'], dtype=object)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_new_train.columns.values"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Although the error rate has gone up and the recall value has significantly crashed, from variable importance, we \n",
"can gather that new_user followed by country and age are the important variables with source having no effect on the outcome\n",
"at all. "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### Conclusions\n",
"\n",
"It is possible to predict upto 98.5% accuracy or an out of bag error rate of 1.5%.\n",
"\n",
"Some of the important features are \n",
"\n",
"1. Number of pages visited \n",
"2. new_user\n",
"3. country \n",
"4. age\n",
"\n",
"Site is working very well for Germany and not so well for China.\n",
"\n",
"This could be because of various reasons such as poor translation or the chineese site might be in English as well.\n",
"\n",
"The site works well for younger people. Those less than 30 years of age. It could either be because of the nature of the site\n",
"that caters only to young people or it could be possible that older people find it difficult to navigate through the site for a\n",
"meaningful conversion.\n",
"\n",
"Also, since the most important feature here is the number of pages visited, it implies that, if someone who has visited\n",
"a lot of pages hasn't converted, then there is a good chance that the user will convert with a little bit of marketing such as\n",
"discounts, benefits etc. \n",
"\n",
"Also, users with an old account tend to do better than the ones with a new account. This could be used by marketing team to it's \n",
"advantage."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment