使用Altair ,你可以將更多時間專注於數據及其含義,下面我將詳細介紹:
這是一個在JupyterLab 中使用Altair 快速視覺化和顯示資料集的範例:
import altair as alt # load a simple dataset as a pandas DataFrame from vega_datasets import data cars = data.cars() alt.Chart(cars).mark_point().encode( x='Horsepower', y='Miles_per_Gallon', color='Origin', )
源自Vega-Lite 的Altair 的獨特功能之一是聲明性語法,它不僅具有可視化功能,還具有互動性。透過對上面的範例進行一些修改,我們可以建立一個連結的直方圖,該直方圖根據散點圖的選擇進行過濾。
import altair as alt from vega_datasets import data source = data.cars() brush = alt.selection(type='interval') points = alt.Chart(source).mark_point().encode( x='Horsepower', y='Miles_per_Gallon', color=alt.condition(brush, 'Origin', alt.value('lightgray')) ).add_selection( brush ) bars = alt.Chart(source).mark_bar().encode( y='Origin', color='Origin', x='count(Origin)' ).transform_filter( brush ) points & bars
Altair需要以下相依性:
如果已複製儲存庫,請從儲存庫的根目錄執行下列指令:
pip install -e .[dev]
如果你不想複製儲存庫,則可以使用下列指令進行安裝:
pip install git+https://github.com/altair-viz/altair
更多內容詳情,可以查看github連結:
https://github.com/altair-viz/altair
# import libraries import numpy as np import pandas as pd import altair as alt import random # mock data orders = pd.DataFrame({ "order_id": np.arange(1,101), "item": np.random.randint(1, 50, size=100), "qty": np.random.randint(1, 10, size=100), "tip": (np.random.random(100) * 10).round(2) }) prices = pd.DataFrame({ "item": np.arange(1,51), "price": (np.random.random(50) * 50).round(2) }) order_type = ["lunch", "dinner"] * 50 random.shuffle(order_type) orders["order_type"] = order_type首先,我們建立一個簡單的圖來 Altair 語法結構。
alt.Chart(orders).mark_circle(size=50).encode( x="qty", y="tip", color="order_type" ).properties( title = "Tip vs Quantity" )Altair 基本語法四步曲:
alt.Chart(orders).mark_circle(size=50).encode( x="tip", y="price:Q", color="order_type" ).transform_lookup( lookup="item", from_=alt.LookupData(data=prices, key="item", fields=["price"]) ).properties( title = "Price vs Tip" )transform_lookup 函數類似於 Pandas 的 merge 函數。用於匹配觀察值的列(即行)將傳遞給lookup參數。 fields參數用於從另一個資料幀中選擇所需的列。 我們還可以把過濾組件整合到繪圖中,讓我們繪製價格超過10美元的數據點。
alt.Chart(orders).mark_circle(size=50).encode( x="tip", y="price:Q", color="order_type" ).transform_lookup( lookup="item", from_=alt.LookupData(data=prices, key="item", fields=["price"]) ).transform_filter( alt.FieldGTPredicate(field='price', gt=10) ).properties( title = "Price vs Tip" )transform_filter 函數用於過濾。 FieldGTPredicate處理"大於"的條件。 除了過濾和合併外,Altair 還允許在繪圖之前對資料點進行分組。例如,我們可以建立一個長條圖來顯示每種訂單類型的商品平均價格。此外,我們可以對價格低於20美元的商品執行此操作。
alt.Chart(orders).mark_bar().encode( y="order_type", x="avg_price:Q" ).transform_lookup( lookup="item", from_=alt.LookupData(data=prices, key="item", fields=["price"]) ).transform_filter( alt.FieldLTPredicate(field='price', lt=20) ).transform_aggregate( avg_price = "mean(price)", groupby = ["order_type"] ).properties( height=200, width=300 )讓我們詳細說明每個步驟:
以上是妙啊!這款 Python 資料視覺化工具強的很!的詳細內容。更多資訊請關注PHP中文網其他相關文章!