[AUDIO_EN_BLANCO] [MÚSICA] Hola. Tras la inspección inicial de los datos vamos a proseguir con un análisis exploratorio de la información. El objetivo de esta etapa del análisis consiste en describir la información, resumirla, empleando gráficos y herramientas básicas. Es una tarea más bien pesada porque puede requerir una carga de trabajo bastante importante. No obstante, en la presentación actual solo veremos casos de ejemplo para tener un poco la visión de cómo se podría hacer con el resto de variables y de información. Por lo tanto, prosiguiendo, recordad que el objetivo del análisis consistía en intentar predecir el retraso de los vuelos. Esto es importante tenerlo en cuenta porque el mismo exploratorio you se basa en intentar describir justamente las variables implicadas en este objetivo. Por lo tanto, hay que fijar el objetivo antes de explorar los datos. Y, por lo tanto, vamos you a proceder. Empezamos con la lectura de los datos. Si es necesario definimos SparkContext y SparkSQL. En la máquina virtual esto you viene definido por defecto, por lo tanto, no es necesario ejecutarlo, sino que está simplemente a modo de ejemplo. La lectura de los datos la llevaríamos a cabo mediante esas instrucciones. La base de datos resultante se va a llamar bd. La base de datos origen es esta quí en formato CSV y gracias a esta librería el esquema de la base de datos es inferido y, por lo tanto, no hay que llevar a cabo más operaciones. El proceso de trabajo requiere filtrar las variables de interés, todas estas de aquí, y también, por una cuestión más bien didáctica y para que los cálculos sean menos pesados, pues llevamos a cabo un filtro de los datos basados en algunos aeropuertos de origen y de destino. Así pues la exploración de las variables puede empezar. Finalmente clasificamos las variables en cualitativas y cuantitativas en función de su naturaleza. Si es una naturaleza categórica o bien cuantitativa y, por lo tanto, definimos una serie de herramientas, planteamos una serie de herramientas de resumen distintas para cada caso. Para las variables cualitativas emplearíamos número de casos, número de categorías disponibles, número de perdón, frecuencias relativas, frecuencias absolutas y, es interesante también, frecuencias acumuladas sean relativas o absolutas. A nivel de trabajo empezamos simplemente contando el número de registros en la base de datos y hemos de empezar describiendo la variable destino. Es una variable categórica, representa el aeropuerto de destino de cada uno de los vuelos. Esta operación de aquí, aplicando la función distinct, nos permite contar cuántos aeropuertos diferentes hay en la base de datos. Puesto que es una base de datos filtrada, al final, solo nos quedamos con ocho casos. Un recuento agregado por la variable destino you nos permite obtener las frecuencias absolutas de esta variable. Así pues, podríamos identificar cuál es el aeropuerto con mayor número de vuelos de destino, por ejemplo, sería este de aquí. Los Ángeles. Estas mismas tareas se pueden llevar a cabo empleando tareas de gestión de datos propias de Spark o bien desde instrucciones de tipo SQL. En este caso, aplicando funciones un poco más sofisticadas podríamos capturar los porcentajes relativos de cada uno de los aeropuertos generando las frecuencias relativas. En este caso vemos que el aeropuerto con menos número de vuelos sería Atlanta con alrededor de un 10 % de los vuelos. La misma operación puede ser llevada a cabo a partir de un cálculo un poco más sofisticado donde el número total de vuelos no se ha introducido a mano, sino que se captura desde una consulta. Aquí vemos la consulta secundaria que permite capturar el número real de vuelos. Para las variables cuantitativas empleamos una serie de índices de resumen un poco más sofisticados pues para describir dónde se encuentra la distribución de los datos y cuál es la dispersión de los mismos. Tenemos una serie de indicadores promedio, mediana, y en el caso de la dispersión, variabilidad, varianza, desviación estándar, cuartiles, rango, etcétera, etcétera. También para describir un poco las anomalías de estas variables pues representamos a menudo los valores extremos. Por ejemplo, directamente el mínimo y el máximo, los percentiles pues más extremos, el 1 %, el 99 %, o bien cuántos casos hay por encima de determinado valor de interés. Como ejemplo emplearemos la variable retraso en minutos, la tarea método describe directamente de Spark nos permite obtener una serie de índices básicos, recuento, promedio, desviación estándar, mínimo, máximo. Vemos que el valor máximo de retraso es de 2.028 minutos. Eso es un día y medio aproximadamente. De la misma manera, para índices particulares podemos capturar los resúmenes, pues aquí, en este caso, el máximo, y llevar a cabo la tarea collect para obtener el valor en forma de lista. Tareas alternativas mediante sintaxis SQL. Para representar pues los valores más extremos podemos emplear simplemente una reordenación de los datos. Pues particularmente de forma ascendente. Perdón, descendiente. Y capturar pues número de casos particular. Aquí veríamos los diez vuelos con mayor retraso. Complementariamente podemos obtener percentiles de la distribución. Los percentiles representan valores de corte que dejan un determinado porcentaje de casos por arriba y por debajo. Si queremos el percentil 95 de la distribución tendríamos el valor resultante 103, cosa que indica que hay un 5 % de los vuelos con un retraso mayor a 103. Para representación gráfica de las variables empleamos ahora librerías propias de Python e intentaremos utilizar estas funciones a bases de datos agregados. En particular, para las variables cualitativas, lo que veíamos antes es que simplemente necesitamos obtener la distribución de las frecuencias para cada una de las categorías. Esta información generada, por ejemplo, mediante una consulta SQL, aquí la vemos, se transforma a base de datos de Pandas y, como base de datos de Pandas, se le aplica el método plot para generar el gráfico de interés. El método plot pertenece a la librería matplotlib que es propia de Python. Ese sería el gráfico de la distribución de vuelos en función de los distintos aeropuertos. Este mismo gráfico se puede modificar, pues si tenemos barras horizontales o si queremos pues representar la información en forma de pastel con los porcentajes de cada una de las categorías. Para las variables cuantitativas, puesto que la representación gráfica es ahora granular, necesitamos ahora trabajar con una pequeña muestra de los datos para observar la forma de los mismos. El hecho es que, sin trabajar con la muestra, los gráficos podrían ser demasiado pesados. Dado que solo queremos observar el patrón de los mismos, simplemente recopilando una muestra de estos datos, podríamos llevar a cabo you una primera inspección de estos datos. En este caso, capturamos una muestra del 10 % de los casos sin reposición. La variable contenida en la base de datos número dos es ArrDelay. Esta base de datos se transforma a Pandas y you podemos aplicar los métodos de representación gráfica para variables cuantitativas propias de la librería de interés. En particular, un histograma, con un número de cortes igual a veinte. Este es el gráfico. Aquí veríamos pues que hay algún caso con un retraso relativamente alto, pero la mayoría de casos se encuentran en esta parte de la distribución. La misma información puede ser resumida mediante un diagrama de cajas o box plot donde lo que vemos son valores mínimo, máximo, mediana, cuartiles y valores aparentemente anómalos. Esta distribución es alternativa al histograma, pero nos proporciona aproximadamente información muy compatible. Aquí terminaríamos la sesión. Recordad que esto serían algunos ejemplos de las herramientas necesarias para explorar la base de datos. [MÚSICA]