Las portátiles Jupyter son increíblemente potentes. A diferencia de Google Sheets o Microsoft Excel, pueden manejar grandes cantidades de datos con facilidad.
Puede realizar operaciones estadísticas complejas o manipular datos en unas pocas líneas de código. Puede ejecutar for-loops complejos para crear simulaciones de Monte Carlo sin complementos costosos como Crystal Ball .
Pero a veces necesita combinar este poder con el simple y casi universal UI comprendida de una hoja de cálculo.
Por ejemplo, es posible que desee practicar su elegante código Python en un pequeño conjunto de datos que puede manipular fácil y visualmente en Hojas de cálculo de Google.
O puede que tenga que generar los frutos de su análisis complejo en una hoja de cálculo para que su CEO o cliente no codificador pueda leerlo y entenderlo.
O puede que le resulte más fácil hacer algunos de sus trabajos de datos simples en una hoja de cálculo y solo las partes más complejas de Python.
Solía hacer esto completando mi trabajo en Hojas de cálculo de Google. Descargando un archivo CSV, tirando del Datos de archivos CSV en Jupyter, manipulación de mis datos, exportación de otro archivo CSV y carga de nuevo en Hojas de cálculo de Google. Enjuague y repita para cada depuración o nueva iteración de datos. Yuck.
Pero luego me di cuenta de que Google proporciona una API para conectar hojas a cualquier aplicación de terceros que puedas soñar, incluidas las notebooks Jupyter. Después de retocar un poco, descubrí cómo extraer fácilmente los datos más actualizados de mis hojas de cálculo de Google en Jupyter y los datos de salida de Jupyter a Google Sheets.
Se necesita un poco de configuración de una sola vez. Pero si se encuentra yendo y viniendo entre hojas y Jupyter u ocasionalmente pierde la facilidad de uso de hojas de cálculo, o necesita actualizar los datos en hojas de Jupyter rápidamente, entonces este tutorial es para usted.
NOTA: Estoy usando Python 2.7.14 y Anaconda versión 4.3.30. Puede ver mi entorno completo aquí y mi cuaderno de ejemplos completo utilizado en la parte 2 aquí .
Primera parte: cree sus credenciales de desarrollador de Google
Antes de conectar nuestras notebooks Jupyter a nuestras hojas de google, primero debemos crear credenciales de desarrollador de Google con permiso para acceder a Google Drive. Esta parte es un poco larga y complicada, pero solo tiene que hacer esto una vez para todos los cuadernos y hojas.
Crear un Google Developer Project
Ir a la Consola para desarrolladores de Google .
Click Crear proyecto .


Introduzca un nombre de proyecto: solo uso un proyecto para todos mis cuadernos en lugar de crear uno nuevo para cada proyecto, por lo que denominé mi proyecto “Jupyter y Hojas de cálculo de Google”. También puede cambiar el nombre del ID del proyecto si lo desea.
Haga clic en Crear .
Habilite el API de Google Drive
Después de crear su proyecto, Google lo llevará de regreso a Developer Console. Tuve que actualizar la página para ver mi nuevo proyecto. Haga clic en su nuevo proyecto.

Vaya al panel de API y servicios haciendo clic en el menú Hamburguesa a la izquierda y seleccione API y servicios > Panel de control

Haga clic en API de Google Drive .

Haga clic en Habilitar .

De acuerdo. Ahora hemos creado nuestro proyecto de Google Drive. Obtenga las credenciales para usarlo.
Cree credenciales para usar la API de Google Drive
Después de habilitar la API de Google Drive, Google debe llevarlo a la consola de la API de Google Drive para su proyecto.
Haga clic en Crear credenciales .

Seleccione Otra UI para “¿A dónde llamará la API?”.

Seleccione Datos de usuario para “A qué datos va a acceder ? “Y haga clic en ¿Qué credenciales necesito? .

Ingrese un nombre y haga clic en Crear ID de cliente .

Seleccione su dirección de correo electrónico, ingrese el nombre de un producto y haga clic Continúe .
Descargue sus credenciales y guárdelas en la carpeta donde piensa crear su Jupyter Notebook.


Crear credenciales de cuenta de servicio
El último paso para establecer nuestras credenciales es crear credenciales de la cuenta de servicio para que podamos conectar a nuestro cliente (lo que acabamos de crear ) a nuestro Google Drive personal real.
Regrese al panel de Credenciales y cree una Clave de cuenta de servicio .

Seleccione Nueva cuenta de servicio , establezca el nombre de la cuenta de servicio en Google Sheets , establezca la función en Usuario de la cuenta de servicio , deje el tipo de clave como JSON, haga clic en Crear .

Guarde el archivo JSON a la carpeta donde tiene la intención de crear su Jupyter Notebook (asegúrese de que el nombre del archivo no tenga espacios como este).

De acuerdo. Uf. Tenemos nuestras credenciales de desarrollador de Google con permisos para acceder a Google Drive y, por lo tanto, a Hojas de cálculo de Google.
Parte dos: conecte Jupyter a Hojas de cálculo de Google
Ahora conectemos nuestro cuaderno Jupyter a nuestra Hoja de cálculo.
Instale los paquetes necesarios usando conda install y pip.
conda install pandas jupyter
pip install gspread oauth2client df2gspread
Todo el trabajo anterior solo tendrá que hacer una vez. A partir de ahora, será fácil extraer datos de una hoja de Google en un cuaderno Jupyter y viceversa.
Primero, necesitará una hoja de cálculo. Esto puede ser cualquier hoja. Utilizaremos los datos de puntuación de candidato de mi artículo CEO of America .
Para permitir que su cuaderno Jupyter acceda a la Hoja de cálculo de Google, deberá compartir la hoja con las credenciales de desarrollador de Google que creó en la primera parte.
Para hacerlo, abra el archivo de credenciales de la cuenta de servicio en Jupyter o un editor de texto.

Copie el atributo client_email.


Regrese a su hoja de cálculo y haga clic en Compartir .
Pegar el correo electrónico de cliente en el cuadro de personas y haga clic en Enviar .

Necesitará repetir el paso anterior para cualquier hoja que desee extraer de los portátiles Jupyter.
Extraiga los datos de las hojas de Google en el cuaderno Jupyter. Abra o cree un cuaderno Jupyter. La versión completa de mi cuaderno está disponible aquí