Microsoft Fabric 中的筆記本視覺效果
Microsoft Fabric 是一種整合式分析服務,可讓您在資料倉儲和巨量資料分析系統之間,更快地取得深入解析。 筆記本中的資料視覺效果是一個重要元件,可讓您深入瞭解您的資料。 它有助於讓人類更容易瞭解巨量和小型資料。 它也可讓您更輕鬆地在資料群組中偵測模式、趨勢和極端值。
當您在 Fabric 中使用 Apache Spark 時,有各種內建選項可協助您將資料視覺化,包括 Fabric 筆記本圖表選項,以及存取熱門的開放原始碼程式庫。
使用 Fabric 筆記本時,您可以使用圖表選項,將表格式結果檢視轉換成自訂圖表。 在這裡,您可以將資料視覺化,而不需要撰寫任何程式碼。
內建視覺效果命令 - display() 函式
Fabric 內建視覺效果函式可讓您將 Apache Spark DataFrame、Pandas DataFrame 和 SQL 查詢結果轉換成豐富的格式資料視覺效果。
您可以在 Spark 資料框架上建立的資料框架上使用顯示函式,或在 Spark 資料框架上建立的 Scala 或彈性分散式資料集 (RDD) 函式來產生豐富的資料框架資料表檢視和圖表檢視。
您可以指定所轉譯之數據框架的數據列計數,預設值為 1000,Notebook 顯示輸出小工具最多可檢視及分析數據框架的 10000 個數據列。
您可以使用全域工具列上的篩選函式,有效率地篩選與自定義規則對應的數據、將條件套用至指定的數據行,而且篩選結果會反映在數據表檢視和圖表檢視上。
SQL 語句的輸出預設會採用與 display() 相同的輸出小工具。
豐富的資料框架資料表檢視
- 使用 display() 命令時,預設會轉譯資料表檢視。
- 您可以按下 [檢查] 按鈕來分析資料框架。 它提供摘要資料分佈,並顯示每個資料行的統計資料。
- [檢查] 側邊窗格中的每個卡片都會對應至資料框架的資料行,您可以按兩下卡片或選取資料表中的資料行來檢視更多詳細資料。
- 您可以按下資料表的儲存格來檢視儲存格詳細資料。 當資料框架包含長字串類型的內容時,這非常有用。
新的豐富數據框架圖表檢視
注意
此功能目前處於預覽狀態。
改進的圖表檢視可在display() 命令上使用。 它利用display() 命令,提供更直覺且功能強大的體驗,讓您將數據可視化。
現在,您可以按兩下 [新增圖表],在一個 display() 輸出小工具中新增最多 5 個圖表,讓您根據不同的數據行建立多個圖表,並輕鬆地比較圖表。
您可以在建立新圖表時,根據目標數據框架取得圖表建議清單。 您可以選擇編輯建議的圖表,或從頭開始建置自己的圖表。
您現在可以藉由指定下列設定來自定義視覺效果,請注意,設定選項可能會根據選取的圖表類型變更:
類別 基本設定 說明 圖表類型 顯示函式支援各種不同的圖表類型,包括條形圖、散佈圖、折線圖、數據透視表等等。 標題 標題 圖表的標題。 標題 子標題 具有更多描述的圖表副標題。 資料 X 軸 指定圖表的索引鍵。 資料 Y 軸 指定圖表的值。 圖例 顯示圖例 啟用/停用圖例。 圖例 Position 自訂圖例的位置。 其他 序列群組 使用此組態來判斷彙總的群組。 其他 彙總 使用此方法來彙總視覺效果中的資料。 其他 堆疊 設定結果的顯示樣式。 注意
根據預設, display(df) 函式只會採用前 1000 個資料列來轉譯圖表。 選取 [匯總所有結果 ],然後選取 [ 套用 ] 以套用整個數據框架中的圖表產生。 當圖表設定變更時,將會觸發 Spark 工作。 請注意,完成計算並轉譯圖表可能需要幾分鐘的時間。
類別 進階設定 說明 Color 佈景主題 定義圖表的主題色彩集。 X 軸 標籤 指定 X-asis 的標籤。 X 軸 調整 指定 X 軸的縮放函數。 X 軸 範圍 指定數值範圍 X 軸。 Y 軸 標籤 指定 Y-asis 的標籤。 Y 軸 調整 指定 Y 軸的縮放函數。 Y 軸 範圍 指定值範圍 Y 軸。 顯示器 顯示標籤 顯示/隱藏圖表上的結果標籤。 設定的變更會立即生效,而且所有設定都會自動儲存在筆記本內容中。
您可以在圖表索引標籤表中輕鬆地重新命名、複製或刪除圖表。
新的圖表體驗中提供互動式工具列,它會在將滑鼠停留在圖表上時顯示。 支援作業,例如放大、縮小、選取以縮放、重設、移動流覽等。
舊版圖表檢視
注意
新圖表檢視完成預覽之後,舊版圖表檢視將會被取代。
您可以切換 「新增視覺效果」,切換回舊版圖表檢視。 默認會啟用新的體驗。
一旦您擁有轉譯的資料表檢視,請切換至 [圖表] 檢視。
網狀架構筆記本會根據目標數據框架自動建議圖表,讓圖表對數據深入解析有意義。
您現在可以藉由指定下列值來自訂視覺效果:
組態 描述 圖表類型 顯示函式支援各種不同的圖表類型,包括橫條圖、散佈圖、折線圖等等。 機碼 指定 X 軸的值範圍。 值 指定 y 軸值的值範圍。 序列群組 使用此組態來判斷彙總的群組。 彙總 使用此方法來彙總視覺效果中的資料。 這些設定將會自動儲存在 Notebook 輸出內容中。
注意
根據預設, display(df) 函式只會採用前 1000 個資料列來轉譯圖表。 選取 [匯總所有結果 ],然後選取 [ 套用 ] 以套用整個數據框架中的圖表產生。 當圖表設定變更時,將會觸發 Spark 工作。 請注意,完成計算並轉譯圖表可能需要幾分鐘的時間。
工作完成時,您可以檢視最終視覺效果並與其互動。
display() 摘要檢視
使用 display(df, summary = true) 來檢查指定 Apache Spark DataFrame 的統計資料摘要。 摘要包含資料行名稱、資料行類型、唯一值,以及每個資料行的遺漏值。 您也可以選取特定資料行,以查看其最小值、最大值、平均值和標準偏差。
displayHTML() 選項
Fabric 筆記本支援使用 displayHTML 函式的 HTML 圖形。
下圖是使用 D3.js 建立視覺效果的範例。
若要建立此視覺效果,請執行下列程式碼。
displayHTML("""<!DOCTYPE html>
<meta charset="utf-8">
<!-- Load d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>
<!-- Create a div where the graph will take place -->
<div id="my_dataviz"></div>
<script>
// set the dimensions and margins of the graph
var margin = {top: 10, right: 30, bottom: 30, left: 40},
width = 400 - margin.left - margin.right,
height = 400 - margin.top - margin.bottom;
// append the svg object to the body of the page
var svg = d3.select("#my_dataviz")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")");
// Create Data
var data = [12,19,11,13,12,22,13,4,15,16,18,19,20,12,11,9]
// Compute summary statistics used for the box:
var data_sorted = data.sort(d3.ascending)
var q1 = d3.quantile(data_sorted, .25)
var median = d3.quantile(data_sorted, .5)
var q3 = d3.quantile(data_sorted, .75)
var interQuantileRange = q3 - q1
var min = q1 - 1.5 * interQuantileRange
var max = q1 + 1.5 * interQuantileRange
// Show the Y scale
var y = d3.scaleLinear()
.domain([0,24])
.range([height, 0]);
svg.call(d3.axisLeft(y))
// a few features for the box
var center = 200
var width = 100
// Show the main vertical line
svg
.append("line")
.attr("x1", center)
.attr("x2", center)
.attr("y1", y(min) )
.attr("y2", y(max) )
.attr("stroke", "black")
// Show the box
svg
.append("rect")
.attr("x", center - width/2)
.attr("y", y(q3) )
.attr("height", (y(q1)-y(q3)) )
.attr("width", width )
.attr("stroke", "black")
.style("fill", "#69b3a2")
// show median, min and max horizontal lines
svg
.selectAll("toto")
.data([min, median, max])
.enter()
.append("line")
.attr("x1", center-width/2)
.attr("x2", center+width/2)
.attr("y1", function(d){ return(y(d))} )
.attr("y2", function(d){ return(y(d))} )
.attr("stroke", "black")
</script>
"""
)
在筆記本中內嵌 Power BI 報表
重要
這項功能目前為「預覽」狀態。 這項資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不提供任何明確或隱含的瑕疵擔保。
Fabric 筆記本現在原生支援 Powerbiclient Python 套件。 您不需要在 Fabric Notebook Spark 執行階段 3.4 上執行任何額外的設定 (例如驗證程式)。 只要匯入 powerbiclient
,然後繼續探索。 若要深入了解如何使用 powerbiclient 套件,請參閱 powerbiclient 文件。
Powerbiclient 支援下列主要功能。
轉譯現有的 Power BI 報表
只要幾行程式碼,您就可以輕鬆地在筆記本中內嵌 Power BI 報表並與其互動。
下圖是轉譯現有 Power BI 報表的範例。
執行下列程式碼來轉譯現有的 Power BI 報表。
from powerbiclient import Report
report_id="Your report id"
report = Report(group_id=None, report_id=report_id)
report
從 Spark DataFrame 建立報表視覺效果
您可以在筆記本中使用 Spark DataFrame 來快速產生深入解析的視覺效果。 您也可以選取內嵌報表中的 [儲存],以在目標工作區中建立報表項目。
下圖是 Spark DataFrame 中的範例 QuickVisualize()
。
執行下列程式碼,從 Spark DataFrame 轉譯報表。
# Create a spark dataframe from a Lakehouse parquet table
sdf = spark.sql("SELECT * FROM testlakehouse.table LIMIT 1000")
# Create a Power BI report object from spark data frame
from powerbiclient import QuickVisualize, get_dataset_config
PBI_visualize = QuickVisualize(get_dataset_config(sdf))
# Render new report
PBI_visualize
從 pandas DataFrame 建立報表視覺效果
您也可以根據 Notebook 中的 pandas DataFrame 建立報表。
下圖是 pandas DataFrame 中的 QuickVisualize()
範例。
執行下列程式碼,從 Spark DataFrame 轉譯報表。
import pandas as pd
# Create a pandas dataframe from a URL
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv")
# Create a pandas dataframe from a Lakehouse csv file
from powerbiclient import QuickVisualize, get_dataset_config
# Create a Power BI report object from your data
PBI_visualize = QuickVisualize(get_dataset_config(df))
# Render new report
PBI_visualize
熱門程式庫
在資料視覺效果方面,Python 提供多個圖形程式庫,其中包含許多不同的功能。 根據預設,Fabric 中的每個 Apache Spark 集區都包含一組策劃且熱門的開放原始碼程式庫。
Matplotlib
您可以使用每個程式庫的內建轉譯函式,來轉譯標準繪製程式庫,例如 Matplotlib。
下圖是使用 Matplotlib 建立橫條圖的範例。
執行下列範例程式碼來繪製此橫條圖。
# Bar chart
import matplotlib.pyplot as plt
x1 = [1, 3, 4, 5, 6, 7, 9]
y1 = [4, 7, 2, 4, 7, 8, 3]
x2 = [2, 4, 6, 8, 10]
y2 = [5, 6, 2, 6, 2]
plt.bar(x1, y1, label="Blue Bar", color='b')
plt.bar(x2, y2, label="Green Bar", color='g')
plt.plot()
plt.xlabel("bar number")
plt.ylabel("bar height")
plt.title("Bar Chart Example")
plt.legend()
plt.show()
Bokeh
您可以使用 displayHTML(df) 來轉譯 HTML 或互動式程式庫,例如 bokeh。
下圖是使用 bokeh 在地圖上繪製字符的範例。
若要繪製此映像,請執行下列範例程式碼。
from bokeh.plotting import figure, output_file
from bokeh.tile_providers import get_provider, Vendors
from bokeh.embed import file_html
from bokeh.resources import CDN
from bokeh.models import ColumnDataSource
tile_provider = get_provider(Vendors.CARTODBPOSITRON)
# range bounds supplied in web mercator coordinates
p = figure(x_range=(-9000000,-8000000), y_range=(4000000,5000000),
x_axis_type="mercator", y_axis_type="mercator")
p.add_tile(tile_provider)
# plot datapoints on the map
source = ColumnDataSource(
data=dict(x=[ -8800000, -8500000 , -8800000],
y=[4200000, 4500000, 4900000])
)
p.circle(x="x", y="y", size=15, fill_color="blue", fill_alpha=0.8, source=source)
# create an html document that embeds the Bokeh plot
html = file_html(p, CDN, "my plot1")
# display this html
displayHTML(html)
Plotly
您可以使用 displayHTML() 來轉譯 HTML 或互動式程式庫,例如 Plotly。
若要繪製此映像,請執行下列範例程式碼。
from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
counties = json.load(response)
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv",
dtype={"fips": str})
import plotly
import plotly.express as px
fig = px.choropleth(df, geojson=counties, locations='fips', color='unemp',
color_continuous_scale="Viridis",
range_color=(0, 12),
scope="usa",
labels={'unemp':'unemployment rate'}
)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
# create an html document that embeds the Plotly plot
h = plotly.offline.plot(fig, output_type='div')
# display this html
displayHTML(h)
Pandas
您可以將 pandas DataFrame 的 HTML 輸出視為預設輸出。 Fabric 筆記本會自動顯示樣式的 HTML 內容。
import pandas as pd
import numpy as np
df = pd.DataFrame([[38.0, 2.0, 18.0, 22.0, 21, np.nan],[19, 439, 6, 452, 226,232]],
index=pd.Index(['Tumour (Positive)', 'Non-Tumour (Negative)'], name='Actual Label:'),
columns=pd.MultiIndex.from_product([['Decision Tree', 'Regression', 'Random'],['Tumour', 'Non-Tumour']], names=['Model:', 'Predicted:']))
df