Análisis de comportamiento de una atracción

Este análisis es de que cuantas personas ingresan a una atracción en un rango de tiempo especifico.

Importar Librerias


In [2]:
import pandas as pd
%matplotlib inline
import seaborn as sns
from matplotlib import pyplot as plt
import numpy as np
sns.set_style("darkgrid")

Lectura de Datos


In [3]:
cd  /Users/Sebastian/Google\ Drive/Uniandes/Visual\ Analytics/Mini_chalange1/MC1\ 2015\ Data/


/Users/Sebastian/Google Drive/Uniandes/Visual Analytics/Mini_chalange1/MC1 2015 Data

In [4]:
data = pd.read_csv("park-movement-Fri.csv")

Transformar los datos de tiempo


In [5]:
data["time"] = pd.to_datetime(data.Timestamp, format="%Y-%m-%d %H:%M:%S")

Identificar checkins


In [6]:
checkins = data.loc[data["type"]=="check-in"]

In [40]:
movements = data.loc[data["type"]=="movement"]

Establecer un rango de tiempo


In [86]:
time = (checkins["time"] >= '2014-06-06 08:00:00') & (checkins["time"] <= '2014-06-06 23:59:59')

Buscar datos checkins en el rango


In [87]:
checkins_by_time = checkins.loc[time]

Crear una clase para trabajar con cada atracción


In [88]:
class Atraccion(object):
    def __init__(self,X,Y,Visitors):
        self.X = X
        self.Y = Y
        self.Visitors = Visitors
        self.Visits = Visitors["id"].count()
        self.Wait_Time = 0

Llenar los objetos de Atracción


In [89]:
checkins_by_range = checkins_by_time.groupby(['X', 'Y'])
Atracciones = []
for key,group in checkins_by_range:
    Atracciones.append(Atraccion(key[0],key[1],group))

In [95]:
for atrac in Atracciones:
    wt=0
    print "Atraccion"
    for index, per in atrac.Visitors.iterrows():
        t_i = per["time"]
        t_f = movements.loc[(movements["id"] == per["id"]) & (movements["time"] >t_i)]["time"].min()
        t_w = (t_f - t_i) / np.timedelta64(1,'m')
        wt = wt + t_w
    atrac.Wait_Time = wt / atrac.Visits


Atraccion
Atraccion
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-95-cf42d89f79f6> in <module>()
      5         t_i = per["time"]
      6         t_f = movements.loc[(movements["id"] == per["id"]) & (movements["time"] >t_i)]["time"].min()
----> 7         t_w = (t_f - t_i) / np.timedelta64(1,'m')
      8         wt = wt + t_w
      9     atrac.Wait_Time = wt / atrac.Visits

pandas/tslib.pyx in pandas.tslib._Timestamp.__sub__ (pandas/tslib.c:17335)()

TypeError: descriptor '__sub__' requires a 'datetime.datetime' object but received a 'float'

In [93]:
for Atr in Atracciones:
    print str("X: ")+str(Atr.X)
    print str("Y: ")+str(Atr.Y)
    print str("Visitantes: ")+str(Atr.Visits)
    print str("Tiempo de espera: ")+str(Atr.Wait_Time)


X: 0
Y: 67
Visitantes: 802
Tiempo de espera: 0.873462177889
X: 6
Y: 43
Visitantes: 1170
Tiempo de espera: 0
X: 16
Y: 49
Visitantes: 1130
Tiempo de espera: 0
X: 16
Y: 66
Visitantes: 4208
Tiempo de espera: 0
X: 17
Y: 43
Visitantes: 4323
Tiempo de espera: 0
X: 17
Y: 67
Visitantes: 1166
Tiempo de espera: 0
X: 23
Y: 54
Visitantes: 1340
Tiempo de espera: 0
X: 26
Y: 59
Visitantes: 1294
Tiempo de espera: 0
X: 27
Y: 15
Visitantes: 4289
Tiempo de espera: 0
X: 28
Y: 66
Visitantes: 1148
Tiempo de espera: 0
X: 32
Y: 33
Visitantes: 3811
Tiempo de espera: 0
X: 34
Y: 68
Visitantes: 1186
Tiempo de espera: 0
X: 38
Y: 90
Visitantes: 4278
Tiempo de espera: 0
X: 42
Y: 37
Visitantes: 1407
Tiempo de espera: 0
X: 43
Y: 56
Visitantes: 1209
Tiempo de espera: 0
X: 43
Y: 78
Visitantes: 1200
Tiempo de espera: 0
X: 45
Y: 24
Visitantes: 4127
Tiempo de espera: 0
X: 47
Y: 11
Visitantes: 4520
Tiempo de espera: 0
X: 48
Y: 87
Visitantes: 1171
Tiempo de espera: 0
X: 50
Y: 57
Visitantes: 233
Tiempo de espera: 0
X: 60
Y: 37
Visitantes: 1279
Tiempo de espera: 0
X: 63
Y: 99
Visitantes: 1961
Tiempo de espera: 0
X: 67
Y: 37
Visitantes: 1361
Tiempo de espera: 0
X: 69
Y: 44
Visitantes: 4454
Tiempo de espera: 0
X: 73
Y: 79
Visitantes: 795
Tiempo de espera: 0
X: 73
Y: 84
Visitantes: 782
Tiempo de espera: 0
X: 76
Y: 22
Visitantes: 1180
Tiempo de espera: 0
X: 76
Y: 88
Visitantes: 872
Tiempo de espera: 0
X: 78
Y: 37
Visitantes: 1287
Tiempo de espera: 0
X: 78
Y: 48
Visitantes: 4214
Tiempo de espera: 0
X: 79
Y: 87
Visitantes: 870
Tiempo de espera: 0
X: 79
Y: 89
Visitantes: 834
Tiempo de espera: 0
X: 81
Y: 77
Visitantes: 876
Tiempo de espera: 0
X: 82
Y: 80
Visitantes: 908
Tiempo de espera: 0
X: 83
Y: 88
Visitantes: 853
Tiempo de espera: 0
X: 85
Y: 86
Visitantes: 911
Tiempo de espera: 0
X: 86
Y: 44
Visitantes: 4478
Tiempo de espera: 0
X: 87
Y: 48
Visitantes: 1267
Tiempo de espera: 0
X: 87
Y: 63
Visitantes: 2035
Tiempo de espera: 0
X: 87
Y: 81
Visitantes: 814
Tiempo de espera: 0
X: 92
Y: 81
Visitantes: 793
Tiempo de espera: 0
X: 99
Y: 77
Visitantes: 935
Tiempo de espera: 0

In [91]:
len(Atracciones)


Out[91]:
42

In [ ]: