<jupyter_start><jupyter_text>1. INICIO Nuestro punto de partida son los Data Sets provistos por [Buenos Aires Data](https://data.buenosaires.gob.ar/dataset/bicicletas-publicas), los cuales tienen caracteristicas similares, pero presentan algunas discrepancias que dificultan hacer un análisis para todos los años, por lo que nuestros objetivos serán:- Definir el nombre generico para las columnas.- Definir las columnas compatibles.- Unificar los data sets en un **NetCDF**<jupyter_code>from localpacks.data import get_data<jupyter_output><empty_output><jupyter_text>1.1  Importamos nuestros datasets<jupyter_code>#Rango de 2010 al 2018
df_2010 = get_data(year=2010)
df_2011 = get_data(year=2011)
df_2012 = get_data(year=2012)
df_2013 = get_data(year=2013)
df_2014 = get_data(year=2014)
df_2015 = get_data(year=2015)
df_2016 = get_data(year=2016)
df_2017 = get_data(year=2017)
df_2018 = get_data(year=2018) #Aun no esta completo fecha_actual: 13/12/2018
#observamos las columnas de cada data frame
df_2010.columns.values
#df_2011.columns.values
#df_2012.columns.values
#df_2013.columns.values
#df_2014.columns.values
#df_2015.columns.values
#df_2016.columns.values
#df_2017.columns.values
#df_2018.columns.values<jupyter_output><empty_output><jupyter_text>1.2 Extraemos las columnas y las vaciamos en un dict<jupyter_code>#columnas iniciales
columns = {'2010' : ['PERIODO', 'ORIGENFECHA', 'ORIGENESTACIONID', 'ORIGENNOMBRE',
       'DESTINOFECHA', 'DESTINOESTACIONID', 'DESTINONOMBRE', 'TIEMPOUSO'],

           '2011' : ['PERIODO', 'ORIGENFECHA', 'ORIGENESTACIONID', 'NOMBREORIGEN',
       'DESTINOFECHA', 'DESTINOESTACIONID', 'NOMBREDESTINO', 'TIEMPOUSO'],
           
           '2012' : ['PERIODO', 'ORIGENFECHA', 'ORIGENESTACIONID', 'ORIGENNOMBRE',
       'DESTINOFECHA', 'DESTINOESTACIONID', 'DESTINONOMBRE', 'TIEMPOUSO'],
           
           '2013' : ['ID', 'NOMBRE_ORIGEN', 'ORIGEN_FECHA', 'DESTINO_ESTACION',
       'DESTINO_FECHA'],
           
           '2014' : ['ID', 'NOMBRE_ORIGEN', 'ORIGEN_FECHA', 'DESTINO_ESTACION',
       'DESTINO_FECHA'],
           
           '2015' : ['periodo', 'genero', 'fecha_hora_retiro', 'origen_estacion',
       'nombre_origen', 'destino_estacion', 'nombre_destino', 'tiempo_uso'],
           
           '2016' : ['periodo', 'genero', 'fecha_hora_retiro', 'origen_estacion',
       'nombre_origen', 'destino_estacion', 'nombre_destino', 'tiempo_uso'],
           
           '2017' : ['periodo', 'genero', 'fecha_hora_retiro', 'origen_estacion',
       'nombre_origen', 'destino_estacion', 'nombre_destino', 'tiempo_uso'],
           
           '2018' : ['id_usuario', 'bici_fecha_hora_retiro', 'bici_tiempo_uso', 
                     'bici_nombre_estacion_origen', 'bici_estacion_origen',
                     'bici_nombre_estacion_destino', 'bici_estacion_destino',
                     'bici_sexo', 'bici_edad']
          }<jupyter_output><empty_output><jupyter_text>Con el analisis de los nombres de cada columna, definimos las siguientes convenciones:  1.3 Definicion de nombres 2010 al 2012 | 2013 al 2014 | 2015 al 2017 | 2018------------ | ------------- | ------------ | -------------periodo | -- | periodo | ---- | usuario_id | -- | usuario_idorigen_fecha, origen_id, origen_nombre | origen_fecha, origen_id, origen_nombre | origen_fecha, origen_id, origen_nombre | origen_fecha, origen_id, origen_nombredestino_fecha, destino_id, destino_nombre| destino_fecha, destino_id, destino_nombre | destino_id, destino_nombre | destino_id, destino_nombretiempo_uso | -- | tiempo_uso | tiempo_uso-- | -- | -- | usario_edad-- | -- | usuario_genero | usuario_genero En la tabla anterior dejamos claro el nombre que utilizaremos para las columnas comunes y no comunes.  1.4 Formato de integración 2010 al 2012 | 2013 al 2014 | 2015 al 2017 | 2018------------ | ------------- | ------------ | --------------- | usuario_id | -- | usuario_idfecha_uso | fecha_uso | fecha_uso | fecha_uso origen_id, origen_nombre | origen_id, origen_nombre | origen_id, origen_nombre | origen_id, origen_nombredestino_id, destino_nombre| destino_id, destino_nombre | destino_id, destino_nombre | destino_id, destino_nombretiempo_uso(s) | tiempo_uso(s) | tiempo_uso(s) | tiempo_uso(s)-- | -- | -- | usario_edad-- | -- | usuario_genero | usuario_genero Consideraciones:- La columna **periodo** se elimina, y pasa a ser un metadato.- La columna **origen fecha** se cambia a **fecha_uso** y pasa a ser el **index**- La culumna **destino fecha** si existe se elimina y se deriva el **tiempo_uso** Formatos:- **usuario_id:**  integer, discreto, ordinal.- **fecha_uso:** date_time, discreto, ordinal.- **origen_id:** integer, discreto, ordinal (one_to_one with origen_nombre)- **nombre_id:** string, discreto, ordinal (one_to_one with origen_id)- **destino_id:**  integer, discreto, ordinal (one_to_one with destino_nombre)- **destino_id:**  string, discreto, ordinal (one_to_one with destino_id)- **tiempo_uso:** time_delta, continuo, ordinal.- **usuario_edad:** integer, discreto, ordinal.- **usuario_genero:** string.  2. AJUSTES  2.1 Data Frame 2010<jupyter_code>df_2010_raw = get_data(year = 2010, apply_format=False)
df_2010 = get_data(year = 2010, apply_format=True)
df_2010_raw.head(3)
df_2010.head(3)<jupyter_output><empty_output><jupyter_text>2.2 Data Frame 2011<jupyter_code>df_2011_raw = get_data(year = 2011, apply_format=False)
df_2011 = get_data(year = 2011, apply_format=True)
df_2011_raw.head(3)
df_2011.head(3)<jupyter_output><empty_output><jupyter_text>2.2 Data Frame 2012<jupyter_code>df_2012_raw = get_data(year = 2012, apply_format=False)
df_2012_raw.head(3)
df_2012 = get_data(year = 2012, apply_format=True)
df_2012.head(3)<jupyter_output><empty_output><jupyter_text>2.3 Data Frame 2013<jupyter_code>df_2013_raw = get_data(year = 2013, apply_format=False)
df_2013 = get_data(year = 2013, apply_format=True)
df_2013_raw.head(3)
df_2013.head(3)<jupyter_output><empty_output><jupyter_text>2.3 Data Frame 2014<jupyter_code>df_2014_raw = get_data(year = 2014, apply_format=False)
df_2014 = get_data(year = 2014, apply_format=True)
df_2014_raw.head(3)
df_2014.head(3)<jupyter_output><empty_output><jupyter_text>2.4 Data Frame 2015<jupyter_code>df_2015_raw = get_data(year = 2015, apply_format=False)
df_2015 = get_data(year = 2015, apply_format=True)
df_2015_raw.head(3)
df_2015.head(3)<jupyter_output><empty_output><jupyter_text>2.5 Data Frame 2016<jupyter_code>df_2016_raw = get_data(year = 2016, apply_format=False)
df_2016 = get_data(year = 2016, apply_format=True)
df_2016_raw.head(3)
df_2016.head(3)<jupyter_output><empty_output><jupyter_text>2.6 Data Frame 2017<jupyter_code>df_2017_raw = get_data(year=2017, apply_format=False)
df_2017 = get_data(year=2017, apply_format=True)
df_2017_raw.head(3)
df_2017.head(3)<jupyter_output><empty_output><jupyter_text>2.7 Data Frame 2018<jupyter_code>df_2018_raw = get_data(year=2018, apply_format=False)
df_2018 = get_data(year=2018, apply_format=True)
df_2018_raw.head(3)
df_2018.head(3)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1361495647209933, 'fraction_numerical': 0.07335521621235908, 'mean_word_length': 5.093913043478261, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 49, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '349054', 'license': 'MIT', 'n_tokens_mistral': 3070, 'n_tokens_neox': 2637, 'n_words': 500, 'path': 'notebooks/00-Inicio.ipynb', 'repo_name': 'pydarg/CABA_MyT_BicicletasPublicas', 'size': '7007'}