Como Crear Un Gráfico de Gantt Accediendo Por La API the Google

Danilo Galindo
Jun 17, 2020

Contents Outline

Como Crear Un Gráfico de Gantt Accediendo Por La API the Google

Jun 17, 2020 4 minutes read

Como sabemos existen diversas formas de  almacenar nuestros datos. Normalmente, podemos leer y extraer información de manera sencilla por medio de archivos txt.csv entre muchos otros. Sin embargo, también podemos extraer información de la nube de Google. En este post nos enfocaremos en extraer datos de la API de Google spreadsheet y graficar un diagrama de Gantt con estos datos.

Para esto, seguiremos de forma general los pasos que se encuentran a continuación.

  • Crear un spreadsheet de Google con datos de tareas y sus respectivos tiempos.
  • Acceder a https://console.developers.google.com/ y crear un nuevo proyecto.
  • Habilitar la API de Google drive.
  • Crear nuestras credenciales.
  • Habilitar la API de Google sheets.
  • Compartir acceso de nuestro Google sheet atreves de la API con las credenciales previamente creadas.
  • Crear nuestro jupyter notebook y que empiece la acción !!!

El primer paso como antes mencionado es crear nuestro spreadsheet llamado times con los siguientes campos. 

  • Task_id
  • start_time
  • end_time
  • date 


Luego accedemos a https://console.developers.google.com/  y creamos nuestro proyecto.



Le damos un nombre a nuestro proyecto y dejamos el campo ubicación como ninguna. Esto no afectará nuestro proyecto, después hacemos click en continuar.



En este paso, buscaremos la biblioteca de Google dando click en APIs y servicios.



Buscamos por Google drive API y le damos habilitar.



Damos click en crear credenciales. 



Luego, configuramos nuestras credenciales como sigue en la parte inferior. 



Damos click en la opción “Que credenciales necesito” y configuramos como sigue a continuación.



Seleccionamos  continuar y se nos generará un archivo .json. Este debe asegurarse, ya que lo utilizaremos más adelante.

Nuevamente buscamos en la librería de Google la API de Google sheets y le damos habilitar.



Abrimos nuestro .json file que fue descargado en pasos previos. De este, copiamos nuestro “client_email” para ser compartido con nuestro spreadsheet.


Para ello accedemos a nuestro spreadsheet y damos click en compartir para pegar nuestro email.



Es hora de crear nuestro Jupyter Notebook para comenzar a jugar con nuestro spreadsheet. 

Como requerimiento debemos instalar gspread y oauth2client con el comando pip como sigue a continuación.

!pip install  gspread oauth2client

Después, importamos las librerías previamente descargadas.



Creamos nuestro scope para ser usado en las credenciales.



Creamos nuestras credenciales con ServiceAccountCredentials y pasamos como argumento nuestro .json file con el scope.



Creamos nuestro cliente con gspread.


Abrimos nuestra hoja donde está contenida la información de nuestro spreadsheet llamado times


Podemos conseguir nuestra data con el comando get_all_records().


Imprimimos nuestra data.


Si queremos una forma amigable de imprimir nuestros datos solo importemos pprint.

from pprint import pprint


Podemos incluso extraer las filas como sigue a continuación.


Elaboremos nuestro diagrama de Gantt. 

Importamos pandas como de costumbre. 


Creamos nuestro DataFrame con la data proveniente del spreadsheet.

 

Si revisamos el tipo de datos contenido en el DataFrame, nos daremos cuenta que es de tipo string. Por lo cual necesitaremos pasar los campos date,end_time y start_time a tipo time.

El campo date será de tipo datetime y los campos start_time y end_time serán de tipo Timedelta como sigue a continuación. 


Imprimimos como quedo nuestro DataFrame.



Por otro lado, no es suficiente con tener start_time y end_time en tiempo. De alguna manera debemos sacar la duración y expresarla en número entero sea en horas,minutos o segundos. Para esto, sacaremos la duración de la diferencia entre start_time y end_time y la expresaremos en minutos al igual que el start_time estará en minutos.    
 



Para graficar nuestro diagrama de Gantt solo necesitaremos los campos Task_id,start_time[m] y duration[m].


La gráfica de Gantt será originada usando la función de matplotlib broken_barh que tomará como argumentos 3 partes que serán descritas a continuación.

  • Un tuple conformado por las variables start_time y duration.
  • Un tuple conformado por el mínimo valor de la axis y y/o altura o incremento.  
  • El color de cada tarea.

Esta función debe lucir como sigue en la parte inferior.

broken_barh((start_time,duration),(y_minimum,height),color)

Ya sabemos de forma general cómo se compone la función de Gantt. Ahora es nuestro turno de graficarla siguiendo los pasos que se encuentran en la parte inferior.

Importamos matplotlib.


Creamos nuestro diccionario de colores.


Creamos una figura para graficar nuestro diagrama de Gantt. Adicionalmente, iteramos a través de un for para conseguir los valores de los campos start_time[m] y duration[m] para cada task.




Finalmente, obtenemos nuestro diagrama de Gantt para cada tarea asignada. 

Esto es un claro ejemplo que tenemos la oportunidad de poder automatizar ciertas tareas haciendo uso de la API de Google sheet. Solo basta con alimentar el spreadsheet, conectarse a la API de Google sheet y hacer uso de nuestra imaginación. 


Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!