Visualiser des graphiques à l'aide de BigQuery DataFrames

Vous pouvez utiliser la bibliothèque de visualisation BigQuery DataFrames pour tracer différents types de graphiques afin d'explorer et de comprendre visuellement vos données. L'API bigframes.pandas vous permet de combiner facilement des opérations statistiques avancées avec des outils de traçage Python familiers, y compris l'échantillonnage intégré pour les grands ensembles de données.

Histogramme

L'exemple suivant lit les données de la table bigquery-public-data.ml_datasets.penguins pour tracer un histogramme de la distribution de la profondeur du culmen des manchots :

import bigframes.pandas as bpd

penguins = bpd.read_gbq("bigquery-public-data.ml_datasets.penguins")
penguins["culmen_depth_mm"].plot.hist(bins=40)

Exemple d'histogramme dans BigQuery DataFrames.

Graphique en courbes

L'exemple suivant utilise les données de la table bigquery-public-data.noaa_gsod.gsod2021 pour tracer un graphique en courbes des changements de température médiane tout au long de l'année :

import bigframes.pandas as bpd

noaa_surface = bpd.read_gbq("bigquery-public-data.noaa_gsod.gsod2021")

# Calculate median temperature for each day
noaa_surface_median_temps = noaa_surface[["date", "temp"]].groupby("date").median()

noaa_surface_median_temps.plot.line()

Exemple de graphique en courbes dans BigQuery DataFrames.

Graphique en aires

L'exemple suivant utilise la table bigquery-public-data.usa_names.usa_1910_2013 pour suivre la popularité des prénoms dans l'histoire des États-Unis et se concentre sur les prénoms Mary, Emily et Lisa :

import bigframes.pandas as bpd

usa_names = bpd.read_gbq("bigquery-public-data.usa_names.usa_1910_2013")

# Count the occurences of the target names each year. The result is a dataframe with a multi-index.
name_counts = (
    usa_names[usa_names["name"].isin(("Mary", "Emily", "Lisa"))]
    .groupby(("year", "name"))["number"]
    .sum()
)

# Flatten the index of the dataframe so that the counts for each name has their own columns.
name_counts = name_counts.unstack(level=1).fillna(0)

name_counts.plot.area(stacked=False, alpha=0.5)

Exemple de graphique en aires dans BigQuery DataFrames.

Graphique à barres

L'exemple suivant utilise la table bigquery-public-data.ml_datasets.penguins pour visualiser la répartition des sexes des manchots :

import bigframes.pandas as bpd

penguins = bpd.read_gbq("bigquery-public-data.ml_datasets.penguins")

penguin_count_by_sex = (
    penguins[penguins["sex"].isin(("MALE", "FEMALE"))]
    .groupby("sex")["species"]
    .count()
)
penguin_count_by_sex.plot.bar()

Exemple de graphique à barres dans BigQuery DataFrames.

Graphique à nuage de points

L'exemple suivant utilise la table bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2021 pour explorer la relation entre le montant des courses en taxi et la distance parcourue :

import bigframes.pandas as bpd

taxi_trips = bpd.read_gbq(
    "bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2021"
).dropna()

# Data Cleaning
taxi_trips = taxi_trips[
    taxi_trips["trip_distance"].between(0, 10, inclusive="right")
]
taxi_trips = taxi_trips[taxi_trips["fare_amount"].between(0, 50, inclusive="right")]

# If you are using partial ordering mode, you will also need to assign an order to your dataset.
# Otherwise, the next line can be skipped.
taxi_trips = taxi_trips.sort_values("pickup_datetime")

taxi_trips.plot.scatter(x="trip_distance", y="fare_amount", alpha=0.5)

Exemple de graphique à nuage de points dans BigQuery DataFrames.

Visualiser un ensemble de données volumineux

BigQuery DataFrames télécharge les données sur votre ordinateur local pour les visualiser. Le nombre de points de données à télécharger est limité à 1 000 par défaut. Si le nombre de points de données dépasse la limite, BigQuery DataFrames échantillonne de manière aléatoire le nombre de points de données égal à la limite.

Vous pouvez remplacer cette limite en définissant le paramètre sampling_n lors du traçage d'un graphique, comme illustré dans l'exemple suivant :

import bigframes.pandas as bpd

noaa_surface = bpd.read_gbq("bigquery-public-data.noaa_gsod.gsod2021")

# Calculate median temperature for each day
noaa_surface_median_temps = noaa_surface[["date", "temp"]].groupby("date").median()

noaa_surface_median_temps.plot.line(sampling_n=40)

Exemple de graphique en courbes visualisant un grand ensemble de données dans BigQuery DataFrames.

Tracé avancé avec les paramètres pandas et Matplotlib

Vous pouvez transmettre d'autres paramètres pour affiner votre graphique, comme vous le feriez avec pandas, car la bibliothèque de traçage de BigQuery DataFrames est optimisée par pandas et Matplotlib. Les sections suivantes décrivent des exemples.

Tendance de popularité des noms avec des sous-graphiques

En utilisant les données de l'historique des noms de l'exemple de graphique en aires, l'exemple suivant crée des graphiques individuels pour chaque nom en définissant subplots=True dans l'appel de fonction plot.area() :

import bigframes.pandas as bpd

usa_names = bpd.read_gbq("bigquery-public-data.usa_names.usa_1910_2013")

# Count the occurences of the target names each year. The result is a dataframe with a multi-index.
name_counts = (
    usa_names[usa_names["name"].isin(("Mary", "Emily", "Lisa"))]
    .groupby(("year", "name"))["number"]
    .sum()
)

# Flatten the index of the dataframe so that the counts for each name has their own columns.
name_counts = name_counts.unstack(level=1).fillna(0)

name_counts.plot.area(subplots=True, alpha=0.5)

Exemple de graphiques individuels avec des sous-graphiques dans BigQuery DataFrames.

Graphique à nuage de points des courses en taxi avec plusieurs dimensions

En utilisant les données de l'exemple de graphique à nuage de points, l'exemple suivant renomme les étiquettes des axes X et Y, utilise le paramètre passenger_count pour la taille des points, utilise des points de couleur avec le paramètre tip_amount et redimensionne la figure :

import bigframes.pandas as bpd

taxi_trips = bpd.read_gbq(
    "bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2021"
).dropna()

# Data Cleaning
taxi_trips = taxi_trips[
    taxi_trips["trip_distance"].between(0, 10, inclusive="right")
]
taxi_trips = taxi_trips[taxi_trips["fare_amount"].between(0, 50, inclusive="right")]

# If you are using partial ordering mode, you also need to assign an order to your dataset.
# Otherwise, the next line can be skipped.
taxi_trips = taxi_trips.sort_values("pickup_datetime")

taxi_trips["passenger_count_scaled"] = taxi_trips["passenger_count"] * 30

taxi_trips.plot.scatter(
    x="trip_distance",
    xlabel="trip distance (miles)",
    y="fare_amount",
    ylabel="fare amount (usd)",
    alpha=0.5,
    s="passenger_count_scaled",
    label="passenger_count",
    c="tip_amount",
    cmap="jet",
    colorbar=True,
    legend=True,
    figsize=(15, 7),
    sampling_n=1000,
)

Exemple de graphique à nuage de points avec plusieurs dimensions dans BigQuery DataFrames.

Étapes suivantes