Memvisualisasikan grafik menggunakan BigQuery DataFrames

Dokumen ini menunjukkan cara memetakan berbagai jenis grafik menggunakan library visualisasi BigQuery DataFrames.

bigframes.pandas API menyediakan ekosistem alat lengkap untuk Python. API ini mendukung operasi statistik lanjutan, dan Anda dapat memvisualisasikan agregasi yang dihasilkan dari DataFrame BigQuery. Anda juga dapat beralih dari DataFrame BigQuery ke DataFrame pandas dengan operasi pengambilan sampel bawaan.

Histogram

Contoh berikut membaca data dari tabel bigquery-public-data.ml_datasets.penguins untuk memetakan histogram pada distribusi kedalaman culmen penguin:

import bigframes.pandas as bpd

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

Contoh histogram di BigQuery DataFrames.

Diagram garis

Contoh berikut menggunakan data dari tabel bigquery-public-data.noaa_gsod.gsod2021 untuk memetakan diagram garis perubahan suhu median sepanjang tahun:

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()

Contoh diagram garis di DataFrame BigQuery.

Diagram area

Contoh berikut menggunakan tabel bigquery-public-data.usa_names.usa_1910_2013 untuk melacak popularitas nama dalam sejarah AS dan berfokus pada nama Mary, Emily, dan 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)

Contoh diagram area di BigQuery DataFrames.

Diagram batang

Contoh berikut menggunakan tabel bigquery-public-data.ml_datasets.penguins untuk memvisualisasikan distribusi jenis kelamin penguin:

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()

Contoh diagram batang di BigQuery DataFrames.

Diagram sebar

Contoh berikut menggunakan tabel bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2021 untuk menjelajahi hubungan antara jumlah tarif taksi dan jarak perjalanan:

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)

Contoh diagram sebar di DataFrame BigQuery.

Memvisualisasikan set data besar

BigQuery DataFrame mendownload data ke mesin lokal Anda untuk visualisasi. Jumlah titik data yang akan didownload dibatasi hingga 1.000 secara default. Jika jumlah titik data melebihi batas, BigQuery DataFrames akan mengambil sampel secara acak sejumlah titik data yang sama dengan batas.

Anda dapat mengganti batas ini dengan menyetel parameter sampling_n saat memetakan grafik, seperti yang ditunjukkan pada contoh berikut:

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)

Contoh diagram garis yang memvisualisasikan set data besar di DataFrame BigQuery.

Plotting lanjutan dengan parameter pandas dan Matplotlib

Anda dapat meneruskan lebih banyak parameter untuk menyesuaikan grafik seperti yang dapat Anda lakukan dengan pandas, karena library pembuatan grafik BigQuery DataFrames didukung oleh pandas dan Matplotlib. Bagian berikut menjelaskan contohnya.

Tren popularitas nama dengan sub-plot

Dengan menggunakan data histori nama dari contoh diagram area, contoh berikut membuat grafik individual untuk setiap nama dengan menetapkan subplots=True dalam panggilan fungsi 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)

Contoh diagram individual dengan sub-plot di BigQuery DataFrames.

Diagram sebar perjalanan taksi dengan beberapa dimensi

Dengan menggunakan data dari contoh diagram pencar, contoh berikut mengganti nama label untuk sumbu x dan sumbu y, menggunakan parameter passenger_count untuk ukuran titik, menggunakan titik warna dengan parameter tip_amount, dan mengubah ukuran gambar:

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,
)

Contoh diagram sebar dengan beberapa dimensi di DataFrame BigQuery.

Langkah berikutnya