首頁 >後端開發 >Python教學 >妙啊!這款 Python 資料視覺化工具強的很!

妙啊!這款 Python 資料視覺化工具強的很!

PHPz
PHPz轉載
2023-04-15 09:28:02945瀏覽

妙啊!這款 Python 資料視覺化工具強的很!

使用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',
)

妙啊!這款 Python 資料視覺化工具強的很!

源自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

妙啊!這款 Python 資料視覺化工具強的很!

安裝方法

Altair需要以下相依性:

  • pandas
  •  traitlets
  • IPython

如果已複製儲存庫,請從儲存庫的根目錄執行下列指令:

pip install -e .[dev]

如果你不想複製儲存庫,則可以使用下列指令進行安裝:

pip install git+https://github.com/altair-viz/altair

更多內容詳情,可以查看github連結:

https://github.com/altair-viz/altair

三大操作

##接下來,我將詳細介紹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

妙啊!這款 Python 資料視覺化工具強的很!

妙啊!這款 Python 資料視覺化工具強的很!

首先,我們建立一個簡單的圖來 Altair 語法結構。

alt.Chart(orders).mark_circle(size=50).encode(
 x="qty", y="tip", color="order_type"
).properties(
 title = "Tip vs Quantity"
)

妙啊!這款 Python 資料視覺化工具強的很!

Altair 基本語法四步曲:

    將資料傳遞到Chart 對象,資料可以採用Pandas資料框或指向json或csv文件的URL字串的形式。
  • 選擇可視化的類型(例如 mark_circle,mark_line 等)。
  • encode 編碼函數指定在給定資料幀中要繪製的內容。因此,我們在編碼函數中編寫的任何內容都必須連結到資料幀。
  • 使用properties函數指定圖的某些屬性。
考慮這樣一種情況,我們需要建立 pirce 和 tip 值的散佈圖,它們位於不同的資料幀中。一種選擇是合併兩個資料幀,並在散佈圖中使用這兩個欄位。

Altair提供了更實用的方法,它允許在其他資料框中尋找列, 類似 Pandas 的 merge 函數功能相同。

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

妙啊!這款 Python 資料視覺化工具強的很!

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

妙啊!這款 Python 資料視覺化工具強的很!

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 資料視覺化工具強的很!

讓我們詳細說明每個步驟:

    transform_lookup:從價格資料框中找出價格。
  • transform_filter:過濾價格低於20美元的價格。
  • transform_aggregate:以訂單類型分組並計算平均值。
結論

Altair 與其他常見的視覺化函式庫的不同之處在於,它可以無縫地將資料分析元件整合到視覺化中,是一款非常實用的數據探索工具。

篩選、合併和分組對於探索性資料分析過程至關重要。 Altair 允許在建立資料視覺化時執行所有這些操作。從這個意義上講,Altair也可以視為資料分析工具。如果你有興趣,趕快試試看。

以上是妙啊!這款 Python 資料視覺化工具強的很!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除