Mostrando entradas con la etiqueta S2. Mostrar todas las entradas
Mostrando entradas con la etiqueta S2. Mostrar todas las entradas

2022/07/25

S2 Cierre Semana 2

CIERRE SEMANA 2

Entre las principales dificultades que se presentan en la vida de un científico de datos primerizo resaltan el poder almacenar correctamente su dataset, el poder obtener la información desde un sitio Web y el saber identificar correctamente qué datos son importantes dentro de su conjunto.

Tomando en cuenta las dificultades antes mencionadas, esta semana de curso aprendiste una sencilla solución para cada una de estas dificultades. Primero aprendimos acerca de la librería Pandas para poder representar correctamente las estructuras de datos que usaremos en els programas de Python, así como algunas funciones que estaremos utilizando constantemente. Después, aprendimos a obtener información desde pagina web, filtrando correctamente la información de el principal interés.

Antes de despedirnos, nos gustaría recordarte que la práctica constante te permitirá dominar todos los temas nuevos a los que fuiste bombardeado esta semana, así que no te desanimes si a la primera no dominaste algún tema, vuelve a tu ritmo y date otra oportunidad, verás que los resultados posiblemente sean mejores.

S2 Mini Checkpoint

MINI CHECKPOINT

Uno de los principales retos a los que se enfrenta un científico de datos es el de manipular bases de datos con un tremendo volumen de información.

Debido a que muchas veces el exceso en la información puede deberse a que existen datos repetidos, datos incorrectos o datos anómalos, es necesario que el científico aprenda a identificar correctamente los datos verdaderamente importantes pues facilita el entrenamiento de modelos predictivos y la generación de conclusiones.

En esta subsección se ha aprendido a analizar los datos utilizando Python para facilitar el proceso de limpieza de datos.

S2 Limpieza de Datos Atípicos por Desviación Estándar

LIMPIEZA DE DATOS ATÍPICOS POR DESVIACIÓN ESTÁNDAR

Otra forma muy popular de limpiar los datos es con la desviación estándar.

Entonces van a al cuaderno.

El último elemento del cuaderno.

La desviación estándar es una de las medidas estadísticas más populares y de mayor uso.

Esta medida indica el grado de dispersión alrededor de una media.

La media sería donde se concentra el centro de los datos, y a partir de ahí se agrupan.

Una desviación estándar muy grande indica que los datos a partir de la media están muy dispersos.

Una desviación pequeña indica que están muy concentrados alrededor de la media.

Python puede ayudar a identificar la desviación estándar de un conjunto de datos, a partir de ahí, poder eliminar una desviación, dos desviaciones o tres desviaciones estándar, los datos atípicos y poder eliminarlos.

Entonces, esto se hace de una manera muy muy práctica.

Primero van a utilizar una librería de especial que se llama stats.

Stats es un conjunto de medidas estadísticas las cuales se puede importar directamente a Python.

El sell price que es el costo de las casas y lo va a guardar igual como sp.

Ok, va a utilizar stats y calcular el set score.

El set score es la distribución normal.

Nada más que se llama set score.

Con ello se puede calcular el número de desviaciones estándar por lo cual una medida está por arriba o por abajo de la distribución normal, y eso lo van a guardar como z.

Entonces ya va a dar el número de desviaciones estándar que está arriba o abajo de la media.

Se requiere eliminar los datos que estén muy alejados de la media aritmética que sería el elemento central.

Entonces una división son los elementos que están más o menos dentro de un contexto cercano, dos desviaciones ya están más alejados, tres desviaciones son los elementos que ya están muy muy alejados de la media, entonces estos son los que se quiere eliminar.

Entonces, como el caso anterior van a hacer un filtro, van a decir, todos los elementos que estén por arriba de tres, es decir, tres desviaciones arriba, todos son menores a tres, o sea muy muy abajo, lo vas a combinar y lo vas a seleccionar de sp, y a eso los va a llamar sp clean.

Y similar al caso anterior le va a llamar df  "elimina estos elementos a través de su índice".

Entonces, lo corremos y ya se tiene eliminado un conjunto de datos, el conjunto de datos que se puede considerar atípico.

Al menos para el precio de las casas.

Algo que se puede notar de esto es que aquí quedaron con 1,438 rows, o filas, mientras que en el anterior quedó con 1,399.

En cada una de las diferentes formas de eliminar los valores atípicos funciona de forma diferente por lo tanto no van a quedar los mismos conjuntos.

Esta decisión de cuál utilizar, uno u otro, ya será la que se tiene que hacer más adelante dependiendo del modelo de estudio que se este haciendo.

Dependerá mucho de los resultados que de los modelos predictivos y ese era uno de los posibles ajustes que se puede hacer en caso que se quiera mejorar o empeorar un poquito la calidad de el modelo para estarlo ajustando.

Entonces, con eso concluimos la limpieza datos en Python.

Te invitamos a continuar tratando de limpiar las diferentes columnas que tiene este conjunto de datos, e incluso ir a Kaggle, descargar un conjunto datos diferente y estar probando a estas técnicas.

S2 Limpieza de Datos Atípicos por Cuartíles

LIMPIEZA DE DATOS ATÍPICOS POR CUARTÍLES

Ver lo que son cuartiles y los datos atípicos, para continuar con el proceso de limpieza de datos.

Hay dos formas principales de limpiar datos atípicos que son los datos raros o que salen del grueso de los datos que sería a través de cuarteles o por desviaciones estándar.

Entonces, se maneja lo que es la limpieza por cuartiles.

Entonces, primero hay que definir qué son los cuartiles.

Bueno, los cuartiles son valores que dividen una muestra de datos en cuatro partes iguales.

Generalmente es el 25%, 50% y 75%.

Tres divisiones que generan cuatro segmentos.

Con los cuartiles se puede valorar rápidamente la dispersión y tendencia de los datos, es decir, dice rápidamente cómo está formada la información, cómo se distribuye, diga, en un eje, verdad.

Va a utilizar brevemente una gráfica llamada gráfica de cajas y bigotes.

Va a ver en detalle más adelante, en la siguiente unidad, pero por el momento se puede introducir como que hay una caja donde el grueso de los datos, o sea el 50% de la información, se contiene dentro de la caja.

A partir de ahí salen unas líneas llamadas bigotes normalmente los cuales demuestran el rango de los datos.

La posición de estos bigotes se establece a partir de 1.5 veces el rango inter cuartil.

¿Qué es este rango? Bueno, es el tercer cuartil menos el primer cuartil, eso lo multiplicamos por 1.5 y eso da el rango de nuestra información.

Lo que salga de ese de ese rango de datos lo van a llamar datos atípicos.

Entonces, ¿cómo se ve todo eso que esta mencionando?

Bueno, para ello Pandas va a ayudar y a utilizar una función llamada boxplot.

Si la ejecuta, va a ejecutarla dos veces, ahí está, nos va a dar una gráfica.

Esta gráfica lo pasa como parámetro "precio de venta" que es una columna del conjunto de datos, que indica el precio de las casas en dólares.

Lo dice esta gráfica es que la mayoría de los datos se encuentran entre 120 mil dólares a 210 mil dólares por dar un estimado, esto es lo que se encuentra dentro de la caja.

Este bigote que se encuentra en la linea.

Es decir, 1.5 veces el rango inter cuartil.

Lo que se encuentre fuera de ese rango son datos que se pueden considerar aislados, entonces todos estos datos es posible que requiera limpieza.

Ahora, van a utilizar eso del rango inter cuartil para poder limpiar los datos.

Se va a obtener el precio de venta de las casas y lo guarda como sp para tenerlo más local en vez de estar llamando al conjunto de datos completo, y le va a decir que dé el primer rango inter cuartil.

Entonces, van a calcular límite superior, es decir, hasta dónde llega el primer bigote.

Esto es a partir del tercer cuartil, que es el .75, es decir, este de aquí, le van a sumar el inter cuartil.

Van a calcular el inferior que es el .25 menos el rango inter cuartil.

Entonces, ya se tiene delimitado el límite superior y el límite inferior.

Va a ejecutarlo, y ya los tiene y guardado.

Entonces, ya con estos límites calculados lo que van a hacer es tratar de seleccionar todos los datos que son atípicos, para eso le van a decir a sp que de todos los valores que están por encima de el límite superior, o sea mayor, o igual que el límite superior, recordemos que sp es la columna del sales price, o, un "o" lógico, da todos los valores que están menores o igual al límite inferior y eso lo van a filtrar con sp.

Entonces, lo va a guardar en esta variable sp_clean, y aquí estan todos los valores que son atípicos.

Probemos con alguno, por ejemplo, se tiene este, el 59, que tiene el Id 59, y dice 438,770.

Entonces, si lo buscamos en nuestra gráfica sale del límite superior por lo tanto sí es un dato atípico.

Entonces, Pandas ayuda simplemente eliminarlo.

Le puedes decir al data frame "elimina, con sp_clean, su índice".

Entonces, lo esta eliminando por el valor del Id.

Lo eliminamos, y dan los valores limpios, sin valores atípicos.

Pero recordemos que esto lo hicimos nada más con sells price, no con las demás columnas, entonces esto hay que repetirlo para las columnas que más nos interesen en el estudio.

Con se concluye la limpieza de datos por cuartiles.

En el siguiente tema vera cómo limpiar los datos por una distribución normal.

S2 Limpiando Datos con Python

LIMPIANDO DATOS CON PYTHON

Como Data Scientist no se puede nada más para tomar y eliminar donde faltan datos.

Aquí hay un caso muy específico mencionamos que PoolQC era una columna problemática, ¿por qué? porque tenían 99% de datos faltantes.

Pero, ¿qué significa ese PoolQC? ¿qué es lo que se va a eliminar?

Bueno, abrir el archivo.

Van a dar cntrl+B para buscarlo, se llama PoolQC, y lo encuentra.

Pool Quality, que significan estas siglas, y lo que está diciendo es que van a tener un valor de Ex si es de excelente calidad, Gd si es buena la calidad, TA si es promedio, Fa si es pasable o decente y NA si la casa no tiene alberca, ¿qué es lo que significa para nosotros?

Al tirar toda la columna esa le esta quitando un valor indispensable o irreemplazable a las casas, esta quitando cualquier información de albercas, por lo tanto, las casas que sí tienen alberca están perdiendo un valor agregado, al menos los datos, por lo tanto no se puede eliminar nada más así la columna.

Entonces, lo que se puede hacer es en vez de eliminar los datos faltantes es rellenarlos con algún otro valor.

Se tiene la columna PoolQC, y la va a dar "dame los valores únicos", es así a cada uno de los valores que se encuentran en esa columna, nos va a dar "nan", que es "not a number", "Ex" que es "excelente", "FA" que es "Fair" y "Gd" que es "good".

Ok, está bien, no hubo ningún "TA", no hay problema, pero van a darles valores numéricos.

Van a decir que para Ex es un 4, Gd es 3, TA es 2, FA es 1 y los valores nulos, que lo van a representar con np.nan, van a ser ceros, de esta forma no eliminamos la información de la columna y esta respetándola correctamente como debería ser.

Para ello van a utilizar la función map, le van a decir: a la columna PoolQC le va a aplicar una función de mapeo, donde el mapeo es el que se acaba de construir.

Ahora van a verificar el número de NAs en la columna.

Va a verificar la columna QC dame los elementos nulos y súmalos, y da un valor de 0, y si hace un sample, un sample significa que van a ir a tomar cinco valores aleatorios y los va a imprimir.

Entonces ya hay valores de cero.

Recuerden que el 99% de los datos eran nulos o NA y ahorita ya tiene un valor de 0, es un valor agregado que le esta dando a la columna.

Y en valores únicos se tiene 0, 4, 1 y 3.

Entonces, con eso se puede decir que limpiamos correctamente la columna PoolQC.

Como ese hay otros muchos casos en la base de datos, entonces hay que tener mucho cuidado con qué es lo que esta eliminando.

Se ve otro caso específico.

Se ve la columna "CentralAir".

Esta columna dice si la casa tiene un sistema de aire acondicionado central.

El caso específico es que esto no más tiene dos valores: "sí" o "no", pero en nuestra base de datos lo maneja como "N" y "Y".

Esto no es bueno cuando se quiere hacer modelado, siempre se quiere tener un valor numérico en vez de texto.

¿Para qué? Para que los algoritmos los puedan analizar correctamente Ok, entonces va a volver a mapear los valores se tiene N que le van a asignar un valor de cero, "Y" que le van a dar un valor de 1, entonces hace algo muy similar donde se mapea la columna CentralAir con el diccionario que se acaba de crear "centralAirvalues" y observe tiene el sample, y se tiene los datos correctamente modificados.

Otro caso muy específico.

Se tiene la columna "Electrical".

Esto indica el sistema eléctrico o qué tipo de sistema eléctrico tiene la casa.

Ahora podríamos decir simplemente cambiar los números como fue en el caso de la alberca como 0, 1, 2, 3 y 4.

El problema es que aquí hay una relación directa que relaciona un número con la calidad de la alberca.

Sabemos que el 0, representa lo peor, que es "no hay alberca" y 4 representa la excelencia, una alberca increíble.

En el caso de "Electrical" representa increíble.

Esto, si se recuerda de tipos de variables, se llaman datos ordinales.

A medida que crece el número, incrementa la calidad o incrementa la calidad de la variable.

En el caso de "Electrical" esto no es necesariamente lo mismo.

¿Por qué? Porque "Mix" no representa un valor de 0 o el peor caso, y el "SBrkr", que representa un circuito standard, no representa la excelencia.

No hay un orden en el cual los se puede ordenar en el que se puede decir que va de mejor a peor.

Este tipo de problemas donde se puede asignar directamente un número a un sistema de calidad se lo va a ver más adelante ya cuando este viendo modelado.

Esos se llaman "dummy variables" o "variables dummy".

Por el momento va a usar el mismo tratamiento pero se tiene que recordar en un futuro que esto es un problema y hay que tratarlo.

Para ello va primero a verificar cuántos datos faltan en la columna.

Y hay un dato faltante.

Entonces, hay que rellenarlo de alguna forma.

¿Cómo se lo puede hacer? Bueno, para ello se puede obtener la moda de nuestra columna.

La mayoría de los datos van a ser circuitos estándar, entonces la moda seguramente van a ser de circuitos estándar.

Aquí está, entonces les esta diciendo "dame la moda" de "eléctrico", de la columna "Electrical e imprímela".

Pandas tiene una función muy agradable llamada "fillna" que le van a decir "en vez de eliminar los na, rellénalos con algo", y en el caso específico lo van a rellenar con la moda.

Se puede tomar el promedio o se puede también tomar la mediana.

Cambia un poco dependiendo el tipo de columna que se tenga.

Esta es una columna de tipo de texto, entonces no se puede sacar el promedio de un texto.

Sólo se puede sacar la moda.

Entonces por eso esta utilizando eso aquí.

Se utiliza la moda, se reemplazamos los valores faltantes y ahora si se verifica cuántos números faltan o cuántas celdas faltan, 0.

Si lo hace se saca el valor único, están los cinco valores que marcaba en la descripción, se puede imprimirlos para ver.

Se ve todo correcto.

Entonces, en vez de asignar un número de 0 o 4 lo que se puede hacer es utilizar esta función llamada "astype".

Astype va a convertir una celda, perdón una columna de texto a categorías, y de esas categorías se puede obtener un valor numérico de ellas para no estar usando la función map.

Esto es una forma diferente de hacerlo.

La desventaja es que no se tiene control directo de qué números se asignan a las categorías pero recordemos que eso por el momento no importa, ¿por qué? porque en un futuro van a utilizar variables dummy.

Se ejecuta y se imprime, y ahora sí, le dio un valor de 4 al circuito estándar.

Entonces ya lo sabe tiene un valor numérico, ya se puede procesar más adelante.

En el siguiente tema se va a continuar con la limpieza de datos en este mismo cuaderno de Python.

Va a hablar sobre cuartiles y datos atípicos, que son ¿cómo se distribuye la información de las columnas y los valores que salen de la normal o del conjunto grueso de los datos, los que se podrían considerar datos raros o extraños o mal medidos.
 

S2 Preparando los Datos con Kaggle

PREPARANDO LOS DATOS CON KAGGLE

Descargar los datos que van a utilizar para poder poner a prueba las habilidades de limpieza de datos.

Para ello van a utilizar el cuaderno "limpiando datos con Python", lo van a abrir y aquí nos viene un pequeño enlace, este del conjunto de datos que van a utilizar, lo van a abrir.

Este es un data set disponible por la plataforma Kaggle que habla sobre los precios de las casas, en este Dan las propiedades de muchas casas y Da su precio de mercado o el precio tentativo.

Entonces para ello van a ir a "data" y van a ver un poco lo que nos ofrece.

se tiene dos columnas, por ejemplo, el tamaño del terreno en pies al cuadrado, se tiene el tipo de calle que está enfrente del terreno, se tiene, por ejemplo, el año en que fue construida, el tipo de techo.

Entonces vienen todas estas propiedades de las diferentes casas y al principio se tiene el costo de la casa.

Este es un costo hecho en dólares porque es una base de Estados Unidos, y este...

este conjunto de datos nos ofrece cuatro archivos, nos ofrece el train.csv, test.csv, data_description.csv.txt y samples_submission.csv.

Los que van a utilizar por el momento son train.csv y data_description, este porque tiene, de los dos archivos train y test, el conjunto más grande de datos, y data_description es una descripción de todas nuestras columnas.

Entonces, para descargarlo nos van a ir aquí abajito y aquí viene "download all".

Le van a dar clic y nos van a pedir que nos registremos si no esta registrados o que iniciemos sesión.

Nosotros ya esta registrados, entonces nada más Se inicia sesión.

Nos manda a una página nueva, aquí nada más recargamos, y ahora sí ya se puede descargar.

Digamos que aceptamos.

Le damos que aceptamos y otra vez volvemos a regresar y ahora sí le damos descargar, y nos descarga el archivo.

Al archivo que nos descargó le van a dar mostrar y lo se tiene aquí.

Lo descomprimimos.

Extraer, y ahora sí, se tiene els archivos que mencionaba en la página.

Ahora, le damos ctrl+c, o le damos clic derecho, copiar, y nos van a els...

nuestra libreta, que lo tengo en el escritorio, cuadernos y data.

Entonces, aquí lo van a pegar y listo, ya se tiene els datos.

Ya se tiene els datos listos para ser procesados, entonces van a iniciar con ello, van a importar Pandas y Numpy, ya se sabe cómo se hace: es import pandas as pd e import numpy as np, y van a leer el archivo.

Lo se tiene en nuestra carpeta data, house-prices-advanced-regression-techniques, diagonal train.csv, y le van a decir que la columna índice es la cero, lo se puede verificar en el archivo, lo van a abrir en excel, ok.

Nos abre todo el conjunto de datos, nuestra columna índice es la columna 0 y toda la demás es nuestra información, si se fijan es un archivo grande.

Entonces, van a cerrarlo y van a analizarlo con Pandas.

Primero, lo primero que hay que hacer es analizar la forma de este conjunto de datos, entonces para ello Se utiliza el .shape, .shape nos dice que tiene 1,460 registros y 80 columnas, entonces ya nos empezamos a dar la idea las proporciones de este conjunto de datos.

Entonces van a imprimirlo van a utilizar df.head y esto Da algunas de las columnas, esto para darnos una idea de cómo están formadas, entonces ya nos está dando un tipo de clase, una zona, una área del terreno, entonces nos empieza a dar todas estas columnas.

Entonces, lo que se puede hacer a partir de ahí, aparte analizarlas una por una, es empezar a describirlas.

Describirlas nos van a decir datos generales de el conjunto de datos.

se tiene el conteo la media, la desviación estándar, el valor mínimo, el valor...

el primer cuartil, el el segundo cuartil, el tercer cuartil y el valor máximo, ok.

Entonces con eso se puede empezar a entender un poquito más la información.

Aquí puede saltar a la vista que aquí dice 1,452 cuando todos los demás dicen 1,460.

Entonces ya nos empieza a dar algunas pistas.

Seguramente de valores faltantes en esta columna.

Entonces van a a...

entonces va a, a partir de ahí, a hacer el primer paso que hay que realizar, que es ver si hay elementos repetidos.

Para ello Pandas Da una función muy...

muy amigable la cual se llama drop_duplicates la cual nada más la se ejecuta Pandas van a buscar si hay registros que están repetidos y si los hay los van a eliminar.

Entonces, lo aplicamos y le van a dar .shape para ver cuántos registros quedan y quedan 1,460 con 80 columnas, o sea, el mismo tamaño.

Entonces, para este conjunto de datos en particular no hay...

no hay filas repetidas.

Bueno, lo segundo sería cómo empezamos a eliminar los valores faltantes porque el objetivo de la limpieza de datos es eliminar todos los elementos que no nos sirvan y los elementos faltantes.

¿Por qué? Porque esto nos puede traer problemas a la hora de modelar y tratar de hacer predicciones.

Entonces Pandas Da la función "Drop NA" que van a eliminar los valores no numéricos, es decir, todos los valores faltantes.

Entonces, lo se ejecuta y Da cero rows.

¿Por qué? Podríamos decir que nada más se quiere eliminar los datos faltantes.

Bueno, en realidad lo que pasa es que en este conjunto de datos en específico hay al menos un dato faltante por cada una de las casas, ese un problema si se trata de usar Drop NA porque simplemente nos van a tirar todas las casas y van a quedar un conjunto de datos tamaño 0, entonces es problemático, no lo se puede usar directamente.

Entonces, para ello van a hacer alguna técnica especial, que es, primero, determinar cuáles columnas tienen valores nulos, las van a hacer una suma de todos sus valores.

¿Por qué? porque si se ejecuta directamente, aquí lo voy a cortar.

Esto lo voy a cortar para imprimirlo, entonces si usamos df.isna nos van a dar una matriz con verdaderos y falsos.

Entonces, un True indica que es un valor que falta y False es un valor que ahí está.

Entonces, si nosotros hace la suma por columnas nos van a decir por cada columna cuántos valores faltan.

Esto lo voy a regresar como estaba, le voy a decir "para cada uno de los elementos que faltan súmalos por columnas y ordénalos", y eso lo van a multiplicar por 100 para sacar el porcentual.

Entonces, lo se imprime.

Esto nos van a decir que la columna PoolQC, ahorita no se sabe que es, van a averiguarlo más tarde, el 99% de sus rows tiene un valor nulo o faltante, entonces sólo por esa columna esta ordenando la mayoría de el conjunto de datos.

Entonces, van a eliminar todas las columnas que nos están dando problemas que son todas estas de aquí y ya nos liberamos de todo...

de cualquier problema.

Ahora...

entonces, van a usar drop na, pero ahora la diferencia es que van a usar eje igual a 1 (axis=1), el valor de default es eje igual a 0, que...

es decir, van a buscar a través de rows y con axis igual a uno van a buscar a través de columnas.

Lo hace, y ya Da sin ningún problema 1,460 rows, o sea, casas, y 61 características.

Entonces, ya eliminamos varias columnas y Da el conjunto de datos.

S2 Qué es la Limpieza de Datos

¿QUÉ ES LA LIMPIEZA DE DATOS?

Los principales retos a los que se enfrenta un científico de datos es la de la manipulación de bases de datos con un tremendo volumen de información debido a que muchas veces el exceso de la información puede deberse a que existen datos repetidos datos incorrectos o datos anómalos.

Es necesario que el científico aprenda a identificar correctamente los datos verdaderamente importantes pues facilita el entrenamiento de modelos predictivos y la generación de conclusiones.

Antes de que se puede comenzar a analizar y manipular los datos extraídos de cualquier tipo de fuente de información es necesario realizar una apropiada limpieza de datos.

En este curso aprenderemos a identificar, y posteriormente, omitir o eliminar todos aquellos datos que sean considerados incorrectos inexactos o no pertinentes para el caso de estudio.

El llevar a cabo el proceso de limpieza de datos nos permite asegurar la calidad de los datos que procesaremos, nos ahorra espacio de almacenamiento y nos asegura un proceso de toma de decisión correcta.
 

S2 Usando Beautifulsoup

USANDO BEAUTIFULSOUP

Para la Web Browser abrir el navegador y manejar en diferentes pestañas, se utiliza la librería Request y para descargar información desde Internet.

Para utilizar la librería "Beautiful Soup".

Beautiful Soup es una ayuda para entender las páginas Web directamente sin tener que descargar los datos y sobre todo, leer páginas en las que no es posible descargar un archivo directamente.

Abrir la libreta beautiful soup.

Se encuentra en la carpeta que ha estado usando, en mi caso está en el escritorio, en su caso estará donde hayan descargado los archivos anexos.

Entonces, abrir el archivo beautiful soup.

Entonces, el caso de estudio, van a ver qué pasaría si se quiere leer la información de Wikipedia.

En específico las películas con mayor recaudación de la historia.

Esta es la página web que se tiene seleccionada, y se tiene, si se fijan, un archivo o más bien un documento de Wikipedia.

El documento de Wikipedia tiene un poco de historia, habla de la película 'Avatar' por ejemplo.

Entonces tiene mucho texto, tiene algún índice que es una tabla y aquí empiezo a tener ya más tablas, ya con la información que se quiere extraer.

Entonces, ¿cómo le hace para obtener esta información?

Si se analiza como si fuera Yahoo finance, se buscaría un archivo de descarga, pero en ninguna parte de todo el artículo de Wikipedia viene una descarga.

Entonces, ¿cómo le hace? Ahí es donde entra Beautiful Soup.

Beautiful soup lo que van a hacer es: leer esa página a través de la librería Request y le van a tratar de entender y adaptarlo a una forma en la que nosotros se puede manipular de forma directa.

Entonces, van a utilizar otra vez Request.

Request, obtiene la página.

Con eso se puede imprimir el texto que se acaba de leer con un res.text.

res.text viene toda esta información que no es entendible a nosotros a primera vista.

¿Dónde viene? Bueno, si se regresa a la página de Wikipedia y le da inspeccionar verá que se empieza a seleccionar partes de la página web.

Este es código html.

Tal vez no es entendible para todos si no se tiene experiencia en él pero aquí viene la codificada de toda la información de la página.

Entonces, request lo que hace es imprimir toda esa información que esta leyendo de la página.

Entonces, hay que manipularlo de alguna forma, entra beautiful soup.

Lo importamos de beautiful soup, import beautiful soup, y lo va a devolver en la variable bs4.

¿Por qué? Porque es la versión 4.

Entonces, va a decir beautiful soup, y le van a pasar como parámetros el resultado anterior, el request, y lo va a guardar en la variable soup.

Esto va a enviar la información de Wikipedia, la va a analizar y la va a estructurar de una forma en la que se pueda empezar pedir los elementos que se requiere.

En particular estas tablas de aquí, si le damos clic derecho vienen en unos elementos llamados table.

Table es lo que va a manejar toda la información que se quiere extraer.

Entonces se le se puede decir "beautiful soup, dame todas las tablas", y lo guarda en la variable table.

Entonces si se imprime empieza a dar un montón de información.

Si se fijan ya está un poquito más estructurado a diferencia que nada más que es un montón de texto que no tiene forma y aquí ya nos empieza a decir, por ejemplo, si me voy hasta arriba nos dice "película", "distribuidora", "taquilla", "recaudación mundial", todo esto son las columnas, el títulos de la columna y toda la información que se quiere y lo está dando beautiful soup.

Entonces, ¿cómo se puede procesar para entenderlo de una manera visual? Bueno, ahí es donde van a utilizar una librería que ya hemos estado usando llamada Pandas.

Con Pandas lo que va a hacer es importar y le va a decir "lee este código o este html", que es con lo que se fabrican las páginas web, y precisamente eso es lo que tiene beautiful soup en su información, es lo que esta construyendo.

Entonces le van a decir "Pandas, lee html" y le va a pasar "table".

Entonces le va a tardar un poquito en procesarlo porque está cargando Pandas, y ahora sí, ya está.

Ahora, esto a diferencia de las funciones que se ha utilizado como read csv o read excel, en realidad da una lista de data frames.

¿Por qué? Bueno, porque puede ser que la página en realidad esta pasando múltiples tablets, no nada más una, entonces va a crear un data frame para cada una de las tablas que encuentre en la página.

En el caso de la página de Wikipedia, por aquí se tiene una tabla, aquí se tiene otra tabla, otra tabla, otra y así continúa.

Entonces, hay múltiples tablas en ese documento, por lo tanto no va a analizarla, nada más la primera.

Entonces le van a decir "dame el primer data frame y lo renombramos como df"

Y ese se va a imprimir.

Y ahí está, está dando el índice de la película, el nombre de la película, la distribuidora de taquilla, y ya está dando en forma estructurada, y lo obtiene la librería Pandas y va a facilitar todo lo que es eliminar columnas, eliminar filas, filtrar datos, entonces ya lo tiene de una manera muy organizada para nuestra utilidad.

Con eso concluye la unidad, en la siguiente unidad vera cómo manipular la información que tiene en Pandas para poder eliminar información repetida, limpiar información que no funciona para el análisis y poderla manipular para dejarla lista para poder hacer un modelado de información.

S2 Usando Request

USANDO REQUEST

Analizar lo que es la librería Request.

A diferencia de Web Browser que solamente sirve para abrir páginas, en este ya se puede interactuar con la web y empezar a descargar documentos y poderlos analizar en la máquina.

Para ello ya se sabe cómo abrir Jupyter.

Leer un poquito lo que es la librería request.

La librería es el estándar para realizar solicitudes http en python.

Es con esta librería que se puede resumir las complejas actividades que se utilizara al leer páginas web con comandos simples para que como desarrolladores, se pueda enfocar solamente en lo que se quiere realizar y no estar batallando leyendo a datos desde internet.

Entonces, para ello va a utilizarla.

Se importa simplemente escribiendo "import request".

Esta librería, como ya instalo anaconda, todo eso ya viene instalado de default.

Si estuvieron usando Python básico tendrían que instalarlo de alguna otra manera, ok.

Entonces, va a descargar un archivo de internet.

Va a copiarlo y verlo en otra pestaña de el navegador a ver qué es.

Rápidamente se puede dara cuenta que en realidad es la obra de William Shakespeare, Romeo y Julieta.

Desde Python se puede acceder a Internet, descargar esa obra y poder manipularla.

Lo va hacer simplemente usando "request.get", y la página que interesa.

Eso lo va a abordar en la variable "res".

Si la imprime ¿qué contiene? Response [200].

Ese response es el código de error que nos ofrece el navegador.

200 nos está diciendo que es un código correcto, es un ok.

Valores de 400 son valores de error.

Entonces, no se tiene que memorizarlo, simplemente se puede utilizar los que ya están guardados en Python.

Entonces le se puede decir "res, dame tu estado de código, o el código de estado".

Si esto es igual a un ok pues "imprímelo" y va a dar "true".

Entonces, la descarga del archivo fue correcta.

A partir de eso ya se puede hacer predicciones como por ejemplo, tener la longitud del archivo.

y aquí dice que es de 178,000 palabras, o sea es un archivo grande.

Grande en el contexto de un texto, pero no es grande en el contexto de mega bits, o el tamaño del físico del archivo.

También se puede imprimir la obra.

Si le se pone print(res.text) Da lo mismo que se tiene en la otra pestaña.

Ahora, como data scientist pues tal vez no nos sirva mucho la obra de Romeo y Julieta.

Entonces, nuestra aplicabilidad va más allá de ello.

Por ello va a utilizar un ejemplo de la bolsa de valores.

La bolsa de valores se la puede analizar a través de yahoo finance.

Yahoo finance tiene una plataforma en la que te está dando constantemente valores actualizados de cómo abrió la bolsa, cómo cerró y cómo están las acciones en la bolsa.

Por ejemplo cemex.

Esta tabla, si la abrimos, que abre en excel, va a da los valores del 7 de julio de 2018 hasta el 5 de julio de 2019.

Entonces nos está dando aproximadamente un año, si se quiere más datos.

Bueno, para ello se puede descargar los datos directamente desde Python y especificar el rango de fechas que se requiere.

Esta solicitud que yahoo espera para poder procesar los datos, y está pidiendo tres cosas: uno, el periodo 1, o sea, el inicio, el periodos 2 es el final, el intervalo, que es un dato excel que no esta considerando por el momento, y aparte es éste crumb, que es una variable interna que usa yahoo.

Ahorita lo van a descubrir cómo procesarla.

Esta es la dirección que interesa.

Entonces, van a usarla desde desde Python.

Ya se sabe que se tiene tres incógnitas.

Una, la fecha inicial, y otra es la fecha final.

Entonces, hay que procesarlas de alguna manera.

Python ayuda dando la librería "datatime".

Ésta va a ayudar a todo lo relacionado con fechas y la va a estar usando constantemente cuando requieran algo que utilice alguna fecha de algún tipo.

En la nomenclatura clásica es utilizarlo como "dt".

Si Se utiliza dt con la función "utcnow" va a dar la fecha actual.

Entonces, ahí está, no hay ningún problema.

Ahora, pero yahoo en realidad no nos está pidiendo una fecha de esa forma, no nos está pidiendo año, mes, día.

Lo que está pidiendo es el time stamp.

Este es un valor numérico que mide el número de segundos a partir de una fecha determinada.

Entonces con esto no se necesita calcularlo directamente sino Python lo calcula por nosotros.

Entonces se tiene lista la fecha (para dar la fecha actual).

Tal vez se necesita un periodo preestablecido o tal vez hace un año o hace dos años.

Entonces, para ello van a definir fechas concretas.

Va a decirle que la fecha de inicio va a ser el 1 de enero del 2017 y la fecha final el 1 de enero de 2019.

Para ello lo va a procesar con la librería de dt y va a usar una función especial que se llama striptime, que lo que va a hacer es convertir un string a un formato daytime, y eso al final lo van a convertir a un timestamp, que son los segundos desde 1970 y algo, no tengo el dato.

Entonces lo procesa y ahora eso lo se quiere convertir a un valor numérico porque lo da como string.

Eso lo hace a través de la función int.

Va a imprimirla para ver qué nos está dando.

Start da este valor y va a usar finish.

Da un valor más grande, es lo único que se tiene que saber.

Start van a ser antes y finish van a ser después.

Ahora sí, ya esta listos para empezar a tratar de recibir los datos de yahoo finance.

Por ahí van a usar la librería request y en esta página en especial van a usar una función llamada "session".

Con la sesión le va a decir a yahoo "hey, soy yo, guarda mis datos por el momento" y a partir de ahí van a ir a descargar los datos.

Hay otro valor que quedaba pendiente que es la acción que va a analizar, que era cemex.

cemexcpo.

Entonces, van a guardarla en una variable.

Ya se tiene como stock.

Y ahora, la url primero nos dice que se tiene que visitar esta página, recargar, esta página para después darle clic a descargar los datos.

Entonces, se tiene que editar esa página primero y para eso va a ser útil la sesión.

Si nota que se le quite esta última parte que es el signo de pregunta, no importa, como quiera la carga.

Entonces se utiliza como url.

Si recuerdan cuando se pone corchetes abiertos y cerrados ahí inmediatamente se puede reemplazarlo ese valor, esos corchetes, con lo que tengamos afuera, o sea, en este caso el stock, por la función format.

Entonces, si lo hace de esta forma y le da visitar "s.get(url)", entonces esta diciendo a request "visíta la página financeyahoo.com con el stock cemex y trae esos datos, y esos datos dicen "200", ya visitó la página correctamente.

Ahora van a guardarlo en una variable.

Va a utilizar la variable de "res", la utiliza para descargar "Romeo y Julieta", pero ya no la se necesita.

Va a sobrescribir.

Entonces, en res ya se tiene la respuesta de visitar la página de yahoofinance.

Ahora se tiene que darle descargar los datos pero para ello recuerden que se tiene una variable pendiente, era el crumb.

El crumb es un valor que se va a generar cada que se visita la página.

Entonces, hay que retomar ese valor de la sesión.

Si se imprime esta respuesta, .text, en realidad trae un montón de datos de información que al principio no es muy comprensible para el humano, es código para el navegador, entonces si con el navegador le damos ctrl+F abre la función de buscar, y va a buscar la variable "CrumbStore", y da un valor.

Este es el que esta buscando para pasárselo a la página web.

Entonces, ¿cómo se puede retirar este valor de todo este montón de cosas que no se sabe qué significan? Bueno, para ello van a usar una función "RegEx", en específico se llama "re".

Con "re" va a encontrar todas las coincidencias de un conjunto de caracteres específicos.

Como esta buscando y más en específico el valor que está dentro de comillas, lo que van a hacer es: va a decirle "encuentra todos los fragmentos de código que coincidan o de texto que coincidan con esta forma" fija el valor específico que esta buscando, lo tiene entre paréntesis con un punto, un signo de más y una pregunta.

Lo que eso quiere decir es: vas a encontrar los puntos, que son cualquier carácter alfanumérico, un más, que quiere decir al menos un carácter alfanumérico y con la menor cantidad de caracteres posibles.

De esta forma cuando lo se ejecuta va a dar una lista con todas las veces que encontró ese valor que esta buscando, y como se quiere la primera vez que lo encuentre, o sea, el cero, pues simplemente lo accedemos con ese valor.

Este valor es igual al que esta buscando en el conjunto de texto.

Ahora van a hacer la consulta y la página con todas las variables ya localizadas.

Entonces, recuerdes que la ruta que esta buscando tiene el primer periodo, el segundo periodo y el crumb, que es la variable especial que está pidiendo Yahoo.

Se tiene esa consulta donde el periodo 1, el periodo 2 y el crumb se lo reemplaza, ¿por qué? por el inicio, el final y el crumb.

Si notan, donde deberían ir los periodos está ":d".

Simplemente le esta diciendo que ahí va un valor numérico.

Entonces la guardamos como "api", y la "api" la va a obtener con la sesión, y la va a guardar como resultado 2.

Entonces lo van a ejecutar y se imprime, y da la información que esta solicitando.

Ahora, pero así es un poco difícil de leer y si se dan cuenta hay unos /n.

/n en archivos de texto quiere decir salto de línea, entonces, tiene una forma muy extraña para poderlo leer.

Entonces aquí es donde viene Pandas al rescate y va a ayudar para poder manipular esta información y leerla de una manera muy natural.

Entonces van a importar Pandas y ahora sí.

Una vez que cargó van a utilizar la función read_csv.

read_csv, si recuerda, va a tomar los archivos separados por comas y los van a manipular en un data frame.

Ahora, pero aquí hay una curiosidad.

El archivo csv no lo se tiene guardado en el archivo.

Entonces, ¿cómo le hace para pasarlo de memoria a un Pandas? Bueno, para ello se puede utilizar esta función "pd.compat.StringIO".

Le esta diciendo que el input y output (IO) va a ser una variable string, ¿qué variable string? pues ya la se tiene, es res2.text.

Entonces, se ejecuta y se imprime, y listo, se tiene el conjunto de datos ya organizado a través de un data frame que tiene filas y columnas.

El request es una librería muy útil a la hora de estar leyendo datos de Internet donde ya vienen más o menos preparados y se puede jalar y tabular de forma que ya se puede aplicar todas las funcionalidades que ofrece Pandas.

En el siguiente video van a utilizar beautiful soup el cual nos van a ayudar cuando no se puede descargar el archivo como nos lo permite yahoo.

Si yahoo no permitiera esta opción tendríamos que leerla directamente de la página web.

Entonces para ello nos van a servir beautiful soup.

Los espero en el siguiente video.

S2 Usando Webbrowser

USANDO WEBBROWSER


Se empieza a analizar Python en la Web, cómo se utiliza y los usos de este.

Para esto van a abrir Jupyter una vez más, ya se sabe cómo hacerlo.

se escribe inicio, jupyter, le damos un enter, esto nos abre la terminal, se espera unos momentos y nos termina de abrir en el navegador.

Ok, ahora van a ir a el cuaderno de paython.

Para ello en mi caso está en el escritorio, cuadernos.

En su caso van a estar en donde lo hayan descargado y van a ir directamente a web browser.

Esta es la primera de tres librerías importantes que van a utilizar para python en la web y esta es una librería muy sencilla, y la única función de esta librería es abrir un navegador web.

Entonces, nosotros lo se puede utilizar cargándolo con import web browser, y van a leer un poquito lo que dice aquí: el módulo web browser proporciona una interfaz de alto nivel para permitir la visualización de documentos web a los usuarios.

En la mayoría de los casos simplemente basta llamar a la función open desde este módulo.

Entonces, para ello ya una vez que la se tiene importada van a utilizar la función open y le van a decir la página web que se quiere abrir, y nos van a abrir otra pestaña.

Es así de sencillo.

se puede cambiarlo por kdnuggets por ejemplo, que es una página muy importante en el desarrollo de data science, o se puede cambiarlo por kaggle y ejecuta sin ningún problema.

Ahora, ¿para qué nos podría servir este tipo de librería? Bueno, la principal utilidad de esta es cuando nosotros estemos haciendo algún procesamiento de data scientist y quiera compartir los resultados con el usuario pues se puede utilizar este para abrir los resultados a una manera más cómoda a través de páginas web.

Claro, tendríamos que diseñar nuestra página web y poderla compartir.

Pero esa es la principal aplicación de la librería.

En el próximo video van a ver cómo interactuar ya una vez con las páginas web.

S2 Web Scraping

WEB SCRAPING

El internet se ha vuelto el medio más popular para compartir información entre personas.

No solamente tú compartes información con tus conocidos a través de las redes sociales sino que las empresas se comparte masivas cantidades de información con sus clientes o con la población en general.

Lo anterior causa un problema cuando se pretende extraer información desde una página web debido a su gran tamaño.

En esta subsección de tu curso te presentaremos el término Web Scraping en conjunto con prácticas donde utilizarás python.

El webs scraping es una técnica utilizada para extraer información de los sitios web de forma automatizada.

Utilizaremos python para realizar el proceso webs scraping para posteriormente estructurar, almacenar y analizar los datos extraídos.

Gracias al web scraping se puede obtener grandes cantidades de información de manera casi inmediata y así se puede generar programas que nos permitan tener una presencia masiva en redes sociales, obtener datos estadísticos sobre la opinión y preferencias del mundo respecto a un tema entre otras muchas aplicaciones.

2022/07/24

S2 Trabajando con Series

TRABAJANDO CON SERIES

Lo que es una serie de tiempo en realidad es una extracción de una columna de un conjunto de datos, pero puede servir para representar casos a través del tiempo.

Por ello el nombre de series de tiempo.

Pueden ser simplemente cosas que vayan de forma incremental o hay un orden preestablecido.

Abrir el cuaderno de Python llamado "Series" y va a ir a Jupyter, y lo abre directamente.

Una vez cargado, va a leer un poco lo que es la serie de tiempo.

Una serie de tiempo es el conjunto de datos estadísticos observados y recopilados durante intervalos regulares de tiempo, tratando siempre de conservar que sean los mismos intervalos entre dato y dato.

Por ejemplo, en una serie financiera sería tal vez cada hora, cada día, cada mes, pero siempre que sea el mismo intervalo.

Hay veces donde no se puede garantizarlo, por ejemplo, hay series financieras donde descansan sábados y domingos, entonces hay un salto de lo que sería diariamente de lunes a viernes y hay un salto del viernes al lunes.

Pero siempre se trata de conservar ese intervalo de tiempo.

La información puede ser registrada de forma diaria, semanal, semestral o en un intervalo definido por el investigador.

Aprenderá a trabajar con series utilizando la librería Pandas.

Va a utilizar import pandas as pd como lo ha utilizado regularmente y utilizar la función llamada "read_csv".

Esto va a permitir cargar el conjunto de datos en Pandas.

Va a utilizar el conjunto de datos llamado "enfermedades del corazón" y asignar sobre la variable "df".

Luego se ejecuta y se puede visualizarlo a través de "df.head".

Para ejecutar se utiliza shift+enter.

También lo pueden desde acá arriba pero a mí me gusta porque es una forma cómoda de hacerlo.

Aquí se tiene un conjunto de datos, se tiene la edad, el sexo, entre otros datos.

Una serie en realidad lo que es, en el contexto de Pandas, una de estas columnas.

Si se selecciona "df.age", o edad, e se imprime la cabecera nos van a decir que el primer dato es 63, 37, 41, 56 , luego 57.

Nos imprimió 5 datos porque esta usando la función head que viene por default dar 5 valores o predeterminado.

Entonces aquí nos van a decir que esta serie se llama "edad", como se llamaba en el conjunto de datos, es del tipo entero.

Se puede verificar que sea una serie utilizando la función "type" o tipo, y va a pasar como parámetros "s", que es la serie de tiempo que se acaba de guardar.

Y efectivamente dice que Pandas, de su núcleo de operadores, existe una serie y este elemento de aquí, la "s", pertenece a una serie.

Entonces nos está diciendo efectivamente que es una serie.

La forma más fácil de contextualizar la serie de tiempo o la serie dentro del machine learning es ubicarlo como si fuera una columna en un conjunto de datos y generalmente al hablar de series de tiempo, en vez de que éste sea un índice de 0, 1, 2, 3, sea una fecha.

La fecha es un poquito más difícil de trabajar, ya estará viendo más adelante.

Pero simplemente van a considerarlo como si fuera una columna.

A partir de esto se puede decir "dame la media, el máximo, el mínimo y describe de la serie" que da todos los valores más los inter cuartiles.

Se puede resumir una serie de tiempo como una secuencia de datos, observaciones o valores medidos en determinado momento y ordenados cronológicamente, y se puede visualizar como una columna de un conjunto de datos, al menos en Pandas.

También permite graficarla.

Va a usar matplotlib, que van a gráficar dentro del mismo cuaderno, y grafica plot, la variable "s".

Lo que van a producir este conjunto de datos donde se tiene como "x" el índice y como "y" la edad.

La edad salta por todos lados, ¿por qué? porque no esta ordenado por edad pero esto da una introducción a cómo podríamos graficar una serie.

Espero les de una pequeña idea de lo que es una serie, que es en realidad algo muy sencillo de utilizar y la verdad es algo que se encuentra dentro de un data frame.

Generalmente va a estar utilizando los conjuntos de datos totales y no estas columnas individuales pero es bueno conocer ese concepto.
 

S2 Qué es una Serie

¿QUÉ ES UNA SERIE?

El concepto de series de tiempo las cuales son una secuencia de observaciones sobre intervalos de tiempo separados de manera regular.

Eventos como la producción de cada día de una planta, la población década por década de un estado, las inversiones en la bolsa o sucesos que pueden ser observados durante continuos intervalos de tiempo, son los ejemplos básicos de las series de tiempo.

Se continuara trabajando con la paquetería Pandas pero ahora se utiliza las estructuras de series para representar y manejar por medio de Python diferentes series de tiempo.

S2 Leyendo Diferentes Tipos de Fuentes

LEYENDO DIFERENTES TIPOS DE FUENTES

Se vio cómo utilizar Pandas para leer conjuntos de datos.

Ahora van a leer un archivo diferente que son los archivos de excel.

Entonces, para ello van a utilizar un cuaderno de Python llamado "diferentes tipos de archivos con Pandas".

Es un cuadro muy chiquito, entonces sólo es una breve introducción a cómo van a leer diferentes tipos de archivos.

Se utiliza: import pandas as pd.

Se recuerda que esta es una convención el pd, no es necesario pero es una forma agradable de llamar a utilizar Pandas.

Le damos pd.red_csv y lo lee sin ningún problema.

Ahora, pero hay conjuntos de datos donde el índice que se tiene aquí para las líneas ya está marcada en el conjunto de datos.

Entonces van a modificarlo para ver la diferencia de cómo se debería leer.

Para ello ir a la carpeta de archivos donde se tiene cuadernos y data.

Lo van a abrir con la aplicación de excel para poderlo modificar rápidamente.

Entonces van a agregar una columna que van a ser el índice.

No le se pone ningún título y lo van a completar, si nosotros se selecciona los primeros dos renglones y le damos clic en el cuadritos se van a autocompletar.

van a guardar y van a sobreescribir en el archivo.

Nos van a preguntar si lo que se quiere sobreescribir y simplemente le damos que sí.

Ahora ya no se necesita excel, van a cerrarlo.

Ahora el archivo ya debería estar modificado se puede abrirlo con un lector de notas para verificarlo y ahí está, se tiene el índice 1, 2, 3, y se tiene el primer elemento separado por una coma.

Si se lee esta columna que se acaba de agregar.

Nos la van a marcar como que le falta un valor, un nombre de columna, y aparte nos dio un índice que no es el original que tenía el archivo.

Entonces cómo se arregla eso, bueno, para ello van a ver la documentación de Pandas.

Es lo más importante que debemos estar haciendo a la hora de resolver problemas que no se sabe.

Entonces van a abrir el navegador y van a escribir read_csv y agregar Pandas.

Entonces lo primero que van a mostrar es la documentación.

Si le da click van a empezar a dar todos los parámetros que se puede utilizar, en la función read_csv, y una muy importante es la llamada index_col.

index_col le dice a Pandas cuál de las columnas van a ser utilizada como índice.

Entonces le va a decir que index_col.

index_col es igual a la columna número 0.

Ahora Pandas no leen únicamente de archivos csv, también se le permite leer a través de archivos de excel y la función para ello cambia de csv a excel, es muy sencillo.

Ahora el archivo que van a leer xlsx, que es la extensión de todos los archivos de excel.

Va a leerlo y va a decir aquí que hay un caso similar donde la primera columna es el índice y lo está leyendo mal, entonces de forma similar se puede utilizar el index_col y le se dice que la columna es la 0.

Si se fijan no se termina de escribir el parámetro index_col, simplemente escribí index y el tabulador, tabulador es la tecla que está al lado de la Q, del lado izquierdo, y él les van a autocompletar directamente.

A parte de estos métodos de read_csv y read_excel existen otros archivos que Pandas lee con una facilidad muy grande, y esos archivos los puede ver en la documentación oficial.

Si se fijan aquí al lado izquierdo viene input, output y dice todos los tipos de archivos que puede leer.

Entre los más populares está el csv, el excel, se puede leer de páginas web, puede leer SQL que es el lenguaje para consultas a base de datos e incluso, servicios más recientes como es el google BigQuery que vera más adelante.

Entonces, esta introducción de cómo se puede manipular Pandas para leer diferentes tipos de información y hacerlo de una manera muy intuitiva.

S2 Indexando en Panda

INDEXANDO EN PANDA

Los datos que descargo, se van a leer con la aplicación Pandas.

Para ello se va a utilizar Jupyter, ya se sabe cómo abrirlo, se escribe Jupyter en el inicio, se espera a que cargue.

Pandas es una librería que permite leer y manipular los datos de una manera eficiente y el principal elemento con el que van a trabajar a la hora de utilizar Pandas es el data frame.

Para utilizar Pandas se necesita importar con la instrucción: import pandas as pd.

El pd no es realmente necesario pero ya es un estándar en la comunidad de científicos de datos donde ya se sabe que se refiere a Pandas.

Entonces se recomienda utilizar esa nomenclatura.

Ahora, para leer la información en realidad es muy sencillo, Pandas ya viene listo para leer esa clase de información.

Entonces Pandas tiene una función muy específica que se llama leer, guión, .csv.

Si se quiere leerlo solamente con heart.csv, el archivo debería estar en la misma carpeta pero no lo está.

Está en una carpeta interna que se llama data y luego heart-disease-uci.

Entonces hay que ver los datos qué es lo que leyó realmente.

Bueno para eso se tiene la función head.

La función head trae las cinco líneas superiores.

Entonces con ello se puede visualizar la forma del data frame.

Se tiene edad, sexo y otros conjuntos de columnas además de filas o registros.

Bueno, se puede comprobar que eso está abierto correctamente abriendo el archivo con un editor de texto.

El archivo original viene de esta forma: tiene edad, que es la primera columna, sexo y las demás columnas separadas a través de comas, y a partir de ahí viene un registro de todos los individuos que pertenecen a este estudio.

Pandas lo que hizo fue, quitar todas esas comas y lo preparó de una forma simple para poderlo describir.

Pero los datos por sí solos no nos sirven de mucho hay que tratar de entenderlos como científicos de datos.

Para ello se tiene la función describe que van a tomar las columnas y las trata de describir con algunos parámetros, por ejemplo, si lo se ejecuta da el count el cual nos van a decir cuántos registros tiene esta columna.

Se tiene el promedio, se tiene la desviación estándar, el valor mínimo, se tiene el primer cuartil.

El primer cuartil, el último cuartil y el valor máximo.

Entonces, todos estos son valores que ayudar a dar una idea de qué es lo que está representando el data set.

Así como se tiene la estructuras de datos y se puede quitar algunos elementos, Pandas ayuda a eliminar registros.

Se tiene df, drop.

Drop la traducción sería tirar, soltar.

Entonces lo que hace es eliminar el registro 1, que si se recuerda acá se tiene 0, 1, 2 y en el data frame resultante ya no se encuentra ese valor 1.

Entonces, es muy fácil eliminar registros con Pandas, pero tal vez también se tiene columnas que no son muy efectivas, no nos sirven para el análisis, entonces también las se puede eliminar.

Se utiliza la misma función drop pero le se dice que el eje no van a ser el cero, el cero son las rows, o las filas.

El axis 1 se refiere a las columnas.

Entonces lo se ejecuta y si se dan cuenta ya no existe la columna cp que la se tiene anteriormente.

¿Cómo se puede estar manipulando la información de una manera más eficiente?

Bueno, para ello se tiene las funciones loc y iloc.

La función loc, lo que permite es poder acceder a los elementos a partir de su etiqueta.

La etiqueta de una row o de una fila es el valor numérico que se encuentra aquí de este lado.

Ahora, eso puede cambiar entre conjuntos de datos, hay conjuntos de datos que en lugar de números tienen nombres de personas o ciudades entre otras cosas.

Entonces, no se dejen guiar de que en este problema se tiene valores numéricos.

Además se puede utilizar el loc, iloc lo que permite es acceder a través de su posición, no de su etiqueta.

Entonces, aquí lo que esta diciendo dame los valores de 0 a 3.

Este es el principal mecanismo de acceder.

Para acceder a los datos con un data frame: a través de la función loc y iloc.

loc se va sobre el valor de las etiquetas y iloc se va sobre su referencia numérica.

Ahora, ¿cómo acceder a las columnas? 

Bueno, para ello se puede utilizar las etiquetas, por ejemplo, tal vez se quiere nada más la columna de sexo, es la que nos interesa, entonces.

Se utiliza los corchetes y dentro de ellos.

Se utiliza el string "sex" que ya se sabe que es una columna válida, y solamente se imprime los primeros cinco elementos.

Además de este hay otra forma de acceder a los datos.

Se puede utilizar df, haciendo referencia a el conjunto de datos original, .sex, sin los corchetes y sin las llaves, y de esta forma Pandas ya sabe interpretar el resultad.

Bueno pero también se puede acceder a múltiples columnas al mismo tiempo, se puede acceder tal vez a la edad, el sexo y tal vez la columna resultante que es si tiene problemas cardíacos o no, y lo hace con una lista de los nombres de las columnas.

Entonces, fácilmente nos se puede separar la información que se necesita.

Además Pandas nos permite utilizar el iloc para seleccionar columnas por su valor numérico.

Por ejemplo, aquí se tiene el ":" que había visto en las listas.

El ":" solamente nos van a decir tráeme todos los rows.

Separado de un coma, entonces la primera parte van a traer todos los rows, coma, tráeme estas columnas en específico.

Estas columnas lo que nos van a dar es la columna 0, la columna 1 y la columna -1, recuerda que si se pone un índice negativo se va al último elemento, entonces Da la edad, el sexo y la última columna que se tiene era el target.

Otra herramienta muy útil a la hora de manipular datos con Pandas es utilizar las condicionales que tal vez se quiere limpiar en el conjunto de datos y solamente arroja los casos donde el sexo es masculino.

Bueno, para ello se puede utilizar la columna sex y solamente cuando sea igual a 1 van a dar un valor positivo, y eso se lo pasa como referencia a el data frame.

Entonces si observan lo que nos arroja son puros valores donde el sexo es igual a 1, el conjunto de datos ya está limpio.

Tal vez se quiere ordenar así mismo, y a través de alguna columna en específico.

Si se selecciona, por ejemplo la columna chol y ordenados en el data frame con la función sort values, el data frame van a ser ordenado.

Si se fijan el índice ya no tiene un orden como lo se tiene antes 0, 1, 2, ya están ordenados a través de la columna chol que va desde menor hasta mayor.

Bueno, todas estas son herramientas muy útiles para estar manipulando la información, estar seleccionando.

Pero tal vez se quiere empezar a agrupar información que tal vez quiera ver la diferencia entre hombres y mujeres.

Bueno, para ello existe la función groupby.

Groupby lo que van a hacer es: separar el conjunto de datos en los diferentes sexos y a partir de ello se puede utilizar alguna otra función, por ejemplo, aquí tengo la función mean, entonces va a dar los promedios por género.

Entonces, si la se ejecuta se tiene el sexo femenino y masculino, y nos van a dar, por ejemplo, el promedio de edad, se puede ver que el promedio de edad en los hombres es de 55 años y en las mujeres de 53, de esa forma ya esta separando los datos y analizando de forma independiente.

Se puede utilizar groupby para ordenar por target.

O separar por target entre los que sí tienen problemas cardíacos y los que no, y tal vez se quiere contar cuántos tienen programas cardíacos, entonces, de esta forma, utilizando el count se puede ver que se tiene 138 que no tienen problemas cardíacos y 165 que tienen problemas cardíacos.

Además Pandas nos permite hacer gráficas sencillas o de una forma muy simple donde se puede escoger lo que se quiere que se grafique en el eje de las x.

Lo que se quiere que se grafique en el eje de las y y el tipo de gráfica que van a crear esto lo van a profundizar un poco más cuando se mire graficación, pero es importante notar que Pandas facilita esta tarea.

Entonces, si lo se ejecuta, se tiene que esperar un poco porque las gráficas son un poquito más pesadas, entonces lo puede graficar.

Entonces, a simple vista se puede ver que hay una relación entre la edad y la columna que es thalach tiene una tendencia negativa, entre más edad menos se tiene de esta columna o de este valor.

Entonces esa fue una introducción a las capacidades que tiene Pandas para poder seleccionar y manipular información de una manera fácil.

Se miro lo que es leer .csv, en el siguiente van a ver cómo leer archivos de excel y una introducción a cómo se leen los archivos de bases de datos.

S4 Cierre

Cierre Semana 4 Muchos de los problemas actuales a los que se enfrenta un científico de datos involucran el manejo de grandes cantidades de ...