Python para todos: 5 formas de cargar datos para tus proyectos de Machine Learning

Paloma Recuero de los Santos    1 octubre, 2019

Uno de los primeros pasos que hay que dar cuando queremos crear un modelo de aprendizaje automático en Python es cargar los datos a partir de los cuales construiremos nuestro modelo. Hay distintas formas de llevar a cabo esta tarea, que dependerán del formato que tengan los datos, su ubicación o los recursos/librerías de Python que queramos utilizar. Empezaremos por lo más sencillo.

Cargar de ficheros csv en Python.

Se trata de uno de los formatos de datos más habituales. A la hora de cargar un fichero csv, deberemos tener en cuenta algunos detalles como:

  • Su ubicación
  • Si tienen cabecera o “header”
  • Si tiene comentarios (señalados por medio de #)
  • Qué tipo de delimitador utiliza (“,”, “/”, espacios en blanco etc)

Lo primero que habrá que hacer, por tanto, es guardar los datos en nuestro directorio de trabajo. Comprobamos cuál es mediante el comando os.getcwd(). Si queremos cambiarlo, podemos usar el comando chdir(), ojo que tenemos que usar “\” dobles para especificar la nueva ruta:

Una vez que tenemos claramente definido el directorio de trabajo, guardamos en él los datasets con los que vamos a trabajar en nuestros proyectos. Para cargar estos datos en Python podemos usar distintas opciones:

  1. Cargar los ficheros CSV usando el módulo CSV de la librería estándar de Python
  2. Cargar los ficheros CSV usando NumPy
  3. Cargar los ficheros CSV usando Pandas
  4. Cargar los ficheros desde la URL
  5. Cargar ficheros de pruebas desde librerías (Staatsmodels, etc)

1. Usando el módulo csv de la librería estándar

Para extraer los datos de un fichero csv, primero lo “abrimos” con la función open(). Después, usamos la función, csv.reader(), que lee línea a línea el fichero, y hace una lista de todas las columnas en el objeto reader. Es mucho más sencillo hacerlo que explicarlo, así que mejor, lo vemos con un ejemplo.

Hemos guardado, en nuestro directorio de trabajo, un dataset de ejemplo con datos sobre diabetes.

2. Usando NumPy

Otra forma de cargar los datos es usando la función numpy.loadtxt()  de la librería NumPy. Para ello, lo primero que tendremos que hacer es cargar la librería.

Esta función asume que el fichero no tiene cabeceras, y que todos los datos tienen el mismo formato. Como no es el caso de nuestro dataset sobre diabetes, usaremos el modificador skiprow” para indicar que no debe tener en cuenta la primera fila.

En este ejemplo, también le hemos pedido que nos indique las dimensiones del dataset y nos muestre los datos.

3. Usando Pandas

Esta tercera forma de cargar los datos es, probablemente, la más popular entre los científicos de datos como veremos, por muy buenas razones. En este caso, la función que usaremos es readcsv(). Esta función nos ofrece una gran flexibilidad a la hora de importar datos, ya que de forma automática, o con una simple línea de comando, permite hacer cosas como:

  • Detectar automáticamente las cabeceras o “headers”
  • “Saltar” líneas con el modificador “skiprow
  • Detectar automáticamente el tipo de datos (número entero, decimal, cadena de texto etc)
  • Identificar campos con datos erróneos o vacíos
  • Convertir los datos en formato csv en un dataframe de Pandas

Los dataframes de Pandas son unas estructuras de datos diseñadas especialmente para facilitar el trabajo del analista y científico de datos. Permiten trabajar con datos de todo tipo (enteros, decimales, cadenas de texto) dispuestos en forma de tablas, incluso con series temporales.

También se pueden usar como vectores y matrices, lo que permite realizar operaciones de álgebra lineal, como la multiplicación de matrices.

Otro aspecto importante de pandas.read_csv() es que puede ejecutarse con la opción chunksize, que, en lugar de cargar el fichero de datos completo en memoria, permite hacerlo en fragmentos (chunks) de tamaño configurable, mejorando mucho la eficiencia en la carga de datos de ficheros muy grandes.

Veamos un ejemplo.

4. Desde URL.

Otra de las formas más habituales de cargar un dataset es directamente desde la URL donde se alojan los datos. Este método es perfectamente compatible con los anteriores. Por ejemplo, podemos modificar el ejemplo anterior, para que cargue los datos desde su ubicación original.

5. Desde otras librerías.

Cuando lo que queremos es hacer una prueba rápida, nos pueden resultar muy útiles los datasets que traen “de serie” algunos de los paquetes más populares como statsmodels, scikit-learn, o seaborn. Se trata de conjuntos de datos de todo tipo “para hacer pruebas” que se conocen como “Toy datasets” y de los que hablaremos con más detalle en el próximo post.

En el experimento que hicimos para explicar en qué consiste la regresión logística paso a paso, usamos uno de estos conjuntos de datos. En concreto, el dataset “affairs”, de statsmodels. En este post, podéis ver cómo se cargan los datos desde la librería y, si os animáis, seguir el ejemplo completo, explicado paso a paso.

Como veis, hay muchas formas distintas de cargar los datos. Aunque, según nos resulte más sencillo y cómodo, tendremos cada uno nuestra “favorita”, es bueno conocer las otras alternativas por si nos surge algún caso en el que resulte conveniente cambiar de método.

¿Cuál es la tuya?

Para mantenerte al día con LUCA visita nuestra página web,  suscríbete a LUCA Data Speaks o síguenos en TwitterLinkedIn YouTube.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *