Python, la maquinaria para explotar los datos (el nuevo petróleo)

python, datos, bases de datos

Cualquiera sea el escenario de datos, Python es una herramienta formidable para conectarse a cualquier motor para extraer o actualizar la información.

Si los datos son el nuevo petróleo, Python vendría siendo como la maquinaria excavadora que permite finalmente obtener ese petróleo. Este lenguaje de programación, apoyado por poderosas librerías, permiten extraer, transformar, modificar, preparar y si es necesario volver a almacenar esos valiosos datos posiblemente transformados.

Bases de datos, los grandes reservorios

Pero ¿dónde están esos preciosos datos? A pesar de que muchos de ellos pueden estar guardados como archivos (Excel, csv, texto, etc.) la gran mayoría residen en alguna base de datos que a su vez es administrada por una pieza de software que llamamos el motor. Siguiendo la analogía, estas bases de datos serían como reservorios donde está guardado el petróleo para ser utilizado.

Parece entonces crucial el tener competencias que permitan utilizar aquella magnífica herramienta (Python + librerías) para acceder a estos repositorios donde la mayor parte de los datos residen y que son gestionados por el motor de bases de datos.

¿Cómo exactamente están guardados los datos?

Los datos se guardan en la base de datos de acuerdo con un modelo de datos (valga la repetición de palabras). En las bases de datos relacionales (las más comunes y utilizadas hoy día) los datos están representados por tablas en que cada fila muestra una instancia del dato. Y las columnas, los distintos atributos que nos interesan de esta instancia.

Por ejemplo, en una tabla de clientes tendremos una fila que corresponde al cliente ACME y los atributos de interés pueden ser la razón social, el rut, la dirección, el email, teléfonos, etc. Otra tabla puede manejar las facturas de ventas y en ellas aparecerá una fila por cada factura.

Interesantemente, estas dos tablas están conectadas, ya que una factura se le cursa a un cliente dado. El diseñador del modelo de datos debe poner mucha atención en la forma en que especifica el modelo.

Pero existe también otro tipo de datos, los datos no estructurados, que no siguen un patrón tan uniforme como en el modelo relacional. Por ejemplo, si quiero guardar información de productos y vendo desde prendas de vestir hasta bicicletas o computadores, puedo requerir distinto número y tipo de atributos. Si es un computador, a lo mejor la memoria, el disco duro, la velocidad del procesador. Si es un chaleco a lo mejor el tipo de lana, color, etc.

En estos casos puede usarse un modelo de documentos en que cada ítem no es una fila en una tabla, sino un objeto o documento JSON que admite toda la flexibilidad que necesito. En este caso, en lugar de una tabla tendré una colección de objetos que pueden ser muy distintos entre sí.

El motor puede interactuar también con un programa Python

El motor de base de datos, dependiendo de cual sea, será capaz de manejar tablas (relacional) o documentos JSON (documentos) y en ambos casos puede guardar nueva información y sobre todo recuperar rápidamente una o más entidades si se especifican sus atributos por medio de un lenguaje de consultas.

Este lenguaje de consultas puede ser usado por una persona quien interactúa directamente con el motor, pero también, y esto es lo relevante para nosotros, por un programa Python. Lo único que se requiere es agregar una pequeña pieza de software al ambiente Python llamado “conector” que es el medio a través del cual el lenguaje y el motor pueden conversar.

Por ejemplo, si necesitamos interactuar con un motor MySQL (relacional) al comienzo del programa pondremos “import mysql.connector” y listo. Si se trata de MongoDB (documentos) pondremos “import pymongo” y ya.

De esta forma tenemos nuestro equipo preparado para extraer petróleo en distintos escenarios y situaciones, ya sea una base de datos clásica o una base de datos de documentos.

El programa puede así acceder a la data y procesarla para lo cual puede valerse de uno o más de las extraordinarias librerías de manejo de datos como por ejemplo Pandas. Y, si lo estima necesario, volver a poner los datos transformados en las mismas bases de datos o en otras.

¿Cómo tienes organizada la bodeguita de tu departamento?

Volvamos por un minuto a los distintos enfoques de almacenar datos que describimos al hablar de datos estructurados y no estructurados.

Los entendidos en esto suelen hablar de schema on write y schema on read. A pesar de como suenan la idea es supersimple.

El schema corresponde al modelo de datos, es decir cuantas tablas, qué columnas en cada tabla, cómo se conectan las tablas entre ellas, etc.

Schema on write

El enfoque llamado schema on write exige tener totalmente definido el modelo antes de comenzar a guardar los datos. Es cierto que es posible hacer cambios al esquema posteriormente, pero ello suele ser complejo y muy costoso, especialmente si la base de datos ya tiene mucha información.

Schema on read

En el schema on read, en cambio, no se requiere un modelo previo. Los documentos se guardan a medida que llegan y no sabemos cuántas colecciones ni cuántos atributos puede tener un objeto. Solo al momento de utilizar los datos necesito hacer sentido de lo que estoy leyendo.

Me gusta pensar en la analogía de una pequeña bodega de un departamento. Si antes de guardar algo Ud. decide construir compartimentos, definir dónde irá las maletas, cajones para la ropa, etc. entonces estaría usando un enfoque de schema on write. Si deja en cambio solo un gran espacio que se va organizando en la medida en que llegan nuevas cosas se trata de schema on read.

Por supuesto el primer enfoque tiene sentido si Ud. sabe a priori más o menos lo que vamos a tener que almacenar. El segundo, muestra su valor cuando podría llegar cualquier cosa.

Python, una herramienta formidable

Cualquiera sea el escenario que te toque enfrentar recuerda que tienes en Python una herramienta formidable esperando para explotar este nuevo petróleo de los datos. Mediante ella puedes conectarte con cualquier motor para extraer o actualizar la información que luego puedes seguir transformando u organizando en tu programa para efectos de construir modelos predictivos, o cualquier otra necesidad que pueda requerir un cientista de datos.

 

Actualízate con el curso sobre Python y bases de datos (online) de Clase Ejecutiva UC. 





¿Te gustó? Compártelo en tus redes [addtoany]

Artículos más recientes del autor