Blog
Importar datos con Python
- Publicado por: Rafael Fernandez
- Categoría: Analisis de datos Blog Nivel Intermedio Python
Siempre necesitarás importar los datos, limpiarlos, manejarlos y visualizarlos para poder construir modelos predictivos e interpretarlos. No obstante, antes de hacer cualquiera de estos pasos, necesitarás saber cómo introducirlos en tu entorno de programación. En la lección de este curso, vas a aprender cómo importar datos de archivos planos a Python. Python soporta una gran variedad de archivos, pero te vamos a enseñar a importar los tipos de archivos más empleados en el campo del Análisis de Datos. Vamos a utilizar unos ejemplos con archivos que te puedes descargar aquí.
1. Importar archivos sencillos en formato .txt
Con este tipo de archivos, podemos utilizar funciones básicas de Python. Para que sea más fácil y puedas practicar, vamos a utilizar el archivo ‘ seaslug.txt‘ .
Primero de todo, asignamos un nombre de archivo a una variable de tipo carácter
archivo_nombre = 'seaslug.txt'
Ya podemos proceder a abrir el archivo, utilizando la función open (), es importante añadir el argumento mode = ‘r’ para asegurarnos que sólo podemos leer el archivo. Luego, añadimos el texto del archivo a una nueva variable llamando la función read() en la conexión del archivo. Es importante que te asegures de cerrar la conexión con el archivo una vez importada (con la función close()).
archivo = open(archivo_nombre,mode='r') texto = archivo.read() archivo.close() # Podemos mostrar en pantalla el archivo que se acaba de cargar print(texto)
Si deseas evitar tener que cerrar la conexión la conexión, puedes utilizar la declaración with. Esto te permite crear un contexto en el que se puede leer el archivo. Una vez que el archivo está fuera de este contexto, ya no está abierto, por lo que se llama with como gestor de contexto.
with open('seaslug.txt','r') as archivo: print(archivo.read())
2. Importar archivos planos (.csv) con Numpy
Los archivos planos son archivos de texto básicos que contienen registros, es decir, datos de tablas sin relación estructurada. El archivo plano que vamos a considerar en esta lección es el de: titanic.csv compuesto por un conjunto de filas de datos donde cada fila es un pasajero único y cada columna es una característica o atributo del mismo. La extensión del archivo es .csv que significa ‘Valores separados por comas’, es decir, los valores están separados por una coma.
Si el archivo contiene sólo datos numéricos, podemos usar Numpy para importarlo. Vamos a considerar otro archivo numérico para que quede bien claro, utilizando en este caso el archivo MNIST.txt.
#Primerio cargamos el paquete numpy import numpy as np datos = np.loadtxt('MNIST.txt',delimiter=',')
El delimitador predeterminado es un espacio en blanco, por lo que necesitamos especificar el delimitador específicamente si no es un espacio en blanco.
Cuando tenemos datos mezclados en un archivo, la función loadtxt() no funciona de forma correcta como sucede para el archivo de ‘titanic.csv’.
# Importamos el paquete numpy import numpy as np # Asignamos el archivo a la variable (tipo carácter): archivo archivo = 'titanic.csv' # Cargamos el fichero como el array: datos dato = np.loadtxt(archivo , delimiter=',')
La función genfromtxt() es mucho más completa y permite importar dichos archivos.
datos = np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)
En este caso, el primer argumento es el nombre del archivo, el segundo especifica el delimitador, y el tercero nos indica que existe un encabezado. El archivo contiene datos numéricos y caracteres, formando un objeto llamado matriz estructurada. Debido a que los arreglos numéricos tienen que contener elementos que son todos del mismo tipo, el input dtype = None resuelve esto formando un arreglo unidimensional, donde cada elemento del arreglo es una fila del archivo plano importado. Así, la propia función calculará qué tipo de dato debe tener cada columna. Existe otra función np.recfromcsv() que se comporta de forma similar a np.genfromtxt(), excepto que su dtype por defecto es None.
nuevos_datos = np.recfromcsv('titanic_sub.csv')
3. Importar archivos planos (.csv) con Pandas
Aunque las matrices son increíblemente poderosas y sirven para un número de propósitos esenciales pero no pueden satisfacer una de las necesidades básicas para poder realizar un Análisis de los datos, tales como:
– Estructura/s de datos etiquetado/s en dos dimensiones
– Manipular, limpiar, cortar, reformar, agrupar, unir, fusionar los datos por similitud o disimilitud de atributos
– Trabajar con series temporales
Para ello necesitamos la librería Pandas que te ayude a llevar a cabo todo el trabajo de análisis de datos en Python de una forma fluida y rápida. Dicha librería, ofrece un tipo de estructura de datos llamada Dataframe que ayuda en el análisis y manipulación de los datos, siendo útil en los siguientes pasos:
- Análisis exploratorio
- Limpieza de los datos
- Visualización de los datos
- Preprocesamiento de datos
- Construcción de modelos
Por todas estas razones, es una práctica estándar y óptima utilizar Pandas para importar archivos planos como marcos de datos. Veamos un ejemplo a continuación.
# Primero de todo, importamos el paquete Pandas import pandas as pd
Una vez importado el paquete, vamos a utilizar la función read_csv() para importar el archivo que deseamos, en este caso el archivo ‘titanic.csv’. Podemos dar un vistazo rápido al archivo importado utilizando la función head(), la cual nos muestra las cinco primeras filas del archivo importado, el cual es un Data Frame.
df = pd.read_csv('titanic.csv') # Chquear las primeras 5 filas utilizando head() df.head()
A veces, es necesario convertir el Data Frame a un numpy array, lo cual se puede realizar de la siguiente manera:
df_array = df.values # Ver la clase o estructura type(df_array)
➡ Te invitamos a nuestro Curso Python de Análisis de Datos: