Enviar un DataFrame a Google Sheets
Trabajando con Pandas y Google Spread Sheets
Tabla de contenido
Guía: Enviar un DataFrame a Google Sheets usando pygsheets
Esta guía te enseñará cómo enviar un DataFrame de pandas a Google Sheets utilizando la librería pygsheets. Esta biblioteca permite interactuar con Google Sheets a través de su API de manera fácil.
Requisitos previos
1. Instalar las bibliotecas necesarias:
Debes instalar las bibliotecas pandas y pygsheets si no las tienes instaladas:
pip install pygsheets pandas
2. Configurar el acceso a la API de Google Sheets:
- Ve a Google Cloud Console y crea un nuevo proyecto.
- Habilita la API de Google Sheets y la API de Google Drive.
- Crea credenciales para una “Cuenta de Servicio” y descarga el archivo JSON de las credenciales.
- Comparte tu hoja de cálculo con el correo electrónico de la cuenta de servicio que aparece en el archivo JSON.
Pasos para enviar un DataFrame a Google Sheets
1. Importar las bibliotecas
import pygsheets
import pandas as pd
2. Autenticación
Usa el archivo de credenciales JSON que descargaste al configurar tu acceso a la API de Google Sheets.
# Autenticación con las credenciales de la API
gc = pygsheets.authorize(service_account_file='ruta/a/tu/credencial.json')
3. Crear o abrir una hoja de cálculo
Puedes crear una nueva hoja o abrir una existente utilizando su nombre o ID.
# Abre una hoja de cálculo existente por nombre
sh = gc.open('nombre_de_tu_hoja')
# Si quieres abrirla por ID de la hoja:
# sh = gc.open_by_key('ID_de_tu_hoja')
4. Seleccionar una hoja específica
Elige la hoja dentro del archivo donde vas a escribir el DataFrame.
# Selecciona la primera hoja dentro de la hoja de cálculo
worksheet = sh.sheet1
5. Cargar tu DataFrame
Crea un DataFrame de ejemplo o usa uno que ya tengas.
# Crear un DataFrame de ejemplo
data = {'Nombre': ['Juan', 'Ana', 'Luis'],
'Edad': [28, 24, 22],
'Ciudad': ['Buenos Aires', 'Córdoba', 'Mendoza']}
df = pd.DataFrame(data)
6. Enviar el DataFrame a Google Sheets
Puedes escribir el DataFrame en la hoja de cálculo.
# Escribir el DataFrame en la hoja de cálculo
worksheet.set_dataframe(df, (1, 1)) # (1, 1) significa comenzar en la celda A1
7. Ajustar el tamaño de la hoja (opcional)
Puedes ajustar el tamaño de la hoja para adaptarlo al tamaño de tu DataFrame.
worksheet.adjust_column_width(start=1, end=len(df.columns))
Código completo
import pygsheets
import pandas as pd
# Autenticación con las credenciales de la API
gc = pygsheets.authorize(service_account_file='ruta/a/tu/credencial.json')
# Abre una hoja de cálculo existente por nombre
sh = gc.open('nombre_de_tu_hoja')
# Selecciona la primera hoja
worksheet = sh.sheet1
# Crear un DataFrame de ejemplo
data = {'Nombre': ['Juan', 'Ana', 'Luis'],
'Edad': [28, 24, 22],
'Ciudad': ['Buenos Aires', 'Córdoba', 'Mendoza']}
df = pd.DataFrame(data)
# Escribir el DataFrame en la hoja de cálculo comenzando en la celda A1
worksheet.set_dataframe(df, (1, 1))
# Ajustar el ancho de las columnas
worksheet.adjust_column_width(start=1, end=len(df.columns))
Notas adicionales
- Asegúrate de que la hoja de cálculo esté compartida con el correo de la cuenta de servicio.
- Si quieres actualizar solo una parte de la hoja, puedes especificar el rango en lugar de sobrescribir toda la hoja.