# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: env_ecobici
#     language: python
#     name: env_ecobici
# ---

# # Exploración Inicial

# __Descripción:__
#
# Se obtiene el AGEB de origen y destino de los viajes de los viajes de ecobici y se obtiene el agregado primedio de los viajes entre AGEBS por hora.
#
# __Input__
#
# - Estaciones de ecobici: Estaciones de ecobici con clave AGEB obtenida de __Uber © 2019 Copyright Uber Technologies, Inc.Data Attributions__
#
# - <NAME> 2019
# Responsable: Ecobici
#
#

# +
import pandas as pd
import pickle

import pandas as pd
import dask.dataframe as dd
import time

import scipy.stats
import re
# -

# ## Obtencion de AGEBS de interés:

df_estaciones = pd.read_csv("/Users/danielbustillos/Documents/ecobici_viz/data/SIG/procesado/CSV/estaciones-de-ecobici_con_AGEB.csv")
df_estaciones.head()

df_estaciones['CVE_AGEB'] = [''.join(filter(lambda x: x.isdigit(), row)) for row in df_estaciones['CVE_AGEB']]
df_estaciones['CVE_AGEB'] = df_estaciones['CVE_AGEB'].astype(int)

lista_agebs = df_estaciones['CVE_AGEB'].astype(int).unique().tolist()
len(lista_agebs)

lista_agebs[:5]

# Guardamos lo AGEBS en una lista:

with open("./data/lista_agebs.txt", "wb") as fp:
    pickle.dump(lista_agebs, fp)

# ## Leamos el archivo de viajes de UBER

path_uber_trips = "/Users/danielbustillos/Documents/ecobici_viz/data/uber/mexico_city-agebs-2019-1-OnlyWeekdays-HourlyAggregate.csv"

# +
## cambiar a pandas
# -

t=time.clock()
df_trips = dd.read_csv(path_uber_trips)
df_trips = df_trips.compute()
print("load train: " , time.clock()-t)

df_trips.head()

# + active=""
# lista_agebs.sort()
# lista_agebs
# -

list(set(lista_agebs) - set(df_trips["sourceid"].unique()))

df_trips = df_trips[df_trips["sourceid"].isin(lista_agebs)]

# +
#df_trips.to_csv('./data/procesado/mexico_city-agebs-2019-2-All-HourlyAggregate_filter.csv')
# -

df_trips.dtypes

df_trips.reset_index(drop=True, inplace=True)

df_trips.head()

df_trips["sourceid"].nunique()

# ### tiempo máximo y mínimos por viaje y hora.
# Suponemos una distribución normal con media 'mean_travel_time' y desviación estandar 'standard_deviation_travel_time>'

df_trips.head()


def travel_min(mean,std):
    min = scipy.stats.norm(mean, std).ppf(.10)
    #max = scipy.stats.norm(mean, std).ppf(.90)
    return(min)
def travel_max(mean,std):
    #min = scipy.stats.norm(mean, std).ppf(.10)
    max = scipy.stats.norm(mean, std).ppf(.90)
    return(max)


df_trips['min_travel_time'] = 0
df_trips['max_travel_time'] = 0

df_trips['min_travel_time'] =  df_trips.apply(
    lambda row : travel_min(row['mean_travel_time'], 
                            row['standard_deviation_travel_time']), axis = 1)

df_trips['max_travel_time'] =  df_trips.apply(
    lambda row : travel_max(row['mean_travel_time'], 
                            row['standard_deviation_travel_time']), axis = 1)

df_trips.head()

df_trips.to_csv("./data/production_data/viajes_uber.csv", index=False)

StarcoderdataJupyterScriptsDedupFiltered