Mobile insights

CSV

0. Import libraries


In [1]:
%matplotlib inline 

import numpy as np
import scipy as sp
import matplotlib as mpl
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import pandas as pd

pd.set_option('display.width', 500)
pd.set_option('display.max_columns', 100)
pd.set_option('display.notebook_repr_html', True)
import seaborn as sns #sets up styles and gives us more plotting options

1. Settings


In [2]:
# Time period 1st Jan - 30th April (arbitrary )

# API credentials
# Email address 705762800217-compute@developer.gserviceaccount.com
# Key IDs 948ee8e2a420ef14a5d5a29bd35104fe2f1e6ed4

In [3]:
# open file. It is requested via API explorer using request parameters:

#Account: TMRW Tech Hub
#Property: TMRW
#View: All Web Site Data
#ids: ga:123303369
#start-date: 2017-01-01
#end-date: 2017-04-30

#metrics
#ga:sessions
#ga:sessionsWithEvent
#ga:bounceRate

#dimensions
#ga:deviceCategory

2. Data import & transformation


In [6]:
# Open file
input_mob= pd.read_csv('files/TMRW_mob.csv')

# rename columns
input_mob.columns=['Device','Sessions','Bounce Rate','Conversions','CR'] 

# group by device
input_mob = input_mob.set_index('Device')

input_mob


Out[6]:
Sessions Bounce Rate Conversions CR
Device
desktop 4061 52.647131 114 0.028072
mobile 2261 62.627156 30 0.013268
tablet 270 55.555556 3 0.011111

3. Calculate


In [7]:
mobile_Sessions = input_mob.loc['mobile','Sessions']
desktop_CR = input_mob.loc['desktop','CR']
mobile_Conversions = input_mob.loc['mobile','Conversions']
mobile_CR = input_mob.loc['mobile','CR']

conv_increase =  "%.0f" % (mobile_Sessions * desktop_CR - mobile_Conversions)
conv_increase = int(conv_increase)

#mobileSessions
#desktopCR
#mobileConversions
mobile_CR


Out[7]:
0.013268465

4. Validate


In [8]:
#if mobile CR is greater, equel or less by more than 20% result is failed

dif = mobile_CR / desktop_CR

if dif > 0.8:
    result = False
    
else:
    result = True
    
result


Out[8]:
True

5. Visualise


In [9]:
output_chart_mob = input_mob.loc['mobile',['Sessions','Conversions']]
output_chart_mob.plot.barh(stacked=True)

labels = output_chart_mob.index
sizes = output_chart_mob

# colours are taken from http://tools.medialab.sciences-po.fr/iwanthue/
colors = ['#b94663','#6fac5d', '#677ad1']
explode = (0, 0, 0)
plt.xlabel('Visits')
plt.title('Only %s ' % ("%.2f" % (mobile_CR*100) +'% of all mobile visits end up completing a conversion' ))

#need to specify analytics time perdiod
print ("Have %s more conversions per month by optmising mobile UX" % conv_increase)

plt.show()


Have 33 more conversions per month by optmising mobile UX

In [ ]: