Freigeben über


Notebookvisualisierung in Microsoft Fabric

Microsoft Fabric ist ein integrierter Analysedienst, der die Zeit für Einblicke in Data Warehouses und Big Data-Systeme beschleunigt. Die Datenvisualisierung in Notizbüchern ist ein wichtiges Feature, mit dem Sie Einblicke in Ihre Daten erhalten und Benutzern dabei helfen, Muster, Trends und Ausreißer mühelos zu identifizieren.

Beim Arbeiten mit Apache Spark in Fabric verfügen Sie über integrierte Optionen zum Visualisieren von Daten, einschließlich Fabric-Notizbuchdiagrammfeatures und Zugriff auf beliebte Open-Source-Bibliotheken.

Fabric-Notizbücher ermöglichen es Ihnen auch, tabellarische Ergebnisse in benutzerdefinierte Diagramme zu konvertieren, ohne Code zu schreiben, wodurch eine intuitivere und nahtlose Datenerkundung ermöglicht wird.

Integrierter Visualisierungsbefehl: display()-Funktion

Mit der integrierten Fabric-Visualisierungsfunktion können Sie Apache Spark DataFrames, Pandas DataFrames und SQL-Abfrageergebnisse in umfangreiche, interaktive Datenvisualisierungen umwandeln.

Mithilfe der Anzeigefunktion können Sie PySpark und Scala Spark DataFrames oder Resilient Distributed Datasets (RDDs) als dynamische Tabellen oder Diagramme rendern.

Sie können die Zeilenanzahl des gerenderten Datenrahmens angeben. Der Standardwert ist 1000. Das Notebook-Ausgabe-Widget display unterstützt die Anzeige und Profilerstellung von maximal 10.000 Zeilen eines Datenrahmens.

Screenshot eines Beispiels der Angabe des Bereichs.

Sie können die Filterfunktion auf der globalen Symbolleiste verwenden, um benutzerdefinierte Regeln auf Ihre Daten anzuwenden. Die Filterbedingung wird auf eine angegebene Spalte angewendet, und die Ergebnisse werden sowohl in der Tabellen- als auch in den Diagrammansichten wiedergegeben.

Screenshot eines Beispiels zum Anpassen von Spalten.

Die Ausgabe der SQL-Anweisung übernimmt standardmäßig das gleiche Ausgabe-Widget mit display().

Umfangreiche Dataframe-Tabellenansicht

Unterstützung für freie Auswahl in der Tabellenansicht

Standardmäßig wird die Tabellenansicht bei Verwendung des Befehls "display()" in einem Fabric-Notizbuch gerendert. Die rich dataframe Preview bietet eine intuitive freie Auswahlfunktion, die die Datenanalyseerfahrung verbessern soll, indem flexible, interaktive Auswahloptionen ermöglicht werden. Mit diesem Feature können Benutzer datenframes effizient navigieren und mühelos erkunden.

  • Spaltenauswahl

    • Einzelne Spalte: Klicken Sie auf die Spaltenüberschrift, um die gesamte Spalte auszuwählen.
    • Mehrere Spalten: Nachdem Sie eine einzelne Spalte ausgewählt haben, halten Sie die UMSCHALTTASTE gedrückt und klicken dann auf eine weitere Spaltenüberschrift, um mehrere Spalten auszuwählen.
  • Zeilenauswahl

    • Einzelzeile: Klicken Sie auf eine Zeilenüberschrift, um die gesamte Zeile auszuwählen.
    • Mehrere Zeilen: Nachdem Sie eine einzelne Zeile ausgewählt haben, halten Sie die 'Shift'-Taste gedrückt, und klicken Sie dann auf einen weiteren Zeilenkopf, um mehrere Zeilen auszuwählen.
  • Zelleninhaltsvorschau: Zeigen Sie den Inhalt einzelner Zellen in der Vorschau an, um einen schnellen und detaillierten Blick auf die Daten zu erhalten, ohne zusätzlichen Code schreiben zu müssen.

  • Spaltenzusammenfassung: Holen Sie sich eine Zusammenfassung der einzelnen Spalten, einschließlich Datenverteilung und Schlüsselstatistiken, um die Merkmale der Daten schnell zu verstehen.

  • Auswahl des freien Bereichs: Wählen Sie ein beliebiges fortlaufendes Segment der Tabelle aus, um einen Überblick über die ausgewählten Gesamtzellen und die numerischen Werte im ausgewählten Bereich zu erhalten.

  • Kopieren ausgewählter Inhalte: In allen Auswahlfällen können Sie den ausgewählten Inhalt schnell mit der Tastenkombination "STRG+C" kopieren. Die ausgewählten Daten werden im CSV-Format kopiert und erleichtern die Verarbeitung in anderen Anwendungen.

    Animiertes GIF der Unterstützung für freie Auswahl.

Unterstützung der Datenprofilerstellung über den Bereich „Überprüfen“

Animierte GIF-Datei mit reicher Dataframe-Vorschau.

  1. Sie können Ihren DataFrame profilieren, indem Sie auf die SchaltflächeInspizieren klicken. Sie stellt die zusammengefasste Datenverteilung bereit und zeigt Statistiken zu jeder Spalte an.

  2. Jede Karte im Seitenbereich „Inspizieren“ ist einer Spalte des DataFrame zugeordnet. Sie können weitere Details anzeigen, indem Sie auf die Karte klicken oder eine Spalte in der Tabelle auswählen.

  3. Sie können die Zelldetails anzeigen, indem Sie auf die Zelle der Tabelle klicken. Dieses Feature ist nützlich, wenn der Dataframe lange Zeichenketteninhalte enthält.

Erweiterte Rich DataFrame-Diagrammansicht

Die verbesserte Diagrammansicht im Befehl "display()" bietet eine intuitivere und dynamischere Möglichkeit zum Visualisieren Ihrer Daten.

Wichtige Verbesserungen:

  1. Unterstützung für mehrere Diagramme: Fügen Sie bis zu fünf Diagramme innerhalb eines einzelnen Display() -Ausgabe-Widgets hinzu, indem Sie "Neues Diagramm" auswählen und einfache Vergleiche über verschiedene Spalten hinweg ermöglichen.

  2. Intelligente Diagrammempfehlungen: Abrufen einer Liste vorgeschlagener Diagramme basierend auf Ihrem DataFrame. Wählen Sie aus, ob Sie eine empfohlene Visualisierung bearbeiten oder ein benutzerdefiniertes Diagramm von Grund auf neu erstellen möchten.

Animierte GIF-Datei mit vorgeschlagenen Diagrammen.

  1. Flexible Anpassung: Personalisieren Sie Ihre Visualisierungen mit anpassbaren Einstellungen, die sich basierend auf dem ausgewählten Diagrammtyp anpassen.

    Kategorie Grundlegende Einstellungen Beschreibung
    Diagrammtyp Die display-Funktion unterstützt eine breite Palette von Diagrammtypen, einschließlich Balkendiagrammen, Punktdiagrammen, Liniendiagrammen, Pivottabellen und weiteren.
    Titel Titel Der Titel des Diagramms.
    Titel Untertitel Der Untertitel des Diagramms mit weiteren Beschreibungen.
    Daten X-Achse Geben Sie den Schlüssel des Diagramms an.
    Daten Y-Achse Geben Sie die Werte des Diagramms an.
    Legende Legende anzeigen Aktivieren/Deaktivieren sie die Legende.
    Legende Position Passen Sie die Position der Legende an.
    Andere Reihengruppe Verwenden Sie diese Konfiguration, um die Gruppen für die Aggregation zu bestimmen.
    Andere Aggregierung Verwenden Sie diese Methode zum Aggregieren von Daten in der Visualisierung.
    Andere Gestapelt Konfigurieren Sie das Anzeigeformat des Ergebnisses.
    Andere Fehlende und NULL-Werte Konfigurieren Sie, wie fehlende oder NULL-Diagrammwerte angezeigt werden.

    Hinweis

    Darüber hinaus können Sie die Anzahl der angezeigten Zeilen mit einer Standardeinstellung von 1.000 angeben. Das Ausgabe-Widget des Notizbuchs unterstützt das Anzeigen und Profilieren von bis zu 10.000 Zeilen eines DataFrames. Wählen Sie Gesamtergebnisse der Aggregation und dann Anwenden aus, um die Diagrammgenerierung auf das gesamte Dataframe anzuwenden. Ein Spark-Auftrag wird ausgelöst, wenn sich die Diagrammeinstellung ändert. Es kann mehrere Minuten dauern, bis die Berechnung abgeschlossen und das Diagramm gerendert wird.

    Kategorie Erweiterte Einstellungen Beschreibung
    Farbe Thema Definieren Sie den Designfarbensatz des Diagramms.
    X-Achse Etikett Geben Sie eine Beschriftung für die X-Achse an.
    X-Achse Skalieren Geben Sie die Skalierungsfunktion der X-Achse an.
    X-Achse Bereich Geben Sie die X-Achse des Wertbereichs an.
    Y-Achse Etikett Geben Sie eine Beschriftung für die Y-Achse an.
    Y-Achse Skalieren Geben Sie die Skalierungsfunktion der Y-Achse an.
    Y-Achse Bereich Geben Sie den Wertbereich Y-Achse an.
    Anzeige Bezeichnungen anzeigen Blenden Sie die Ergebnisbeschriftungen im Diagramm ein/aus.

    Die Änderungen der Konfigurationen werden sofort wirksam, und alle Konfigurationen werden automatisch in Notizbuchinhalten gespeichert.

    Screenshot eines Beispiels zum Konfigurieren von Diagrammen.

  2. Im Menü "Diagrammregister" können Sie Diagramme ganz einfach umbenennen, duplizieren, löschen oder verschieben. Sie können die Registerkarten auch per Drag-and-Drop verschieben, um ihre Reihenfolge zu ändern. Die erste Registerkarte wird beim Öffnen des Notizbuchs als Standard angezeigt.

    Screenshot eines Beispiels für Betriebsdiagramme.

  3. Eine interaktive Symbolleiste ist in der neuen Diagrammoberfläche verfügbar, wenn der Benutzer auf ein Diagramm zeigt. Unterstützung von Vorgängen wie Vergrößern, Verkleinern, Auswahl zum Vergrößern, Zurücksetzen, Verschieben, Bearbeiten von Anmerkungen usw.

    Screenshot eines Beispiels für die Diagrammsymbolleiste.

    Nachfolgend sehen Sie ein Beispiel für eine Diagrammanmerkung.

    Screenshot eines Beispiels für eine Diagrammanmerkung.

Zusammenfassungsansicht von display()

Verwenden Sie display(df, summary = true), um die Statistikzusammenfassung eines bestimmten Apache Spark-Datenrahmens zu überprüfen. Die Zusammenfassung enthält den Spaltennamen, den Spaltentyp, eindeutige Werte und fehlende Werte für jede Spalte. Ferner können Sie eine bestimmte Spalte auswählen, um ihren Mindestwert, Höchstwert, Durchschnittswert und die Standardabweichung anzuzeigen.

Animierte GIF-Datei der Zusammenfassungsansicht.

displayHTML(): Option

Fabric-Notebooks unterstützen HTML-Grafiken über die Funktion displayHTML.

Die folgende Abbildung ist ein Beispiel für das Erstellen von Visualisierungen mithilfe von D3.js.

Screenshot: Beispiel für ein mithilfe von D3.js erstelltes Diagramm.

Führen Sie den folgenden Code aus, um diese Visualisierung zu erstellen.

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>

"""
)

Einbetten eines Power BI-Berichts in ein Notebook

Wichtig

Dieses Feature befindet sich in der Vorschauphase.

Das Python-Paket powerbiclient wird jetzt nativ in Fabric-Notebooks unterstützt. Es ist kein zusätzliches Setup (z. B. eines Authentifizierungsprozesses) für die Spark-Runtime 3.4 für Fabric-Notebooks erforderlich. Importieren Sie einfach powerbiclient, und fahren Sie dann mit Ihrer Erkundung fort. Weitere Informationen zur Verwendung des Pakets „powerbiclient“ finden Sie in der Dokumentation zu „powerbiclient“.

„powerbiclient“ unterstützt folgende wichtige Features:

Rendern eines vorhandenen Power BI-Berichts

Sie können Power BI-Berichte ganz einfach und mit nur wenigen Codezeilen in Ihre Notebooks einbetten und mit ihnen interagieren.

Die folgende Abbildung zeigt ein Beispiel für das Rendern eines vorhandenen Power BI-Berichts:

Screenshot eines visuellen Spark-Renderings eines Power BI-Berichts.

Führen Sie den folgenden Code aus, um einen vorhandenen Power BI-Bericht zu rendern:

from powerbiclient import Report

report_id="Your report id"
report = Report(group_id=None, report_id=report_id)

report

Erstellen von Berichtsvisualisierungen auf der Grundlage eines Spark-Datenrahmens

Sie können einen Spark-Datenrahmen in Ihrem Notebook verwenden, um schnell aussagekräftige Visualisierungen zu generieren. Sie können in dem eingebetteten Bericht auch Speichern auswählen, um ein Berichtselement in einem Zielarbeitsbereich zu erstellen.

Das folgende Bild ist ein QuickVisualize()-Beispiel auf der Grundlage eines Spark-Datenrahmens:

Screenshot eines Power BI-Berichts aus einem Datenframe.

Führen Sie den folgenden Code aus, um einen Bericht auf der Grundlage eines Spark-Datenrahmens zu rendern:

# 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

Erstellen von Berichtsvisualisierungen auf der Grundlage eines Pandas-Datenrahmens

Sie können im Notebook auch Berichte basierend auf einem Pandas-Datenrahmen erstellen.

Das folgende Bild ist ein QuickVisualize()-Beispiel auf der Grundlage eines Pandas-Datenrahmens:

Screenshot eines Berichts aus einem Pandas Dataframe.

Führen Sie den folgenden Code aus, um einen Bericht auf der Grundlage eines Spark-Datenrahmens zu rendern:

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

Wenn es um Datenvisualisierung geht, bietet Python mehrere Grafikbibliotheken, die über viele verschiedene Features verfügen. Standardmäßig enthält jeder Apache Spark-Pool in Fabric mehrere kuratierte und beliebte Open-Source-Bibliotheken.

Matplotlib

Sie können standardmäßige Zeichnungsbibliotheken wie Matplotlib mithilfe der integrierten Renderingfunktionen für die einzelnen Bibliotheken rendern.

Die folgende Abbildung ist ein Beispiel für die Erstellung eines Balkendiagramms mithilfe von Matplotlib.

Screenshot: Mit Matplotlib erstelltes Liniendiagramm.

Screenshot: Mit Matplotlib erstelltes Balkendiagramm.

Führen Sie den folgenden Beispielcode aus, um dieses Balkendiagramm zu zeichnen.

# 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

Sie können HTML- oder interaktive Bibliotheken wie bokeh mithilfe von displayHTML(df) rendern.

Das folgende Bild ist ein Beispiel für das Zeichnen von Glyphen auf einer Karte mithilfe von bokeh.

Screenshot: Beispiel für das Zeichnen von Glyphen über einer Karte.

Führen Sie den folgenden Beispielcode aus, um dieses Bild zu zeichnen:

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

Sie können HTML-oder interaktive Bibliotheken wie Plotly mithilfe von displayHTML() rendern.

Führen Sie den folgenden Beispielcode aus, um dieses Bild zu zeichnen:

Screenshot einer mit plotly erstellten Karte der USA.

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

Sie können die HTML-Ausgabe von Pandas-Datenrahmen als Standardausgabe anzeigen. Fabric-Notebooks zeigen automatisch den formatierten HTML-Inhalt an.

Screenshot: Mit pandas erstellte Tabelle.

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