Visualizar datos de BigQuery en un notebook de Jupyter

BigQuery es un almacén de datos de estadísticas a escala de petabytes que puedes usar para ejecutar consultas de SQL sobre grandes cantidades de datos casi en tiempo real.

Las herramientas de visualización de datos pueden ayudarte a comprender tus datos de BigQuery y a analizar los datos de forma interactiva. Puedes usar herramientas de visualización para identificar tendencias, tomar medidas como respuesta y hacer predicciones con tus datos. En este instructivo, usas la biblioteca cliente de BigQuery, Python y Pandas en un notebook de Jupyter para visualizar los datos en la tabla de muestra natalidad de BigQuery.

Objetivos

En este instructivo podrás hacer lo siguiente:

  • Configurar un entorno para ejecutar notebooks de Jupyter.
  • Consultar y visualizar los datos de BigQuery usando la biblioteca cliente de BigQuery, Python y Pandas

Costos

BigQuery es un producto de pago y generas costos de uso de BigQuery cuando accedes a BigQuery. El precio de consulta de BigQuery proporciona el primer 1 TB por mes de forma gratuita. Para obtener más información, consulta los precios de BigQuery.

Antes de comenzar

Antes de comenzar este instructivo, usa Google Cloud Platform Console para crear o seleccionar un proyecto y habilitar la facturación.

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. BigQuery se habilita automáticamente en proyectos nuevos. Para activar BigQuery en un proyecto preexistente, ve a Habilita las BigQuery API necesarias.

    Habilita las API

Cómo configurar un entorno local de Jupyter

En este instructivo, usas un notebook de Jupyter alojado localmente. Completa los siguientes pasos para instalar Jupyter, configurar la autenticación y después instalar las bibliotecas de Python requeridas.

  1. Ejecuta el siguiente comando en tu terminal para instalar la última versión de la biblioteca cliente de BigQuery Python, incluida la biblioteca de Pandas, que requieren las funciones que usa Pandas:

    pip install --upgrade google-cloud-bigquery[pandas]
    
  2. Sigue las instrucciones de instalación en documentación de Jupyter para instalar Jupyter.

  3. Sigue las instrucciones en la página Primeros pasos con la autenticación para configurar las credenciales predeterminadas de la aplicación. La autenticación se configura cuando creas una cuenta de servicio y una variable de entorno.

Descripción general: Notebooks de Jupyter

Un notebook proporciona un entorno para escribir y ejecutar un código. En esencia, es un artefacto de origen, guardado como un archivo .ipynb. Este puede tener contenido de texto descriptivo, bloques de código ejecutables y resultados asociados (procesados como HTML interactivo). Estructuralmente, un notebook es una secuencia de celdas.

Una celda es un bloque de texto de entrada que se evalúa para producir resultados. Las celdas pueden ser de dos tipos:

  • Celdas de código: contienen un código para evaluar. Cualquier salida o resultado de la ejecución del código se procesa inmediatamente debajo del código de entrada.

  • Celdas Markdown: contienen texto markdown que convierte HTML en encabezados, listas y texto con formato.

La siguiente captura de pantalla muestra una celda de Markdown seguida de una celda de código de Python. Ten en cuenta que la salida de la celda Python se muestra inmediatamente debajo del código.

Markdown de Jupyter y celdas de código

Cada notebook abierto está asociado con una sesión en ejecución. En IPython, esto también se conoce como kernel. Esta sesión ejecuta todo el código ingresado en el notebook y administra el estado (variables, sus valores, funciones y clases, y cualquier módulo de Python existente que cargues).

Cómo consultar y visualizar datos de BigQuery.

En esta sección del instructivo, crearás un notebook de Google Cloud Datalab para consultar y visualizar datos en BigQuery. Puedes crear visualizaciones con los datos en la tabla de muestra de natalidad. Todas las consultas en este instructivo están en sintaxis de SQL estándar.

Sigue los pasos a continuación, para consultar y visualizar datos de BigQuery usando un notebook de Jupyter:

  1. Si aún no has iniciado Jupyter, ejecuta el siguiente comando en tu terminal:

    jupyter notebook
    
  2. Jupyter ahora se debería ejecutar y abrir en una ventana del navegador. En la ventana de Jupyter, haz clic en el botón Nuevo y selecciona Python 2 o Python 3 para crear un notebook nuevo de Python.

    Notebook nuevo de Python 3 de Jupyter

  3. En la parte superior de la página, haz clic en Sin título

  4. En el cuadro de diálogo Cambiar nombre de notebook, escribe un nombre nuevo como BigQuery tutorial, y haz clic en Cambiar nombre.

  5. La biblioteca cliente de BigQuery Python proporciona un comando automático que te permite ejecutar consultas con un código mínimo. Para cargar los comandos automáticos de la biblioteca cliente, pega el siguiente código en la primera celda de notebook.

    %load_ext google.cloud.bigquery
  6. Ejecuta el comando. Para ello, haz clic en el botón Ejecutar o presiona SHIFT + ENTER.

  7. La biblioteca cliente de BigQuery proporciona una celda automática, %%bigquery que ejecuta una consulta de SQL y muestra los resultados como un marco de datos de Pandas. Ingresa la información a continuación en la siguiente celda para mostrar el total de nacimientos por año.

    %%bigquery
    SELECT
        source_year AS year,
        COUNT(is_male) AS birth_count
    FROM `bigquery-public-data.samples.natality`
    GROUP BY year
    ORDER BY year DESC
    LIMIT 15
  8. Haz clic en Ejecutar.

  9. Los resultados de la consulta aparecen debajo de la celda de código.

    Tabla de nacimientos por año

  10. En el siguiente bloque de celdas, ingresa el comando a continuación para ejecutar la misma consulta, pero esta vez guarda los resultados en una variable nueva total_births, que se presenta como un argumento para %%bigquery. Los resultados se pueden usar para un mayor análisis y visualización.

    %%bigquery total_births
    SELECT
        source_year AS year,
        COUNT(is_male) AS birth_count
    FROM `bigquery-public-data.samples.natality`
    GROUP BY year
    ORDER BY year DESC
    LIMIT 15
  11. Haz clic en Ejecutar.

  12. Ahora tienes un marco de datos de Pandas guardado en la variable total_births, que está listo para trazar. A fin de prepararte para trazar los resultados de la consulta, pega el siguiente comando automático integrado en la siguiente celda y activa matplotlib, que es la biblioteca que usa Pandas para trazar.

    %matplotlib inline
  13. Haz clic en Ejecutar.

  14. En la celda a continuación, ingresa el siguiente código para usar el método de Pandas DataFrame.plot() y poder visualizar los resultados de la consulta como un gráfico de barras. Consulta la documentación de Pandas para obtener más información sobre la visualización de datos con Pandas.

    total_births.plot(kind='bar', x='year', y='birth_count');
  15. Haz clic en Ejecutar.

  16. El gráfico aparece debajo del bloque de código.

    Gráfico de barras de nacimientos por año

  17. Luego, pega la consulta a continuación en la siguiente celda para recuperar el número de nacimientos por día de la semana.

    %%bigquery births_by_weekday
    SELECT
        wday,
        SUM(CASE WHEN is_male THEN 1 ELSE 0 END) AS male_births,
        SUM(CASE WHEN is_male THEN 0 ELSE 1 END) AS female_births
    FROM `bigquery-public-data.samples.natality`
    WHERE wday IS NOT NULL
    GROUP BY wday
    ORDER BY wday ASC

    Debido a que el campo wday (día de la semana) permite valores nulos, la consulta excluye los registros donde wday es nulo.

  18. Haz clic en Ejecutar.

  19. En la siguiente celda, ingresa el siguiente código para visualizar los resultados de la consulta con un gráfico de líneas.

    births_by_weekday.plot(x='wday');
  20. Haz clic en Ejecutar.

  21. El gráfico aparece debajo del bloque de código. Observa que el número de nacimientos disminuye drásticamente el domingo (1) y el sábado (7).

    Tabla de nacimientos por día de la semana

  22. Haz clic en el Archivo > Guardar y crear punto de control o haz clic en el ícono de guardar en la barra de herramientas. Crear un punto de control te permite hacer retroceder el notebook a un estado anterior.

Marco de datos de Panda

Los comandos automáticos te permiten usar una sintaxis mínima para interactuar con BigQuery. En segundo plano, %%bigquery usa la biblioteca cliente de BigQuery Python para ejecutar la consulta dada, convierte los resultados en un marco de datos de Pandas, guarda opcionalmente los resultados en una variable y, finalmente, muestra los resultados. Usar la biblioteca cliente de BigQuery Python directamente en lugar de hacerlo mediante comandos automáticos te brinda más control sobre tus consultas y permite configuraciones más complejas. Las integraciones de la biblioteca con Pandas te permiten combinar el poder del SQL declarativo con el código imperativo (Python) para realizar tareas de análisis, visualización y transformación de datos interesantes.

Cómo consultar y visualizar datos de BigQuery con el marco de datos de Pandas

En esta sección del instructivo, puedes consultar y visualizar datos en BigQuery usando el marco de datos de Pandas. Usa la biblioteca cliente de BigQuery Python para consultar los datos de BigQuery. Usa la biblioteca de Pandas para analizar datos usando el marco de datos.

  1. Escribe el código de Python a continuación en la siguiente celda para importar la biblioteca cliente de BigQuery Python y así poder inicializar un cliente. El cliente de BigQuery se usa para enviar y recibir mensajes de la API de BigQuery.

    from google.cloud import bigquery
    client = bigquery.Client()
  2. Haz clic en Ejecutar.

  3. Usa el método Client.query() para ejecutar una consulta. En la celda a continuación, ingresa el siguiente código a fin de ejecutar una consulta y así recuperar el recuento anual de nacimientos múltiples por pluralidad (2 para gemelos, 3 para trillizos, etcétera).

    sql = """
    SELECT
        plurality,
        COUNT(1) AS count,
        year
    FROM
        `bigquery-public-data.samples.natality`
    WHERE
        NOT IS_NAN(plurality) AND plurality > 1
    GROUP BY
        plurality, year
    ORDER BY
        count DESC
    """
    df = client.query(sql).to_dataframe()
    df.head()
  4. Haz clic en Ejecutar.

  5. Para trazar los resultados de la consulta en tu marco de datos, inserta el código a continuación en la siguiente celda para girar los datos y crear un gráfico de barras apiladas del conteo de nacimientos múltiples a lo largo del tiempo.

    pivot_table = df.pivot(index='year', columns='plurality', values='count')
    pivot_table.plot(kind='bar', stacked=True, figsize=(15, 7));
  6. Haz clic en Ejecutar.

  7. El gráfico aparece debajo del bloque de código.

    Nacimientos múltiples por año, gráfico de barras apiladas

  8. En la celda a continuación, ingresa la siguiente consulta para recuperar el recuento de nacimientos por el número de semanas de gestación.

    sql = """
    SELECT
        gestation_weeks,
        COUNT(1) AS count
    FROM
        `bigquery-public-data.samples.natality`
    WHERE
        NOT IS_NAN(gestation_weeks) AND gestation_weeks <> 99
    GROUP BY
        gestation_weeks
    ORDER BY
        gestation_weeks
    """
    df = client.query(sql).to_dataframe()
  9. Haz clic en Ejecutar.

  10. Para marcar los resultados de la consulta en tu marco de datos, pega el código a continuación en la siguiente celda.

    ax = df.plot(kind='bar', x='gestation_weeks', y='count', figsize=(15,7))
    ax.set_title('Count of Births by Gestation Weeks')
    ax.set_xlabel('Gestation Weeks')
    ax.set_ylabel('Count');
  11. Haz clic en Ejecutar.

  12. El gráfico de barras aparece debajo del bloque de código.

    Tabla de peso medio por semanas de gestación

¿Qué sigue?

  • Obtener más información sobre cómo escribir consultas para BigQuery: Consultar datos en la documentación de BigQuery explica cómo ejecutar consultas, crear funciones definidas por el usuario (UDF) y mucho más.

  • Explora la sintaxis de BigQuery: El dialecto preferido para las consultas de SQL en BigQuery es el SQL estándar que se describe en la Referencia de SQL. La sintaxis de tipo SQL heredado de BigQuery se describe en la Referencia de consulta (SQL heredado).

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…