Muchos datos que se analizan son mediciones con respecto al tiempo, lo cual en general son consideradas como series de tiempo. Su analisis permite hacer algunas predicciones a corto plazo o por lo menos detectar alguna tendencia, estacionalidad o ciclos.
La finalidad es explorar el comportamiento del porcentaje de ocupación de muelles y boyas y marin seca con respecto al tiempo, primero se revisa aspectos de los datos de como tipo de datos, cantidad, etc. Luego se hace una pequeña revisión para elegir los puertos que muestran mayor ocupación y después se hace una comparación entre los puertos y por cada puerto respecto al tipo de ocupación.
Los datos analizados corresponden a los proporcionados por SECTUR. En la siguiente liga se pueden descargar o ver más detalles:
In [3]:
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['figure.figsize']=(20,5)
In [2]:
#No usamos ninguan columna como índice para los datos
Puertos=pd.read_csv('/Datos/Informacion_Estadistica_Mensual_de_las_Marinas_FOP_180216.csv')
Se revisan las cantidades de filas y columanas, se visulizan los primeros y los últimos registros.
In [3]:
#Se obtiene que que la tabla cuanta con 288 filas y 4 columnas.
Puertos.shape
Out[3]:
In [ ]:
#Se visualizan las primeras 5 filas
Puertos.head()
In [14]:
#Se podría no hacer esto, pero solo por explorar los últimos registros los visualizo
Puertos.tail()
Out[14]:
In [19]:
#Se da una breve descripción del tipo de variables
Puertos.info()
Lo primero que trato de explorar es la cantidad de puertos considerados, para poder elegir entre ellos los 3 que tienen la mediana mayor de los porcentajes de ocupación.
In [20]:
#Se elige la columna Marina Fonatur y se eliminan los duplicados para conocer la cantidad de puertos registrados en los datos.
Puertos['Marina Fonatur'].drop_duplicates()
Out[20]:
Se observa que se tienen solo 8 puertos, ahora agrupo respecto a los puertos y considero la mediana de los porcentajes de ocupación para elegir los que muestran un valor mayor y posteriormente analizarlos.
In [28]:
#Se agrupan, se calcula la mediana y se ordenan por el porcentaje de ocupación de muerlles y boyas. Las primeras filas
#de la tabla son los que registran mayor valor.
Puertos.groupby('Marina Fonatur').median().sort_values(by='Porcentaje de ocupacion muelles y boyas',ascending=False)
Out[28]:
Los puertos analizar o explorar, son Mazatlan, La Paz y Guaymas. Para conocer como se comportan el porcentaje por fecha para todos los puertos se contruye una tabla pivot.
In [30]:
#Tabla pivor para ver el comportamiento de todos los puertos
Puertos.pivot_table(values='Porcentaje de ocupacion muelles y boyas',columns='Marina Fonatur',index='Fecha')
Out[30]:
Se observa que la última fial tiene un NaN para la Paz, así que en la revisión correspondiente lo tomaré en cuanta. La tabla anterior puede graficarse directamente, solo se agrega plot() al final de la construcción de la tabla.
In [31]:
#Se grafica la tabla pivot
Puertos.pivot_table(values='Porcentaje de ocupacion muelles y boyas',columns='Marina Fonatur',index='Fecha').plot()
Out[31]:
In [33]:
#Se contruye la tabla y luego solo se eligen los 3 puertos a revisar.
Tabla1=Puertos.pivot_table(values='Porcentaje de ocupacion muelles y boyas',columns='Marina Fonatur',index='Fecha')
Tabla1[['Mazatlan','La Paz','Guaymas']]
Out[33]:
In [37]:
#En la línea morada se observa que al final, en el último punto falta un valor, esto es por el NaN
Tabla1=Tabla1[['Mazatlan','La Paz','Guaymas']]
Tabla1.plot()
Out[37]:
In [42]:
#Sustituimos el valor del Nan, si volvemos a graficar ya se muestra la línea morada con un dato en la última fecha.b
Tabla1=Tabla1.fillna(Tabla1.mean())
Tabla1.plot()
Out[42]:
En la gráfica se observa que el porcentaje de ocuapción en muelles y boyas desde Febrero 2015 el puerto de Mazatlán( línea azul) es el más usado, siempre arriba del 60% de ocupación. Por otro lado, muestra que la Paz(línea morada) desde la misma fecha muestra una "tendencia" a la baja. Luego viendo el comportamiento de Guaymas(línea roja), muestra de manera "global" un crecimiento casi contante, con ligeras bajas y altas, salvo por los ultimos meses del 2015 el crecimiento era "constante". Nota: en todas las palabras que resalto con "", requieren alguna explicación o aclaración, no la hago para evitar pasar a temas estadísticos, que son importantes pero no es la finalidad de lo que trato de hacer con Pandas por ahora.
In [4]:
# Para explorar el comportamiento de Mazatlan, tanto de la ocupación en muelles y boyas, como de la marina seca eligo desde
# el DataFrame los datos solo relacionados con ese puerto. Y construyo su gráfica.
Mazatlan=Puertos[Puertos['Marina Fonatur'].ix[:]=='Mazatlan']
Mazatlan.plot(x='Fecha')
Out[4]:
La gráfica muestra que después de Febrero 2015 se registra una "alza", tanto en la ocupación de marina seca, como en muelles y boyas. Pero también se observa como entre Diciembre 2014 y Enero 2015 hay una baja muy considerable en el porcentaje de ocupación en general.
Solo por curiosidad, se puede pensar en hacer el "cruce" entre los porcentajes, para ver su posible relación. Esto solo lo hago gráficamete, pero se puede calcular también la correlación entre ellos.
In [5]:
#La correlación entre los dos porcentajes es de .312287, bastante bajo.
Mazatlan.corr()
Out[5]:
In [6]:
#Lo anterior gráficamente se puede visualizar con una gráfica que cuente con los histogramas y el scatterplot.
sns.jointplot(x="Porcentaje de ocupacion muelles y boyas",y="Porcentaje de ocupacion marina seca",data=Mazatlan,kind="reg")
Out[6]:
Se muestra poca relación entre las dos tasas de porcentaje. No hago mayor exploración y se podría explorar si se comporta igua para cada uno de los puertos analizados. También se puede revisar la relación de los porcentajes de ocupación en muelles y boyas para los 3 puertos que se revisaron. Se hace esto desde los datos de la tabla 1.
In [51]:
#Matriz de correlaciones de Mazatla, la Paz y Guaymas.
Tabla1.corr()
Out[51]:
De la tabla anterior se puede revisar la relación entre Guaymas y Mazatlan, la cual es considerable para revisar estadísticamente con más cuidado. Considerando las ubicaciones geográficas de los 3 puertos, es curioso que la Paz muestra correlación negativa y con Guaymas positiva, quizás relaciones comerciales o de cercanía que salen fuera de este breve análisis.
Otra cosa que se puede revisar es la relación entre las tasas de porcentaje para todos los puertos, posible no es tan parecida a los 3 que se revisaron.
In [50]:
#Por último se puede visualizar la relación de las medianas de los porcentajes para cada uno de los puertos.
Puertos.groupby('Marina Fonatur').median().plot(kind='bar')
Out[50]:
De manera clara se muestra que la mediana de los porcentajes de ocupación es diferente entre la Paz, Mazatlan con respecto a Guaymas. Posible debido al tipo de actividad turistica y económica, y quizás también algún factor que tienen que ver con la infraestructura de los lugares. Pero por último se ve que en los puertos Puerto Escondido, San Felipe y Santa Rosalía no hay marina seca.
Comentarios: La intención es mostrar como procesar los datos y tratar de explorar con respecto al tiempo, para nada se intenté hacer un "análisis fino" desde un punto de vista estadístico. Muchas de las operaciones que se hicieron con las tablas son básicas y muy usadas para explorar los datos desde Pandas.