Ciencias de Datos Con Python
Ciencias de Datos Con Python
En esta lección aprenderás a leer y escribir archivos con Open; cargar, trabajar y guardar
datos con Pandas.
En esta sección, utilizaremos la función "open" integrada en Python para crear un objeto
file (archivo) y obtener los datos de un archivo "txt".
Podemos aplicar un método a ese objeto para leer los datos del archivo.
Los valores que se utilizan comúnmente son "r" para lectura, “w" para escritura, y "a" para
añadir.
Ahora podemos usar el objeto file para obtener información sobre el archivo.
Podemos utilizar el atributo de datos name (nombre) para obtener el nombre del archivo.
Podemos ver en qué modo está el objeto usando el atributo de datos mode (modo), y se
muestra 'r' indicando lectura.
Esto a veces puede resultar tedioso, así que usaremos la sentencia "with" (con).
Usar una declaración "with" para abrir un archivo es una buena práctica porque cierra el
archivo automáticamente.
El código ejecutará todo lo que hay en el bloque con sangrado y luego cerrará el archivo.
El código realizará todas las operaciones en el bloque con sangrado y luego cerrará el
archivo al final del sangrado.
El método "read" (leer) almacena los valores del archivo en la variable "file_stuff"
(cosas_del_fichero) como una cadena.
Puedes comprobar si el contenido del archivo está cerrado, pero no puedes leerlo desde
fuera del sangrado.
Pero también puedes imprimir el contenido del archivo fuera del sangrado.
Veremos lo siguiente.
Esto es para que Python sepa que debe empezar una nueva línea.
Podemos imprimir cada línea como un elemento de una lista usando el método
"readlines" (leer líneas).
Podemos usar el método "readline" para leer la primera línea del archivo.
La primera vez que se llame, guardará la primera línea en la variable "file_stuff" y luego
imprimirá la primera línea.
La segunda vez que se llame, guardará la segunda línea en la variable "file_stuff" y luego
imprimirá la segunda línea.
Podemos usar un bucle para imprimir cada línea individualmente de la siguiente manera.
Si llamamos al método por segunda vez, se imprimen los cinco caracteres siguientes.
Finalmente, si llamamos al método por última vez con el argumento nueve, se imprimen
los últimos nueve caracteres.
Consulta los Laboratorios para ver más ejemplos de métodos y otros tipos de archivos.
Hay tres formas de seleccionar datos de un dataframe en Pandas: loc, iloc, y ix.
loc
iloc
iloc está basado en enteros. Utiliza números de columna y números de fila para obtener
filas o columnas en posiciones particulares en el dataframe.
Por defecto, ix busca una etiqueta. Si ix no encuentra una etiqueta, usará un entero. Esto
significa que puede seleccionar datos usando números de columna y números de fila o
encabezados de columna y nombres de fila usando ix.
También puede usar loc y iloc para cortar dataframes y asignar valores a un nuevo
dataframe.
También puede dividir dataframes y asignar los valores a un nuevo dataframe utilizando
los nombres de columna. El código asigna las primeras tres filas y todas las columnas
intermedias a las columnas llamadas Artist y Released. El resultado es un nuevo dataframe
Z con los valores correspondientes.
En este ejemplo, asignamos las dos primeras filas y las primeras tres columnas a la
variable Z. El resultado es un dataframe compuesto por las filas y columnas
seleccionadas.
2.2 Cargar datos con Pandas
En este vídeo, presentaremos Pandas, una popular librería para el análisis de datos.
Digamos que queremos cargar un archivo CSV usando la función incorporada de Pandas,
read_csv.
Ahora escribimos pd y un punto, seguido del nombre de la función que queremos usar.
Una forma en la que Pandas permite trabajar con datos es con el marco de datos (data
frame).
Repasemos el proceso para pasar de un archivo CSV a un marco de datos.
Ahora que tenemos los datos en un marco de datos, podemos trabajar con ellos.
Podemos usar el método "head" para examinar las primeras cinco filas de un marco de
datos.
Sólo ponemos el nombre del marco de datos, en este caso, df, y el nombre de la cabecera
de la columna entre corchetes dobles.
Sólo ponemos el nombre del marco de datos, en este caso, df, y el nombre de las
cabeceras de las múltiples columnas entre dobles corchetes.
Del mismo modo, puedes acceder a la segunda fila de la columna denominada Artist.
También puedes dividir marcos de datos y asignar los valores a un nuevo marco de datos.
Asignamos las dos primeras filas y las tres primeras columnas a la variable Z.
El código asigna las tres primeras filas y todas las columnas intermedias a las columnas
denominadas Artist y Released.
Cuando tenemos un dataframe podemos trabajar con los datos y guardar los resultados
en otros formatos.
Supongamos que desea saber cuántos elementos únicos hay en una columna de un
dataframe.
Esto puede ser más difícil porque en lugar de 13 elementos quizás tenga millones.
Pandas tiene el único método para determinar los elementos únicos en una columna de
un dataframe.
Digamos que nos gustaría determinar el año único de los álbumes en el conjunto de datos.
Podemos hacer esto dentro de una línea de código en Pandas, pero separemos los pasos.
Podemos seleccionar las columnas especificadas en una línea, simplemente usemos los
nombres del dataframe y entre corchetes colocamos la desigualdad mencionada
anteriormente y la asignamos a la variable df1.
Ahora tenemos un nuevo dataframe, donde cada álbum fue lanzado después de 1979.
Podemos guardar el nuevo dataframe utilizando el método to_csv.
En esta lección cubriremos NumPy en 1D (una dimensión), en particular los arrays ND.
Una lista Python es un contenedor que permite almacenar y acceder a los datos.
Normalmente es de tamaño fijo y cada elemento es del mismo tipo, en este caso enteros.
Luego, convertimos la lista de la siguiente manera; podemos acceder a los datos mediante
un índice.
Al igual que con la lista, podemos acceder a cada elemento con un número entero y un
corchete.
El valor de "a" se almacena de la siguiente manera.
Si comprobamos el tipo del array que obtenemos, Numpy. ndarray, como los arrays
NumPy contienen datos del mismo tipo, podemos usar el atributo dtype para obtener el
tipo de datos de los elementos del array.
Los dos atributos siguientes tendrán más sentido cuando lleguemos a dimensiones
mayores, pero vamos a revisarlos.
El atributo ndim representa el número de dimensiones del array o el rango del array, en
este caso uno.
El atributo shape es una tupla de números enteros que indican el tamaño del conjunto en
cada dimensión.
Si examinamos el atributo dtype, vemos float64 ya que los elementos no son enteros.
Podemos seleccionar los elementos de uno a tres y asignarlos a un nuevo array NumPy "d"
de la siguiente manera.
Podemos asignar los índices correspondientes a los nuevos valores de la siguiente manera.
Consulta los laboratorios o numpy.org para ver más ejemplos de lo que puedes hacer con
NumPy.
NumPy facilita la realización de muchas operaciones que se realizan comúnmente en
ciencia de datos.
Las mismas operaciones suelen ser más rápidas desde el punto de vista computacional y
requieren menos memoria en NumPy en comparación con el Python normal.
Veremos muchas de las operaciones en el contexto de los vectores euclidianos para hacer
las cosas más interesantes.
Consideremos el vector "u" con dos elementos, los elementos se distinguen por los
diferentes colores.
El primer componente de "z" es la suma del primer componente de los vectores "u" y "v".
Como resultado, la flecha está desplazada una unidad desde el origen en la dirección
horizontal.
Cuando sumamos los vectores "u" y "v", obtenemos el nuevo vector "z".
Resulta útil emplear el método de punta a cola cuando se suman vectores, colocando la
cola del vector "v" en la punta del vector "u".
El nuevo vector "z" se construye conectando la base del primer vector "u" con la cola del
segundo "v".
En las siguientes tres líneas de código sumaremos las dos listas y pondremos el resultado
en la lista "z".
También podemos realizar la adición de vectores con una línea de código NumPy.
Se necesitarían varias líneas para realizar la resta de vectores en dos listas, como se
muestra en la parte derecha de la pantalla.
Cada componente del vector se multiplica por dos, en este caso cada componente se
duplica.
Podemos usar el segmento de línea o las flechas para visualizar lo que sucede.
La multiplicación del vector con un escalar sólo requiere una línea de código utilizando
NumPy.
Harían falta múltiples líneas para realizar la misma tarea que se muestra con las listas de
Python, como se ve en la parte derecha de la pantalla.
Consideremos los dos vectores siguientes, "u" y "v". El producto hadamard de "u" y "v" es
un nuevo vector "z".
También podemos realizar el producto hadamard con una línea de código en NumPy.
Se necesitarían múltiples líneas para realizar el producto hadamard en las dos listas que se
muestran en la parte derecha de la pantalla.
Consideremos el vector "u" y "v", el producto dot es un número único dado por el
siguiente término y representa cuán similares son dos vectores.
Multiplicamos el primer componente de "v" y "u", luego multiplicamos el segundo
componente y sumamos el resultado.
El resultado es un número que representa lo similares que son los dos vectores.
También podemos realizar el producto dot usando la función NumPy dot y asignarlo con el
resultado de la variable de la siguiente manera.
Si sumamos un valor escalar al array, NumPy sumará ese valor a cada elemento.
Una función universal es una función que realiza operaciones en los arrays ND.
Vemos que el valor máximo es cinco, por lo tanto, el método max devuelve un cinco.
Podemos usar NumPy para crear funciones que asignen los arrays de NumPy a nuevos
arrays de NumPy.
Vamos a escribir algo de código en el lado izquierdo de la pantalla y a usar el lado derecho
de la pantalla para demostrar lo que está pasando.
Podemos aplicar la función sin al array "x" y asignar los valores a la matriz "y" Esto aplica
la función seno a cada elemento del array, esto corresponde a aplicar la función seno a
cada componente del vector.
El resultado es un nuevo array "y", en el que cada valor corresponde a una función seno
que se aplica a cada elemento del array x.
Una función útil para trazar funciones matemáticas es linspace (espacio lineal).
Podemos usar la función seno de NumPy para mapear el array "x" a un nuevo array "y".
Podemos importar la librería pyplot como plt para ayudarnos a dibujar la función.
Como estamos usando un cuaderno Júpiter, usamos el comando matplotlib de manera
inline para mostrar el trazado.
Se puede hacer mucho más con NumPy consulta www.NumPy.org para más información.
Recursos Complementarios
BIBLIOGRAFIA
https://docs.python.org/3/using/index.html
https://pandas.pydata.org/
https://numpy.org/
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython -
Wes McKinney (Autor)