次の方法で共有


Microsoft Fabric でのノートブックの視覚化

Microsoft Fabric は、データ ウェアハウスとビッグ データ システム全体の分析情報への時間を短縮する統合分析サービスです。 ノートブックでのデータの視覚化は、データに関する分析情報を得るための重要な機能であり、ユーザーがパターン、傾向、外れ値を簡単に識別するのに役立ちます。

Fabric で Apache Spark を使用する場合は、Fabric ノートブック グラフ機能や一般的なオープンソース ライブラリへのアクセスなど、データを視覚化するための組み込みオプションがあります。

Fabric ノートブックを使用すると、コードを記述せずに表形式の結果をカスタマイズされたグラフに変換できるため、より直感的でシームレスなデータ探索エクスペリエンスが可能になります。

組み込みの視覚化コマンド - display() 関数

Fabric の組み込み視覚化関数を使用すると、Apache Spark DataFrames、Pandas DataFrames、SQL クエリ結果を、豊富な対話型データ視覚化に変換できます。

表示関数を使用すると、PySpark と Scala Spark DataFrames または Resilient Distributed Datasets (RDD) を動的なテーブルまたはグラフとしてレンダリングできます。

レンダリングするデータフレームの行数を指定できます。 既定値は 1,000 です。 ノートブック の表示 出力ウィジェットでは、最大でデータフレーム の 10,000 行を表示およびプロファイルできます。

範囲指定の例のスクリーンショット。

グローバル ツール バーのフィルター関数を使用して、カスタマイズされたルールをデータに適用できます。 フィルター条件は指定された列に適用され、結果はテーブル ビューとグラフ ビューの両方に反映されます。

列のカスタマイズの例のスクリーンショット。

SQL ステートメントの出力は、既定では display() と同じ出力ウィジェットが導入されます。

豊富な DataFrame テーブル ビュー

テーブル ビューでの無料選択のサポート

既定では、Fabric ノートブックで display() コマンドを使用すると、テーブル ビューがレンダリングされます。 豊富なデータフレームプレビューは、柔軟でインタラクティブな選択オプションを可能にすることで、データ分析エクスペリエンスを強化するように設計された直感的な無料選択機能を提供します。 この機能を使用すると、ユーザーはデータフレームを簡単に効率的に移動および探索できます。

  • 列の選択

    • 単一列: 列ヘッダーをクリックして列全体を選択します。
    • 複数の列: 1 つの列を選択した後、[Shift] キーを押しながら、別の列ヘッダーをクリックして複数の列を選択します。
  • 行の選択

    • 単一行: 行ヘッダーをクリックして、行全体を選択します。
    • 複数の行: 1 つの行を選択した後、[Shift] キーを押しながら、別の行ヘッダーをクリックして複数の行を選択します。
  • セルコンテンツプレビュー:個々のセルのコンテンツをプレビューして、追加のコードを記述する必要なく、データをすばやく詳細に確認できます。

  • 列の概要: データの特性をすばやく理解するために、データ分散やキー統計を含む各列の概要を取得します。

  • 空き領域の選択: 選択したセルの合計と選択した領域の数値の概要を取得するには、テーブルの連続セグメントを選択します。

  • 選択したコンテンツのコピー: すべての選択ケースで、[Ctrl + C]ショートカットを使用して、選択したコンテンツをすばやくコピーできます。 選択したデータは CSV 形式でコピーされるため、他のアプリケーションで簡単に処理できます。

    無料選択サポートのアニメーション GIF。

検査ウィンドウによるデータプロファイリングのサポート

豊富なデータフレーム プレビューのアニメーション GIF。

  1. [検査]ボタンをクリックして DataFrame をプロファイルできます。 要約されたデータ分布と各列の統計情報が表示されます。

  2. 「インスペクト」サイドペインの各カードは、データフレームの列に対応しています。カードをクリックするか、テーブル内の列を選択すると、詳細を表示できます。

  3. テーブルのセルをクリックすると、セルの詳細を表示できます。 この機能は、データフレームに長い文字列タイプのコンテンツが含まれている場合に便利です。

拡張されたリッチ データフレーム グラフ ビュー

display() コマンドの改善されたグラフ ビューは、データをより直感的かつ動的に視覚化する方法を提供します。

主な機能強化:

  1. 複数グラフのサポート: 新しいグラフを選択して、1 つの display() 出力ウィジェット内に最大 5 つのグラフを追加し、異なる列間で簡単に比較できるようにします。

  2. スマート グラフの推奨事項: DataFrame に基づいて、推奨されるグラフの一覧を取得します。 推奨される視覚化を編集するか、カスタム グラフを最初から作成することを選択します。

    推奨されるグラフのアニメーション GIF。

  3. 柔軟なカスタマイズ: 選択したグラフの種類に基づいて調整できる設定で視覚化をカスタマイズできます。

    カテゴリ 基本設定 説明
    グラフの種類 display 関数では、棒グラフ、ピボット テーブル、散布図、折れ線グラフなど、さまざまな種類のグラフがサポートされています。
    タイトル タイトル グラフのタイトル。
    タイトル サブタイトル 詳細な説明を含むグラフのサブタイトル。
    データ​​ X 軸 グラフのキーを指定します。
    データ​​ Y 軸 グラフの値を指定します。
    凡例 凡例の表示 凡例を有効または無効にします。
    凡例 位置 凡例の位置をカスタマイズします。
    その他 系列グループ この構成を使用して、集約のグループを決定できます。
    その他 集計 この方法を使用して、視覚化でデータを集約します。
    その他 上下に並べて表示 結果の表示スタイルを構成します。
    その他 欠損値と NULL 値 不足しているグラフ値または NULL グラフ値の表示方法を構成します。

    さらに、表示される行の数を指定できます。既定の設定は 1,000 です。 ノートブック 表示 出力ウィジェットでは、DataFrame の最大 10,000 行の表示とプロファイリングがサポートされています。 [Aggregation over all results] (すべての結果の集計) を選択し、[適用] を選択して、データフレーム全体からのグラフ生成を適用します。 グラフの設定が変更されると、Spark ジョブがトリガーされます。 計算が完了して、グラフがレンダリングされるまでに数分かかる場合があります。

    カテゴリ 詳細設定 説明
    テーマ グラフのテーマのカラー セットを定義します。
    X 軸 ラベル X 軸にラベルを指定します。
    X 軸 規模 X 軸のスケール関数を指定します。
    X 軸 範囲 X 軸の値の範囲を指定します。
    Y 軸 ラベル Y 軸にラベルを指定します。
    Y 軸 規模 Y 軸のスケール関数を指定します。
    Y 軸 範囲 Y 軸の値の範囲を指定します。
    表示 [ラベルを表示] グラフ上の結果ラベルを表示または非表示にします。

    構成の変更は即座に有効になり、すべての構成はノートブック コンテンツに自動保存されます。

    グラフの構成の例のスクリーンショット。

  4. グラフ タブ メニューでは、グラフの 名前の変更複製削除移動 を簡単に行うことができます。 タブをドラッグ アンド ドロップして並べ替えることもできます。 ノートブックを開くと、最初のタブが既定として表示されます。

    グラフの操作の例のスクリーンショット。

  5. ユーザーがグラフにカーソルを置くと、新しいグラフ エクスペリエンスで対話型ツール バーを使用できます。 拡大、縮小、選択によるズーム、リセット、パン、注釈の編集などの操作をサポートします。

    グラフ ツール バーの例のスクリーンショット。

    グラフ注釈の例を次に示します。

    グラフ注釈の例のスクリーンショット。

display() の概要ビュー

display(df, summary = true) を使用して、特定の Apache Spark DataFrame の統計概要を確認できます。 概要には列名、列タイプ、一意の値、各行で欠損している値が含まれます。 また、特定の列を選択して、その列の最小値、最大値、平均値、標準偏差を表示することもできます。

概要ビューのアニメーション GIF。

displayHTML()オプション

Fabric ノートブックは displayHTML 関数を使用して HTML グラフィックをサポートします。

次の図は、D3.js を使用して視覚化を作成する例です。

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 レポートを埋め込む

重要

この機能はプレビュー段階にあります。

Powerbiclient Python パッケージが Fabric ノートブックでネイティブでサポートされるようになりました。 Fabric ノートブック Spark ランタイム 3.4 で追加の設定 (認証プロセスなど) を行う必要はありません。 powerbiclient をインポートして、引き続き機能を確認するだけです。 powerbiclient パッケージの使用方法について詳しくは、powerbiclient ドキュメントをご覧ください。

Powerbiclient は次の主な機能をサポートしています。

既存の Power BI レポートをレンダリングする

ノートブックの Power BI レポートでは、ほんの数行のコードを使用するだけで簡単に埋め込み、通信できます。

次の画像は既存の Power BI レポートのレンダリングの例です。

Power BI レポートをレンダリングする Spark 視覚化のスクリーンショット。

既存の 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() の例です。

DataFrame からの Power BI のレポートのスクリーンショット。

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 からレポート ビジュアルを作成する

また、ノートブックで pandas DataFrame に基づくレポートを作成することもできます。

次の画像は、pandas DataFrame の QuickVisualize() の例です。

pandas データフレームからのレポートのスクリーンショット。

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 を使用して横棒グラフを作成する例を示しています。

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 など) をレンダリングできます。

次の図は、ボケを使用して、マップ上にグリフをプロットする例です。

地図上にグリフをプロットする例のスクリーンショット。

この画像を描くには、次のサンプル コードを実行します。

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)

プロット

displayHTML() を使用して、HTML または対話型のライブラリ (Plotly など) をレンダリングすることができます。

この画像を描くには、次のサンプル コードを実行します。

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 DataFrames の HTML 出力をデフォルトの出力として表示できます。 Fabric ノートブックは自動的にスタイル設定された HTML コンテンツを表示します。

pandas を使用して作成されたテーブルのスクリーンショット。

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