InsightsConsultingVorteileÜber UnsBlog
Kontakt
Use Case

Erhalten Sie wertvolle Einblicke in die verschiedenen Status kwo Reportings, die Ihnen das Arbeitsleben erleichtern.

Autor
Thomas Dierl

In der Technologiebranche ist Thomas Dierl zuhause, in Datenbanken kennt er sich hervorragend aus.

4.6.2021

Use Case: Python & Power BI richtig nutzen

Python-Codes erweitern die Datenvisualisierung in Power BI immens. Wie Sie Python in Ihr Power BI integrieren und was es dabei zu beachten gilt, erklärt der kürzlich veröffentlichte Status kwo Blogbeitrag "Power BI & Python: eine Fusion, viele Vorteile". Dieser aktuelle Artikel knüpft daran an: Anhand eines Beispiels erfahren Sie Schritt für Schritt, wie einfach das Zusammenspiel von Python und Power BI funktioniert.

1. Datensatz erstellen

Bereits für die Generierung eines Demo-Datensatzes ist Python hilfreich - der Code vereinfacht diesen ersten Schritt wesentlich.

Um den Datensatz zu erstellen, legen Sie zunächst eine neue Tabelle in Power BI mit folgendem Code an:

let
    Source = Python.Execute("import pandas as pd#(lf)from sklearn.datasets import make_blobs#(lf)#(lf)# Create data#(lf)features, true_labels = make_blobs(#(lf)    n_samples=2000,#(lf)    centers=10,#(lf)    cluster_std=2.75,#(lf)    random_state=42#(lf))#(lf)#(lf)dataset = pd.DataFrame(features)#(lf)"),
    #"Expanded Value" = Table.ExpandTableColumn(Source, "Value", {"0", "1"}, {"0", "1"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Value",{"Name"})
in
    #"Removed Columns"

Der darin enthalten Python Code lautet folgendermaßen:

import pandas as pd
from sklearn.datasets import make_blobs

# Create data
features, true_labels = make_blobs(
    n_samples=2000,
    centers=10,
    cluster_std=2.75,
    random_state=42
)

dataset = pd.DataFrame(features)

Dabei erstellen Sie mit Hilfe der SKLearn Bibliothek und der Funktion 'make_blobs' einen Demo-Datensatz, der mit 2000 Punkten auf 10 Cluster aufgeteilt wird. Im Anschluss sollten Sie die Daten noch in einen Pandas Dataframe konvertieren, damit Power BI diesen übernehmen kann.

2. SSE-Analyse durchführen

Im zweiten Schritt schauen wir uns an, welche Cluster generiert wurden und wie gut die Clustereinteilung funktioniert.

Ziehen Sie dazu ein Python Visual auf den Canvas. Die beiden Spalten mit den zuvor erstellen Demodaten bringen Sie als Values in das Visual.

python-powerbi-visual-config

Danach fügen Sie im unteren Teil des Bildschirms (Python Script Editor) den folgenden Code ein. Darin wird die Berechnung der Cluster durchgeführt.

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: 

# dataset = pandas.DataFrame(0, 1)
# dataset = dataset.drop_duplicates()

# Paste or type your script code here:

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# K-Means
scaler = StandardScaler()
scaled_features = scaler.fit_transform(dataset)

kmeans = KMeans(
    init="random",
    n_clusters=10,
    n_init=30,
    max_iter=300,
    random_state=42
)

kmeans.fit(scaled_features)

kmeans_kwargs = {
    "init": "random",
    "n_init": 10,
    "max_iter": 300,
    "random_state": 42,
}
# A list holds the SSE values for each k
sse = []
for k in range(1, 11):
    kmeans = KMeans(n_clusters=k, **kmeans_kwargs)
    kmeans.fit(scaled_features)
    sse.append(kmeans.inertia_)

plt.style.use("fivethirtyeight")
plt.plot(range(1, 11), sse)
plt.xticks(range(1, 11))
plt.xlabel("Number of Clusters")
plt.ylabel("SSE")
plt.show()

plt.style.use("fivethirtyeight")
plt.figure(figsize=(8, 8))

Daraus entsteht ein Plot, der die SSE-Werte abhängig von der Anzahl der Cluster anzeigt.

python-powerbi-sse

3. Darstellung im Cluster formatieren

Im dritten und letzten Schritt geht es in Richtung Endergebnis: Die Datenpunkte sollen angezeigt und anhand der Zuordnung zum Cluster eingefärbt werden.

Ziehen Sie dazu wie zuvor ein Python Visual auf den Canvas und geben Sie die beiden Datenspalten aus den Demodaten in den Bereich 'Values' ein. Danach fügen Sie den folgenden Code ein, damit sich der Scatterplot (= Streudiagramm) anzeigen lässt.

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: 

# dataset = pandas.DataFrame(0, 1)
# dataset = dataset.drop_duplicates()

# Paste or type your script code here:

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# K-Means
scaler = StandardScaler()
scaled_features = scaler.fit_transform(dataset)

kmeans = KMeans(
    init="random",
    n_clusters=10,
    n_init=30,
    max_iter=300,
    random_state=42
)

kmeans.fit(scaled_features)

kmeans_kwargs = {
    "init": "random",
    "n_init": 10,
    "max_iter": 300,
    "random_state": 42,
}

plt.scatter(dataset['0'], dataset['1'], c=kmeans.labels_)
plt.show()

Der nachfolgende Screenshot zeigt das Ergebnis: den Scatterplot. Darin ist jeder Datenpunkt einem der Cluster zugeordnet und entsprechend eingefärbt. Gratulation zu Ihrem eigens erstellten Scatterplot!

python-powerbi-scatterplot

Fazit

Das kurze Beispiel veranschaulicht, wie schnell Sie mit Hilfe von Python eine Clusteranalyse in Power BI durchführen.

Vorteile

Die Vorteile liegen somit auf der Hand.

  • Daten individuell darstellen
  • Analysen rasch durchführen

Nachteil

Kein Vor- ohne Nachteil. Das Manko bei der Sache ist, dass in jedem Visual die Berechnung der Cluster wieder neu ausgeführt wird. Um das zu umgehen, könnten Sie die Zuordnung auch im ersten Schritt direkt in der Tabelle speichern. Allerdings gehen so alle Nebendaten verloren. Diese sind wiederum notwendig, um z.B. das SSE-Diagramm zu erstellen.

Download des Use Case als PBIX

Um den vorangegangenen Use Case direkt in Power BI nochmal durchzugehen, gibt es den 'Use Case: Python & Power BI' als PBIX File zum Download.

Sie haben zusätzliche Fragen? Wir unterstützen Sie gerne beim Erstellen Ihrer individuellen Analyse mit Python in Power BI. Kontaktieren Sie uns noch heute.

HomeInsightsConsultingVorteileÜber UnsBlog