Temática

Python

Tiempo de lectura

5 minutos

Clave de contenido del artículo

Luis ha decidido ser Data Scientist. Desde hace tiempo lleva dándole vueltas a dedicarse a la inteligencia artificial, pero no sabe por dónde empezar. Tras consultar en Google y a ChatGPT qué herramientas son las más adecuadas para iniciarse, concluye que desde hace tiempo hay dos lenguajes de programación más utilizados en este mundo: R y Python. Luis decide dejar de lado debates eternos y decide aprender los dos, porque ¿existe acaso incompatibilidad? Tira una moneda al aire y el resultado es empezar por Python.

De Python no sabía mucho, más allá de que es un lenguaje de programación. Buceando un poco, llega a definiciones del tipo: “Se trata de un lenguaje de programación multiparadigma, ya que soporta parcialmente la orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, dinámico y multiplataforma.”

Santiago Moreno

Senior Data Scientist y profesor de Python y machine learning en datahack

Autor del artículo

En resumen, Python sirve para todo, desde modelos de machine learning hasta para desarrollar YouTube. Para esto, Luis ve que Python se apoya en múltiples módulos, paquetes o “librerías”, “libraries” en inglés que son una ayuda para cada uno de los aspectos que se pueden utilizar con Python. En concreto para IA hay varias indispensables: Pandas, numpy, scikit learn, Keras, Matplotlib, Seaborn…. y unas cuantas más.

Por tanto, no basta con descargarse Python, sino que hay después que instalar múltiples bibliotecas o “librerías” para poder trabajar y, lo que es más complicado: cada librería depende a su vez de otras, lo cual hace que pueda haber incompatibilidad de versiones... y ¿cómo solucionar todo este lío? Cuando está a punto de tirar la toalla, Luis descubre Anaconda.

Anaconda es una distribución de Python (también de R), es decir, en lugar de instalar Python simplemente te instalas Anaconda y con ella ya tienes las principales herramientas Open Source que el Data Scientist necesita para desarrollar su actividad.

¿Cómo instalar Anaconda Python?

Instalar Anaconda es muy fácil; viene ya preparado para descargar el instalador según el sistema operativo que se quiera utilizar e instalarlo:

Haz clic aquí.

Cómo trabajar con Anaconda: Jupyter Notebook y Spyder

La instalación de Anaconda viene directamente con Jupyter Notebook como herramienta de notebooks y de Spyder como IDE de programación.

El Notebook es una herramienta muy habitual en el trabajo habitual del científico de datos. En su propia web se define como “Jupyter Notebook es una interfaz web de código abierto que permite la inclusión de texto, vídeo, audio, imágenes así como la ejecución de código a través del navegador en múltiples lenguajes. Esta ejecución se realiza mediante la comunicación con un núcleo (Kernel) de cálculo.”

Haz clic aquí.

Precisamente esa capacidad de poder incluir código junto con imágenes y texto es lo que hace particularmente adecuado para el análisis de datos, pues te permite llevar un hilo argumental a medida que se va llevando a cabo el estudio, los modelos, extrayendo las métricas, etc.

Sin embargo, los notebooks tienen una importante limitación: no permiten de modo fácil la productivización de los distintos algoritmos. Para esto es mejor recurrir a lo que se conoce como un IDE, es decir, un entorno para desarrollo integrado. Anaconda viene integrado con Spyder para lo que es la parte más de desarrollo y menos de análisis.

Haz clic aquí.

Entorno de Python en Anaconda

Una de las particularidades de Python como lenguaje Open Source es su continua evolución que puede hacer que desarrollos pasados que utilizaban ciertas versiones sean incompatibles con versiones más modernas. No solo casos ya extremos como una aplicación desarrollada con Python 2 que no funcione en Python 3, sino incluso métodos de librerías como pandas que se modifican o dependencias que cambian al actualizar las versiones.

Los entornos de Anaconda precisamente permiten manejar este tipo de situaciones. Un entorno de Anaconda se puede entender como un espacio aislado, independiente, donde las librerías y versión de Python se mantienen congeladas. Así, si tenemos un desarrollo muy importante que queremos seguir manteniendo con una combinación de versiones de librerías, lo ideal es tenerlo de modo estático o perenne en uno de estos entornos de anaconda.

Una de las recomendaciones a la hora de abordar proyectos es, precisamente, tener un entorno base con la instalación de Anaconda o incluso Miniconda (ya veremos la diferencia) y a partir de ahí, que cuelguen los diferentes entornos con las librerías requeridas para cada caso.

Los comandos más habituales para trabajar con entornos son:

Instalación de librerías en Anaconda: Conda

Conda no es lo mismo que Anaconda: Conda es un gestor de paquetes, mientras que Anaconda es una distribución que, además de Python, incluye las librerías más habituales para el día a día del análisis de datos. Esto se traduce en que es Conda quien se va a encargar de manejar las distintas dependencias entre librerías de las que ya hemos hablado.

En resumen, es quien se va a ocupar cuando queramos actualizar una librería o instalar una nueva de que todo marche bien. La ventaja de habernos instalado Anaconda es que Conda viene integrado.

¿Esto significa que sin Conda no podríamos instalar nuevas librerías? No. Python incorpora un comando, Pip, que precisamente sirve para instalar nuevos módulos. Tanto Conda como Pip son válidos para instalar librerías, si bien, siempre que se pueda recurrir a Conda, merece la pena utilizarlo.

Por tanto, siempre que se quiera instalar una librería, podemos seguir los siguientes pasos que se van a ilustrar con un ejemplo. Supongamos que se desea instalar una librería que no viene por defecto con Anaconda, como puede ser Swifter. 

En este caso, bastaría con ejecutarlo en la línea de comandos de Anaconda:

Basta escribir “pip install swifter” en la línea de comandos:

Conclusión

El mundo de la Inteligencia Artificial y de la ciencia y análisis de datos está muy ligado a Python y esto implica, necesariamente, adaptarse a las particularidades de este mundo. Anaconda viene tanto a solucionar la entrada a los que se inicien en este apasionante mundo como a ser una herramienta imprescindible en el día a día para los científicos de datos más experimentados gestionando por nosotros entornos, librerías o paquetes etc. Desde luego, es una solución muy recomendable para el día a día del análisis de datos.

Si te ha gustado este artículo...

Conoce ahora nuestro

Máster Experto en Data Science y Big Data

¡Infórmate ya!

En este artículo creado por Pablo Sainz de Vicuña, profesor de visualización de datos en el master de Big Data &Analytics de datahack, conoceremos de su propia mano la herramienta Tableau:

Tableau es una herramienta de visualización de datos líder del mercado que se caracteriza por su fácil aprendizaje, es muy sencillo comenzar a extraer información con ella y representar los datos de forma eficiente. Además permite jugar con los datos de origen pudiendo crear tus propios campos calculados, dicho código también resulta bastante sencillo de codificar y de aprender

Me gustaría compartir un proyecto que realicé cuando comencé a trabajar con Tableau que me dio la oportunidad de combinar dos de mis aficiones, el Golf y la Visualización de datos. Seguro que todos habéis oído hablar de un torneo de Golf en el que el premio es una chaqueta verde, pues bien, este torneo es el más prestigioso del mundo y se llama Masters de Augusta.

Mi idea consistía en crear un cuadro de mando que nos permitiese explorar la clasificación así como los jugadores, los hoyos y los golpes realizados. Una idea ambiciosa por dos grandes motivos, primero, mi desconocimiento de la herramienta, la había utilizado en el master y poco más, y segundo, de donde sacaría los datos.

El primero de los problemas se podía solventar a base de trabajo, investigación y perseverancia, el segundo…es más complicado, estuve buscando bases de datos pero nunca encontré nada que se asemejara a los que buscaba por lo que si quería llevar a cabo mi proyecto tendría que conseguir los datos por mí mismo. Para ello podía ponerme a escribir los datos a mano, algo imposible e ineficiente, o podía utilizar una de las técnicas que aprendí durante el master, web scrapping, esta técnica consiste en sacar la información de una página web aprovechando el código HTML de la misma.

Visité la página oficial del torneo y comprobé que podía extraer toda la información de ella, por ejemplo, la siguiente imagen muestra la clasificación:

Y su código es el siguiente:

Podemos ver que esta página tiene una estructura que podemos aprovechar y llegar al dato que necesitamos, si nos fijamos en la línea sombreada en azul aparece el nombre del jugador en la segunda línea de la clasificación, así como sus valores en las líneas siguientes.

Localizada la fuente de datos ahora tocaba empezar a trabajar, no soy ningún experto en la programación pero si algo había aprendido durante el master de datahack era a investigar. Encontré una librería que nunca había utilizado de web scrapping llamada “Selenium” y comencé a hacer pruebas en un notebook de jupyter utilizando python como lenguaje. Pronto empecé a ver resultados satisfactorios ya que obtuve mucha información rápidamente.

Este es es script que utilicé para obtener los jugadores:

En él se puede ver que primero buscaba el listado de jugadores para después recorrer este listado con cada jugador y obtener sus datos (Player ID, Nombre, Altura, Peso, Edad, Pais, Descripción y Mejor resultado).

También aprovechamos la web para descargar las imágenes de los jugadores y de los hoyos para poder utilizarlas en nuestro cuadro de mando.

Más sencillo resultó el script para extraer la información de los hoyos:

Para cada hoyo obtenemos su Número, Nombre, Par (golpes con los que se debería hacer el hoyo), Distancia y Descripción.

Por último faltaba obtener cada golpe realizado por cada jugador, este script requirió más trabajo ya que el código resultaba más complejo, su tiempo de ejecución era muy elevado y afinarlo fue bastante tedioso, pero finalmente logré el dataset que buscaba:

De cada golpe obtuve el PlayerID, Ronda, Golpe, Distancia, Unidad de distancia, Distancia al hoyo, Unidad de distancia al hoyo, X, Y, X Origen, Y Origen. ¡Ya tenía todo lo necesario para representarlo en Tableau!

Lo primero al entrar en Tableau es crear la fuente de datos, en este caso resultó bastante sencilla debida a la labor previa que hicimos con la extracción en Python.

Simplemente unimos la tabla principal Golpes con Jugadores y Hoyos.

Utilizando la función de pivotar en la fuente de datos conseguimos juntar los puntos X e Y de origen y destino en una misma medida pudiéndolos diferenciar mediante una dimensión Origen/Destino. Esto iba a resultar imprescindible para el gráfico principal del dashboard, el shottracker.

SHOT TRACKER

La construcción del gráfico principal resultó bastante compleja, una vez resuelto el problema de unificar el origen y destino de las coordenadas en la fuente la construcción del gráfico no resulta demasiado compleja.

La hoja está compuesta por un gráfico de puntos y un gráfico de líneas en eje doble con la ronda en color, el tiro en texto, el jugador y el hoyo en detalle.

Lo que faltaba era conseguir cambiar la imagen del hoyo dinámicamente en función de la selección realizada. Para ello encontré una solución que consistía en editar las imágenes en segundo plano del el menú de Mapa.

Una vez dentro se creaban todas las imágenes una a una incluyendo un filtro personalizado en el que seleccionábamos el hoyo correspondiente.

Conseguir esta hoja me llevó una enorme labor de investigación para replicar todos los efectos deseados.

CLASIFICACIÓN

A simple vista no parece una gráfica muy compleja. Es un mapa de calor que cuenta los golpes por ronda de cada jugador. La dificultad vino de conseguir que ese cálculo fuese correcto, en esa etapa no sabía manejar las expresiones en nivel de detalle que ofrece Tableau, estas expresiones son parecido a subconsultas que se pueden hacer a la fuente de datos original para fijar el valor en una dimensión. Son unos de los conceptos más complejos de Tableau y comprenderlos lleva su tiempo, pero necesitaba utilizarlos así que tocaba de nuevo investigar y probar hasta conseguir el resultado deseado, finalmente lo conseguí con un campo calculado que a día de hoy tardaría segundos en hacer pero que en aquel momento me pudo llevar un par de días de prueba y error.

Para conseguir el color también necesite otros campos calculados:

PANEL DE JUGADOR SELECCIONADO

En función del jugador que se selecciona en el panel de clasificación cambia el panel del jugador con su nombre y su foto.

Este efecto requiere un trabajo bastante laborioso por detrás, primero hay que tener todas las imágenes guardadas en una carpeta dentro de la siguiente ruta:

C:\Users\My_User\Documents\Mi Repositorio de Tableau\Formas

Al reiniciar Tableau veremos que si creamos un gráfico de formas nos ofrece las que están dentro de la carpeta recién creada. Después hay que asignar manualmente cada foto a cada jugador.

Crear la gráfica es sencillo ya que únicamente requiere incluir los jugadores en Forma y mediante una acción de filtro en el dashboard conseguimos ver únicamente el jugador seleccionado.

En el tooltip del jugador podemos ver otros cálculos interesantes como la máxima distancia del drive y su promedio.

El número de greenes cogidos, se considera el número de golpes que se deberían dar para llegar al Green, en un par 4 serían dos golpes; para calcular esto nos basamos en las unidades que nos ofrece el dataset:

Si el golpe tiene una distancia en yardas es un golpe desde fuera de Green, mientras que si están en pies o pulgadas es un Putt.

Siguiendo esta lógica también se calcula el número de putts por ronda realizados. Una vez construidas las hojas monté todo en el dashboard de incluí las acciones de filtro necesarias para que todo respondiese correctamente.

Creo que lo más interesante de este proyecto es lo mucho que aprendí de Tableau partiendo desde cero, buscando ejemplos que me sirviesen a mi dashboard, utilizando fórmulas que nunca había realizado, queriendo crear gráficas que no sabía hacer, y pudiendo juntar dos de mis pasiones todo se hace más fácil.

Pablo Sainz de Vicuña Data Analyst Senior en Inetum • Profesor Visualización en datahack school •

 linkedin.com/in/pablo-sainz-de-vicuna

¡Si te ha gustado el contenido de este artículo no te olvides de suscribirte a la newsletter!

Temática

Python y Machine Learning

Tiempo de lectura

5 minutos

Claves de contenido del artículo

Manipular ficheros Excel sin utilizar Microsoft Excel

Enviar correos electrónicos desde Python

Modificar formatos de imágenes


Es innegable que hoy en día tener conocimientos de programación es imprescindible. Hace años conocer y manejar adecuadamente el paquete Office “básico” (Word, Power Point, Excel) te permitía acceder a puestos laborales mejores que la media. Hoy en día y más después de la pandemia, la utilización de las herramientas Office es un fondo de armario que casi cualquier persona tiene conocimiento.

Pero, ¿qué pasa si quieres seguir formándote y desarrollando tus capacidades para, no solo acceder más fácilmente a otros puestos de trabajo, si no también para ser un profesional mucho más productivo y que puede aportar mejores soluciones tanto en el ámbito laboral como personal?

Desde mi punto de vista, lo mejor es formarte en algún lenguaje de programación que te permita automatizar y sistematizar tareas que, de otra manera, tendrías que ejecutar de manera manual y tediosa una a una.

Para todas aquellas personas que nunca han programado, uno de los mejores lenguajes para empezar es Python: un lenguaje de programación sencillo, fácil de comprender y con una curva de aprendizaje asequible que te permitirá poner a funcionar pequeños y no tan pequeños programas.

Antonio Fernández Troyanno

Responsable de proyectos Oficina de Transformación Bergé Logistics

Autor del artículo

Con el fin de ilustrar el potencial de Python, a continuación, te presentaré una serie de proyectos programados en Python para que veas el potencial de este magnífico lenguaje de programación.


ATENCIÓN: En este artículo vais a poder ver ciertos fragmentos de código que, si no tenéis conocimiento ninguno de programación, quizás pueda asustarte. Aleja esos terrores de tu mente, con un poco de trabajo y formación, verás que no es nada del otro mundo.

  1. Manipular ficheros Excel sin utilizar Microsoft Excel
  2. Enviar correos electrónicos desde Python
  3. Modificar formatos de imágenes
  4. Extraer información de páginas web y crear tu propio algoritmo de Machine Learning

¡Vamos con ello!


Manipular ficheros Excel sin utilizar Microsoft Excel

En muchas ocasiones nos surge la necesidad de concatenar o unir varios ficheros Excel de cientos o miles de líneas.

Imaginemos que cada mes se genera un reporte con información de financiera de la empresa, información de tus cuentas bancarias o cualquier otro ejemplo que se te pueda ocurrir.

Imagina que tenemos 12 ficheros Excel con sus mismas columnas y necesitamos unificar toda esa información en 1 solo fichero.

¿Qué soluciones tenemos?

Opción a) Abrir uno a uno cada fichero, copiar y pegar esa información y repetir esa tarea 10 veces más. 

Opción b) Utilizar algún lenguaje de programación que nos permita simplificar esta tarea.

Sin duda, la opción a utilizar es la Opción b). Quizás inicialmente te lleve más tiempo programar en Python tu programa “UNIR EXCELS”, pero, ¿imagina que en lugar de 12 ficheros son 50? O, peor aún, que cada semana tienes que unificar 20 Excels….

¿No tiene sentido programar y automatizar esa tarea? Pues con Python podrías, y es mucho más sencillo de lo que parece…

<script src="https://gist.github.com/afernandez119/c4777133ef457f9569684811d611eb18.js"></script>

Interfaz de usuario gráfica, Texto, Aplicación, Correo electrónico, Sitio web

Descripción generada automáticamente

Con nuestro Máster Experto en Data Science y Big Data puedes profundizar en las aplicaciones de Python y así volverte un experto en la materia.

Enviar correos electrónicos desde Python

¿Quién podría imaginar que utilizando Python podríamos automatizar el envío de correos electrónicos? 

Imagina que todos los días tienes que enviar una serie de correos electrónicos a proveedores, empleados o alumnos, ¿por qué no automatizarlo?

En Python existen diferentes librerías que te facilitan esta tarea, veamos un ejemplo.

<script src="https://gist.github.com/afernandez119/6a93f9ad5673efcc29e0061cb1c0141e.js"></script>

Interfaz de usuario gráfica, Texto, Aplicación, Correo electrónico

Descripción generada automáticamente

Modificar formatos de imágenes

¿Nunca te ha pasado que necesitas cambiar la extensión de una imagen y no sabes cómo hacerlo?

Buscas en Google como un loco y te sale un montón de servicios online, software de gratis pero con limitaciones, … ¿por qué no utilizar Python para esto?

Gracias a la librería de Python Pillow podremos, entre otras muchas cosas, modificar la extensión de nuestra imagen de forma rápida y sencilla (3 líneas de código…)

<script src="https://gist.github.com/afernandez119/f712eeb44ed35471b32cce379554c5d7.js"></script>

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Extraer información de páginas web y crear tu propio algoritmo de Machine Learning

Y…. ¿si queremos algo más elaborado? ¡Pues aquí tienes! A continuación te presento un proyecto mucho más completo en Python en el que intentamos predecir el éxito que va a tener una noticia antes de publicarla analizando el éxito que tuvieron noticias pasadas.

El proyecto incluye:

En este caso te un vídeo del proyecto completo sobre “Cómo predecir el éxito de una noticia mediante Machine Learning”

Y… ¡hasta aquí el artículo de hoy! Como ves estos son 4 ejemplos muy diversos sobre el potencial que tiene la utilización de Python a nivel profesional y personal, sin duda una herramienta muy potente e imprescindible conocer en el entorno de digitalización actual.

Atrévete a formarte con nuestro Máster Experto en Data Science y Big Data

Una formación 100% online y adaptada a ti para que te conviertas en un especialista en Inteligencia de Negocio

Qué es Python

Es un lenguaje de programación de código abierto. Su filosofía es que su sintaxis favorezca la legibilidad. También la favorece el hecho de que el contenido de los bloques de código está delimitado mediante indentación (espacios o tabuladores). Esto hace que sea simple, versátil y de desarrollo rápido.

Otras de sus características:

Qué podemos hacer con Python:

Con este lenguaje de programación podemos crear todo tipo de programas: desde software para aplicaciones científicas o comunicaciones de red hasta juegos y apps. También se utiliza mucho en el mundo del Big Data & Analytics para extracción de datos, visualización de los mismos, estadística avanzada y el uso del machine learning sobre esas estructuras para mecanizar tareas analíticas, entre muchos otros usos.

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Al ejecutar una aplicación a través de la línea de comandos, muchas veces no somos conscientes de la enorme cantidad de opciones o parámetros que esta puede admitir. A menudo esto se debe a que prácticamente siempre utilizamos esa aplicación o ese comando de la misma manera (por ejemplo en el caso del cat de UNIX), pero si hacemos el ejercicio de repetir la invocación acompañada de –help (o a veces -h), veremos que normalmente los comandos van acompañados de su buena ristra de opciones.

docopt_1 lenguaje de programación python

A tener en cuenta

Cuando somos meramente usuarios el problema se limita a que tenemos que dedicarle un tiempo a leer y entender la documentación para ver las opciones disponibles. ¿Qué ocurre cuando somos nosotros los que tenemos que desarrollar una aplicación que tenga que recibir una cantidad determinada de parámetros? Existen dos principios básicos a tener en cuenta:

La librería argparse es una de las más utilizadas para abordar esta tarea y ofrece un abanico muy amplio de posibilidades. Hoy vamos a presentar otra librería, quizá menos conocida pero más intuitiva, que es docopt. En docopt, nosotros solamente tenemos que pensar la clásica descripción de uso (Usage) que encontramos en la mayoría de los comandos o programas. Una vez hayamos definido las distintas modalidades de uso, escribiremos el bloque de texto resultante como un comentario multilínea Python (entre triples comillas dobles). Vamos a ilustrar esto con un sencillo ejemplo. Supongamos que estamos haciendo una calculadora básica en Python capaz de sumar, restar, multiplicar, dividir, hacer potencias y raíces cuadradas.

Ejemplo de usage

Nuestro Usage podría ser algo así:

docopt_2 lenguaje de programación python

Esto es todo lo que necesita docopt para parsear por nosotros los argumentos con los que puede funcionar nuestra aplicación. Como veis, no se puede decir aún que hayamos tirado una sola línea de código :). Ahora sí vamos a meter algo de código (aunque solo sea importar la librería e invocar al método que hará la magia):

docopt_3 lenguaje de programación python

A partir de esto, ya podemos probar a ejecutar el código, lo hemos llamado metido en un fichero que hemos llamado calculator.py.

Ahora pueden ocurrir tres cosas:

La primera (y más habitual) es que el usuario que ejecute por primera vez la aplicación vaya a ciegas y no la invoque como nosotros esperamos, por ejemplo con un simple python calculator.py:

docopt_4 lenguaje de programación python

Vemos cómo, automáticamente, se nos muestra cuáles son las posibles formas de uso de calculator.py. La segunda es que nuestro usuario pruebe a utilizar el típico parámetro -h o –help para informarse de las modalidades de ejecución:

docopt_5 lenguaje de programación python

Obteniendo también el resultado deseado (podemos probar también con –version para ver cómo nos informa de la versión de nuestra aplicación, esto es posible gracias a que hemos rellenado el parámetro correspondiente al invocar el método docopt). Finalmente la tercera es que nuestro usuario sepa cómo ejecutar la aplicación, en este caso docopt almacenará por nosotros todos los posibles parámetros en un diccionario de Python (fijaos que anteriormente añadimos un print(arguments) para poder ver cómo docopt ha dispuesto nuestros argumentos en un diccionario)

docopt_6 lenguaje de programación python

A partir de aquí ya es nuestra labor hacer lo que queramos con los argumentos, referenciándolos como cualquier elemento de un diccionario, por ejemplo:

docopt_7 lenguaje de programación python

Conclusión

Esto es solo una muestra de las opciones que nos ofrece docopt para construir nuestro Usage (realmente soporta las definidas en el estándar IEEE Std 1003.1 más conocido como POSIX). Si queréis probarlo, bastará con que lo instaléis mediante pip install docopt en vuestro entorno (está probado desde la versión de Python 2.6 a la 3.5). ¡Feliz parseo!

MÁSTER EXPERTO EN BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y los circuitos cuánticos con Qiskit de python. En el tercero hablamos de la Esfera Bloch, la superposición y cómo construir un circuito cuántico.

En el cuarto artículo de esta serie se introdujeron conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. Ahora es turno de ver cómo representar varios qubits y de adentrarnos en la propiedad conocida como entanglement.

Múltiples qubits

En este punto vamos a empezar a trabajar con estados cuánticos formados por varios qubits. Si recordamos lo que vimos anteriormente, un estado cuántico lo podemos asemejar a una distribución de probabilidad y un qubit es un estado cuántico de 2 niveles [a0, a1],  de forma que podemos representar un estado cuántico mediante un vector columnar.

Para hacer referencia a su label (el nombre de dicho estado) se utilizará lo que se denomina ket en la notación Dirac, es decir, podemos referirnos a nuestro estado cuántico mediante el ket . Para continuar refrescando conceptos previos, estas distribuciones de probabilidad deberán tener norma 1 en la norma L2.

Por tanto recapitulando, podemos escribir un qubit de la siguiente forma:

Introducción a la Computación Cuántica con Qiskit

Donde a0 y a1 reciben el nombre de amplitudes de probabilidad y son números complejos, por lo que no solo estaremos restringidos al cuadrante positivo del plano como ocurría con las distribuciones de probabilidad clásica, cuya norma debe ser igual a 1 en la norma L1 y además cada probabilidad debía ser mayor o igual a 0 (lo que únicamente permitía representaciones en el cuadrante positivo citado anteriormente).

Como en computación cuántica el requisito de normalización debe ser la norma L2 eso puede formalizarse para el caso de un qubit en que:

Introducción a la Computación Cuántica con Qiskit

Podemos encontrar 2 qubits especiales llamados vectores de base canónica en 2 dimensiones que son:

Introducción a la Computación Cuántica con Qiskit

La parte interesante es que podemos expandir cualquier qubit en esta base de la siguiente forma dando lugar al fenómeno de superposición:

Introducción a la Computación Cuántica con Qiskit

Según la regla de Born, si extraemos una muestra del qubit |(|) > obtendremos la salida 0 con una probabilidad |a0|2 y la salida 1 con una probabilidad de |a1|2.

Producto Kronecker

Una vez finalizado este repaso, toca ponernos manos a la obra con nuevos conceptos. Vamos a comprobar cómo añadir más qubits nos permite introducir otro fenómeno cuántico.

En este punto nos puede surgir la duda sobre cómo representar en forma de vector columnar 2 qubits. La forma de hacerlo es empleando la operación de producto de tensores o producto Kronecker. Para entenderlo vamos a ver un ejemplo en el que partimos de 2 qubits: |(|) > y |(|)` > :

Introducción a la Computación Cuántica con Qiskit

El producto de tensores o producto Kronecker de esos 2 qubits será:

Introducción a la Computación Cuántica con Qiskit

Vamos a concretar un poco más. Supongamos que tenemos almacenado en el registro cuántico qr0 un qubit que está en el estado |0> y también disponemos de otro registro cuántico llamado qr1 que de forma similar al anterior almacena un qubit en el estado |0>. Una forma de visualizar la regla del producto Kronecker de esos 2 qubits (|0> ⊕ |0>) sería mediante el siguiente código:

Introducción a la Computación Cuántica con Qiskit

El estado resultante del producto Kronecker de esos dos qubits que cada uno de ellos se encuentra en el estado |0> se suele representar como |00>. Si quisiéramos representar los estados |01>, |10> y |11> tendríamos que seguir el mismo procedimiento que hemos realizado para generar el ket |00>.

Hay que señalar que los estados |00>, |01>, |10> y |11> forman los vectores de base canónica en un espacio de números complejos de 4 dimensiones denotado como:

Introducción a la Computación Cuántica con Qiskit

Conclusión

Cuando empleamos modelos de Machine Learning y Deep Learning también trabajamos con espacios de alta dimensionalidad pero no se construyen como un producto de tensores sino que suele tratarse de Rn, es decir, un mapeo a los números reales para alguna dimensión ‘n’.

El efecto de construir espacios de alta dimensionalidad empleando producto de tensores es que no todos los vectores de dicho espacio pueden ser escritos como el producto de vectores de los elementos de ese espacio. Este hecho que en principio puede parecer confuso, nos permitirá descubrir la propiedad cuántica conocida como entanglement, que recorreremos en el siguiente artículo viendo cómo la podemos observar empleando Qiskit.  ¡No te lo pierdas!


MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Temática

Google Colab

Tiempo de lectura

7minutos

Claves de contenido del artículo

Herramienta Google Colab

Creación de una cuenta

Carga de datos

Carga de datos en disco local

Operaciones básicas


Dentro del mundo del Data Science, existen iniciativas muy interesantes, y una de las que más no puede interesar, además de todos las opciones formativas y herramientas disponibles, son los Google Colab.

Colab es un servicio cloud, basado en los Notebooks de Jupyter, que permite el uso gratuito de las GPUs y TPUs de Google, con librerías como: Scikit-learn, PyTorch, TensorFlow, Keras y OpenCV. Todo ello con bajo Python 2.7 y 3.6, que aún no está disponible para R y Scala.

Aunque tiene algunas limitaciones, que pueden consultarse en su página de FAQ, es una herramienta ideal, no solo para practicar y mejorar nuestros conocimientos en técnicas y herramientas de Data Science, sino también para el para el desarrollo de aplicaciones (pilotos) de machine learning y deep learning, sin tener que invertir en recursos hardware o del Cloud.

Con Colab se pueden crear notebooks o importar los que ya tengamos creados, además de compartirlos y exportarlos cuando queramos. Esta fluidez a la hora de manejar la información también es aplicable a las fuentes de datos que usemos en nuestros proyectos (notebooks), de modo que podremos trabajar con información contenida en nuestro propio Google Drive, unidad de almacenamiento local, github e incluso en otros sistemas de almacenamiento cloud, como el S3 de Amazon.


Empezando a trabajar con Colab

Para poder tener nuestro espacio de trabajo en Colab, tendremos que tener una cuenta de Google y acceder al servicio de Google Drive. Una vez dentro, le daremos a Nuevo > Carpeta, poniéndole el nombre que consideremos, por ejemplo: “MisColabs”.

Para crear nuestro primer Colab, entraremos dentro de la carpeta que hemos creado y daremos a Nuevo > Más > Colaboratory,  a continuación se abrirá un nuevo notebook.

Otra opción sería ir directamente a Google Colab.

Lo siguiente sería cambiar el nombre del notebook, haciendo clic en el nombre del notebook (esquina superior-izquierda) o yendo al menú Archivo > Cambiar nombre

Una vez hecho esto, hay que establecer el entorno de ejecución: menú Entorno de ejecucción > Cambiar tipo de entorno de ejecucción, tras lo que se abrirá la siguiente ventana.

En la mismo indicaremos las versión de Python ( 2 ó 3)  y la unidad de procesamiento que se usará para ejecutar el código del Notebook: CPU (None), GPU ó TPU.


Cargando los datos

A la hora cargar los datos, que se usarán en el notebook, existen varias opciones, pero aquí veremos tres:

Para montar y habilitar el acceso a nuestro Google Drive, ejecutaremos el siguiente código:

from google.colab import drive

drive.mount('/content/gdrive')

Al hacer esto, nos pedirá un código de autorización y la url donde podemos conseguirlo. Al hacer clic en dicha url, nos llevará al proceso de validación de nuestra cuenta de Google y luego nos mostrará el código de acceso que tenemos que copiar y pegar, en el sitio correspondiente. A continuación hay que dar a Enter.

Tras hacerlo, lo validará y montará nuestro google drive en el notebook, apareciendo el siguiente mensaje: “Mounted at /content/gdrive”.

Para verlo, tendremos que hacer clic en la flecha que esta en el margen superior izquierdo e ir a la pestaña de archivos. En el veremos dos carpetas: sample_data (datos de ejemplo) y Google drive (nuestro Google drive).

Si lo que queremos es traernos los datos de una fuente externa, por ejemplo, una instancia S3 de Amazon, podremos hacerlo haciendo uso de comandos como: !wget y !unzip. Tal y como se muestra a continuación:

!wget -cq https://s3.amazonaws.com/content.udacity-data.com/courses/nd188/flower_data.zip

!unzip -qq flower_data.zip

Al ejecutar estás dos sentencias, el dataset flower_data, se cargará y estará disponible en nuestro notebook, podremos verlo en la pestaña de archivo.

Por último, si queremos cargar datos que tenemos en nuestro disco local, podremos hacerlo siguiendo los siguientes pasos:

1.- Dar al botón subir, que esta en el margen superior izquierdo de la pestaña de archivos.

2.- Buscamos el archivo que queremos subir, en mi caso el archivo winequality.csv que tengo el directorio ./Descargas/data, de mi disco duro local.

3.- Cuando le damos a abrir, nos aparecerá un mensaje de advertencia, diciendo que los datos se borrarán al finalizar la sesión, lógico al tratarse de un servicio gratuito. Simplemente es algo que tendremos que tener en cuenta a la hora de usar este servicio. Una opción sería guardar nuestros datos en Google Drive y evitar que se borren cuando cerremos nuestra sesión de Colab.

4.- El archivo que hemos cargado, aparecerá en la pestaña de Archivos.


Operaciones básicas

Con los archivos cargados,  podremos realizar una operativa similar a la que haríamos desde una consola de linux. Se usan los mismos comandos, pero poniendo el símbolo de admiración delante. Así, podremos:

A continuación pongo un par de imágenes con algunos ejemplos, pero si queréis probar vosotros mismos, cosa que recomiendo, os dejo un enlace al notebook donde he ido haciendo todo esto

Nota: El archivo winequality.csv, lo podéis descargar desde el siguiente enlace.

Y hasta aquí esta introducción a los Google Colab, en la próxima entrega veremos como instalar librerías de Python, para luego usarlas en la construcción y entrenamiento de un modelo de clasificación.

Atrévete a formarte con nuestro Máster Experto en Data Science y Big Data

Una formación 100% online y adaptada a ti para que te conviertas en un experto métodos de minería y sus herramientas

Datahack también se centra ahora en Python. La entidad sigue avanzando en su afán de traer formación de Big Data y Analytics de calidad. Y en este tercer evento, tras hablar de Machine Learning y Blockchain en las otras ediciones, ahora le tocaba al Análisis de Datos usando una de las herramientas más empleadas por los profesionales, el lenguaje de programación Python.

La mejor formación en Big Data y asequible para todos.

Esta charla cerraba el círculo con la primera de Machine Learning, pues como se nos recalcaba, no es posible dar ese paso sin haber realizado antes un exhaustivo Análisis de los Datos. Se dividió en dos partes, una primera más teórica sobre los pasos para ese análisis y los fundamentos de Python como herramienta para realizarlo. Y una segunda en la que se hizo un ejercicio sobre unos datos reales para reforzar lo explicado antes, y ver el potencial de este lenguaje.

Proceso de Ciencia de Datos

Tras el índice, fue lo primero que se presentó. El marco completo del proceso que lleva a cabo un científico de datos, desde el origen de éstos hasta la solución final que se le dé al problema que se quiere resolver, pasando por las etapas de Extracción, Procesado, Limpieza, EDA (Análisis Exploratorio de datos o como se conoce en inglés: Exploratory Data Analysis), Machine Learning e Implantación.

Se recalcó con insistencia en que lo que hay que tener presente en todo momento, y por su puesto bien definido, es el problema que se quiere resolver. Esta concreción del problema nos ayudará a enfocar cada una de las etapas del proceso, especialmente en la etapa del EDA.

Y respecto al EDA, en la presentación se nos recordaba que el término fue acuñado por el conocido estadístico John Tukey en 1977, y lo definía como “una actitud, un estado de flexibilidad, una voluntad de buscar aquellas cosas que creemos que no están allí, también aquellas que creemos que sí están”.

Después de explicar los pasos habituales que se hacen en este EDA, que es la base del Análisis de los Datos, y recordándonos también que el EDA es algo que se hace en paralelo con las otras etapas de procesado de la información, se pasó a hablar de la herramienta Python.

Python, herramienta extendida para el Análisis de Datos

Asentada la base del Análisis de los Datos, ahora tocaba ver cómo se hacía. Y en esta ocasión se aborda usando el lenguaje de programación Python, lenguaje interpretado creado en 1989 por Guido Van Rossum. Está claro, ¿no? Desde siempre se está haciendo un guiño al grupo británico de humor “Monty Python” a la hora de elegir el nombre.

Lo primero que se habló es el porqué de su popularidad, destacándose que tenía una comunidad que lo soportaba muy grande, que está esponsorizado por Google y Facebook entre otros. Y, además, que tenía Big Data, 140000 librerías y que además era eficiente, fiable y abierto. ¡ Qué más se puede pedir !

Las librerías imprescindibles de Python

Y sin más, se pasó a describir las librerías más importantes para el análisis de datos: numpy, pandas, matplotlib y seaborn.

Numpy es la base, la librería para los cálculos rápidos, usando la vectorización, o lo que es lo mismo, operaciones entre vectores evitando usar bucles “for”. Y ahí se aprovechó para recordarnos el evitar usar bucles “for” cuando se manejan grandes volúmenes de datos.

El hecho de que la librería numpy esté pensada para manejar grandes volúmenes de datos, esté realizada en C, y tenga un esquema optimizado de memoria, independiente del resto de objetos de Python, es la que la hacen tan importante.

Para facilitar el uso de todas las funciones de esta librería, se explicó que es recomendable tener una “chuleta” a mano siempre.

A continuación, se pasó a hablar de la librería más importante del proceso de Ciencia de Datos, pandas, que usando como base la anterior librería con potencial de cálculos muy rápidos, une la posibilidad de manipular datos estructurados (Dataframes y Series) con funciones muy parecidas a las que se usan en las bases de datos (SQL).

Por supuesto, pandas también tiene “chuleta”, no podía ser menos.

La visualización

Pero parece que no es suficiente con estas dos librerías, y se nos insistía bastante, la visualización es muy importante en el proceso que se explicaba al principio de la presentación. En ese descubrimiento de lo que no creemos que está en los datos, como decía Tukey, aflora cuando hacemos una buena visualización. Y para ello se nos recomendaban dos librerías, matplotlib y seaborn.

Matplotlib es la librería por excelencia de visualización de gráficas en 2D, con la que se puede visualizar prácticamente todo lo que se nos ocurra. Para ayudarnos a elegir cómo visualizar, una recomendación era que se acudiera a la galería de ejemplos que contiene tantos, que seguro nos encauza para crear nuestra gráfica. Siempre contaremos con la “chuleta”.

Y para terminar con la visualización, se habló de la segunda librería, seaborn. Permite hacer gráficos más estadísticos y con un lenguaje de alto nivel. Esta librería, que usa de base la anterior, trata de sacar a la luz las relaciones entre variables, y para que no se nos olvide ninguna función, tendremos a mano la “chuleta” también.

Finalmente, antes de ver un ejemplo práctico, se nos recordaba cuáles eran las plataformas más empleadas para usar Python: Anaconda como “distribución del software”, Spyder como entorno de desarrollo, Jupyter como aplicación web para poder compartir código y contar historias sobre los datos, sin olvidar un buen editor Notepad++

Ejemplo de Análisis de Datos: estudio de mercado de torres eléctricas a partir de datos de aduanas

La segunda parte de la conferencia se basaba en la ejecución de código en Python usando un notebook de Jupyter, para repasar todo lo comentado hasta ahora, ya con datos reales.

Aunque el ejemplo se hacía sobre unos datos que no se pueden llamar calificar como Big Data, sólo contaban con algo más de 1500 observaciones y unas 100 características, lo que se vio es aplicable a un dataset de dimensiones miles de veces mayor, los conceptos son los mismos.

Y en referencia al Big Data, en la presentación se nos daba una definición curiosa del término: “Big Data es lo que no cabe en una Excel”. Curiosa definición, pero lo cierto es que muchos empezaron a usar Python como herramienta de análisis de datos, en el momento que Excel dejó de dar solución por el volumen de los datos.

Ejecutando código en Python

Sin más se entró a ir ejecutando el código, siguiendo los pasos del Proceso de Ciencia de Datos, empezando por la extracción de los datos, que en este caso fue una carga de un archivo en formato csv. Siguieron etapas de procesado (rellenado de missing, extracción de características con expresiones regulares, conversión de tipos de variables) y de limpieza.

Además de los datos de aduanas, se incorporaron datos para hacer un análisis más amplio, como los precios históricos de las materias primas principales, el acero y el zinc.

Vimos una librería muy interesante que realizar rápido y de forma detallada un EDA a partir de un dataframe de pandas, y lleva por nombre pandas-profiling.

Finalmente, como no podía ser menos, se realizaron varias visualizaciones, para tratar de entender el mercado de torres eléctricas en el país, viendo cómo han ido evolucionando las operaciones a lo largo de los años, quiénes han exportado, qué volúmenes y a qué precio. Ahí vimos el potencial de visualización tanto de matplotlib y seaborn.

Conclusión

Pasada la hora y cuarto de la presentación, hemos visto condensada esta actividad del Análisis de Datos, importante paso previo al uso de herramientas más avanzadas en Ciencia de Datos como el Machine Learning. Y vimos también su potencial, en el sencillo ejemplo a partir de datos de aduanas y precios históricos de materia prima.

Durante la ronda de preguntas, el numeroso público mostró mucho interés en el asunto, sacando a relucir temas como la arquitectura necesaria para hacer esto a gran escala y velocidad, o el uso de las GPU para la analítica, interés en las empresas por personas con perfiles que sean capaces de hacer estos análisis de datos, y otras preguntas interesantes.

Como en otras ocasiones, un asistente habitual a este ciclo de conferencias sobre Big Data, hizo su magnífica crónica del evento.

En breve estará disponible el vídeo de la presentación, de momento podemos descargarnos en github la presentación, el notebook de Jupyter, los datos para ejecutarlo y las chuletas (“cheat sheets”) de las librerías.

MÁSTER EXPERTO BIG DATA ANALYTICS

Gracias al Master Experto en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down