Exporte el marco de datos de Pandas a Google Sheets usando Python

Hira Arif 15 febrero 2024
Exporte el marco de datos de Pandas a Google Sheets usando Python

Hojas de cálculo de Google es un programa de hojas de cálculo en línea basado en la web ofrecido por Google. Es una aplicación en tiempo real que permite a los usuarios crear y modificar hojas de cálculo y compartir datos en línea.

La mayoría de las organizaciones piden a varios usuarios que trabajen simultáneamente en una sola hoja de cálculo. Esta colaboración realiza un seguimiento de cada actualización realizada por el usuario específico en el documento.

Podemos tomar el marco de datos de Pandas como la estructura de datos bidimensional, es decir, una tabla que tiene filas y columnas, similar a una matriz bidimensional pero con ejes etiquetados.

Si tiene marcos de datos de Pandas para exportar a Hojas de cálculo de Google, puede hacerlo usando Python, como se explica en este tutorial.

Exporte el marco de datos de Pandas a Google Sheets usando Python

Para exportar el marco de datos de Pandas a la hoja de Google, debemos seguir los tres pasos que se enumeran a continuación:

  1. Proyecto de sincronización con la consola API de Google.
  2. Acceda a la API de hojas de cálculo de Google.
  3. Exporte el marco de datos de Pandas a la hoja de Google.
  • Proyecto de sincronización con la consola API de Google.

    Para sincronizar el proyecto con la consola API de Google, primero debemos crear un proyecto a través de Google Cloud Console.

    exporte el marco de datos de pandas a las hojas de Google usando python - cree un proyecto

    Para crear credenciales, debemos habilitar las siguientes dos API buscando en la barra de búsqueda:

    -API de Google Drive

    • API de hojas de Google

    Ahora, ¿cómo crear credenciales? Para hacer eso, estamos obligados a seguir los siguientes pasos:

    1. Haga clic en Crear Credenciales.
    2. Seleccione Cuenta de servicio, ingrese Nombre de cuenta de servicio y luego presione Listo (el resto de la información es opcional)
    3. Una vez creada, haz clic en ella, ve a la pestaña Claves y descarga la clave en formato JSON.

    exporte el marco de datos de pandas a hojas de google usando python - cree credenciales

    El contenido del archivo JSON descargado (guardado en el archivo service_account.json) puede verse así:

    {
      "type": "service_account",
      "project_id": "some-project-id",
      "private_key_id": "eb...25",
      "private_key": "-----BEGIN PRIVATE KEY-----\nNrDyLw...jINQh/9\n-----END PRIVATE KEY-----\n",
      "client_email": "123...999-yourclientemail@projectid.iam.gserviceaccount.com",
      "client_id": "473...hd.apps.googleusercontent.com",
      ...
    }
    
  • Acceda a la API de hojas de cálculo de Google.

    Instale las siguientes bibliotecas de Python para conectarse e interactuar con Hojas de cálculo de Google.

    • gspread
    PS C:\> pip install gspread
    
    • oauth2cliente
    PS C:\> pip install oauth2client
    

    Vamos a crear un cliente a través del código usando la API descargada para conectar las Hojas de cálculo de Google.

    Código de ejemplo (guardado en demo.py):

    import gspread
    from oauth2client.service_account import ServiceAccountCredentials
    
    
    def create_connection(service_file):
        client = None
        scope = [
            "https://www.googleapis.com/auth/drive",
            "https://www.googleapis.com/auth/drive.file",
        ]
        try:
            credentials = ServiceAccountCredentials.from_json_keyfile_name(
                service_file, scope
            )
            client = gspread.authorize(credentials)
            print("Connection established successfully...")
        except Exception as e:
            print(e)
        return client
    
    
    service = "service_account.json"  # downloaded Credential file in JSON format
    client = create_connection(service)
    

    Primero, importamos gspread, y desde Python Package outh2client, importamos una clase ServiceAccountCredentials almacenada en el archivo service_account.py.

    La función create_connection() conecta cliente a las Hojas de cálculo de Google. Toma como argumento el service_file donde se almacena la clave de la credencial.

    No olvide mantener service_account.json en el mismo directorio que demo.py o almacenar su ruta en la variable service. Dentro de esta función, creamos las credenciales usando ServiceAccountCredentials.from_json_keyfile_name().

    Luego proporcionamos las credenciales a gspread.authorize() que comprueba su autenticidad y crea un cliente si la clave almacenada en service_file es válida.

    En caso de cualquier error, esta función imprimirá la Excepción sin romper el programa.

  • Exporte el marco de datos de Pandas a la hoja de Google creada.

    Para exportar el marco de datos de Pandas a una hoja de Google, primero debemos crearlo. Escribamos un código que cree una hoja de Google.

    Código de ejemplo (guardado en demo.py):

    def create_google_sheet(client, sheet_name):
        google_sheet = None
        try:
            google_sheet = client.create(sheet_name)
            google_sheet.share(
                "@gmail.com",  # enter the email you want to create a google sheet on
                perm_type="user",
                role="writer",
            )
            print("Google Sheet created successfully...")
        except Exception as e:
            print(e)
        return google_sheet
    
    
    service = "service_account.json"  # downloaded Credential file in JSON format
    client = create_connection(service)
    
    sheet_name = "50_Startups"  # google sheet name of your choice
    google_sheet = create_google_sheet(client, sheet_name)
    

    La función create_google_sheet toma el cliente y sheet_name ya creados como argumentos y utiliza la función client.create() para crear una hoja de Google.

    Tenga en cuenta que esta hoja de Google se crea en el cliente creado con la API descargada. Entonces debemos compartirlo con el correo electrónico que usamos para crear una cuenta de servicio, dando permisos de escritura usando la función google_sheet.share().

    Aquí, el paso final es exportar datos a Hojas de cálculo de Google. Para ello, debemos instalar la librería de Python pandas usando lo siguiente:

    PS C:\> pip install pandas
    

    Ejecutemos ese código que finalmente exporta el marco de datos de Pandas a las hojas de Google.

    Código de ejemplo (guardado en demo.py):

    import pandas as pd
    
    
    def export_dataframe_to_google_sheet(worksheet, dataframe):
        try:
            worksheet.update(
                [dataframe.columns.values.tolist()] + dataframe.values.tolist()
            )
            print("DataFrame exported successfully...")
        except Exception as e:
            print(e)
    
    
    df_file = "50_Startups.csv"
    dataframe = pd.read_csv(df_file)
    worksheet = google_sheet.get_worksheet(0)
    export_dataframe_to_google_sheet(worksheet, dataframe)
    

De forma predeterminada, ya hay una hoja de trabajo creada dentro de las hojas de Google. Podemos acceder desde google_sheet usando el índice como google_sheet.get_worksheet(0).

Luego exportamos el marco de datos usando la función export_dataframe_to_google_sheet(). Simplemente enumera el marco de datos y lo exporta a las hojas de Google.

Ahora, ejecutamos el archivo de Python demo.py como:

PS C:\> python demo.py

Salida (impresa en la consola):

exporte el marco de datos de pandas a hojas de google usando python - salida

Mientras que el marco de datos exportado a las hojas de Google es el siguiente:

exporte el marco de datos de pandas a hojas de google usando python - salida de hojas de google