News & Tipps zu Microsoft Excel

Lesen Sie hier einige der besten Beiträge aus SmartTools Excel Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Excel.

Beitrag aus SmartTools Excel Weekly

Python in Excel – Das müssen Sie wissen, Teil 3

Excel 365

Microsoft spendiert Excel ein neues Feature, das die Datenanalyse und -visualisierung auf ein ganz neues Level hebt. Mit Python wird eine komplette Programmiersprache in Excel integriert, was bislang ungeahnte Möglichkeiten eröffnet. Die Beispiele aus diesem mehrteiligen Tipp geben einen ersten Vorgeschmack. Sie zeigen auch, wie Sie mit Python in Excel arbeiten. Im 2. Teil hatten wir unter anderem demonstriert, wie Sie eine Liste mit Daten bereinigen. Dafür genügen wenige Zeilen Python-Code. Selbstverständlich lassen sich mit Python auch weitergehende Auswertungen vornehmen. Basis-Statistiken erhalten Sie zum Beispiel mit einer einzigen Codezeile.

Die müssen Sie nicht in dieselbe Zelle eingeben wie den bisherigen Code. Um mehrere Python-Ergebnisse parallel in einem Tabellenblatt anzuzeigen, geben Sie sie in eine andere Zelle ein. Dabei müssen Sie nur folgendes beachten:

Wenn Sie auf ein Python-Objekt, das Sie in einer Zelle definiert haben, Bezug nehmen wollen, muss sich die neue Zelle rechts oder unter der Zelle mit dem Objekt befinden. In unserem Beispiel hatten wir etwa "data_gesamt" in Zelle E3 definiert. Schauen Sie, was passiert, wenn Sie in Zelle I2 statistische Werte dieses Objekts abrufen wollten:

  1. Markieren Sie Zelle I2 und aktivieren Sie den Python-Bearbeitungsmodus.
  2. Geben Sie folgende Codezeile ein:
data_gesamt.describe()
  1. Drücken Sie Strg + Return.

Excel wird die Anweisung mit einem Fehler quittieren, der im Diagnose-Aufgabenbereich näher beschrieben wird: "NameError: name 'data_gesamt' is not defined".

In Zeile 2 kennt Excel das Objekt "data_gesamt" noch nicht, da es erst in Zeile 3 definiert wurde. Wenn Sie die Python-Anweisung

data_gesamt.describe()

dagegen in Zelle I3 eingeben, wird sie fehlerfrei ausgeführt. Beim Einblenden der Excel-Werte erhalten Sie eine Übersicht über die Standard-Statistiken der Temperaturwerte: "mean" gibt die Durchschnittstemperatur aus, "min" den kleinsten Wert im gesamten Erfassungszeitraum, "max" den größten Wert usw.

Die Datenanalyse ist aber nur eine der Stärken von Python. Eine andere ist die Visualisierung in Form von Diagrammen / Plots. Python in Excel stellt dafür bewährte Bibliotheken wie Matplotlib.Pyplot oder Seaborn zur Verfügung.

Zur Veranschaulichung erweitern Sie unser Excel-Beispiel um ein Liniendiagramm, in dem Sie die Höchsttemperaturen über den erfassten Zeitraum darstellen:

  1. Um Platz für das Diagramm zu haben, legen Sie in der Beispiel-Arbeitsmappe ein neues Tabellenblatt an.
  2. Setzen Sie den Cursor zum Beispiel in Zelle A3 und aktivieren Sie in gewohnter Weise den Python-Modus.
  3. Geben Sie folgenden Python-Code ein:
plt.figure(figsize=(25,10), dpi=300)

plt.plot(data_gesamt.index, data_gesamt['Temp. max.'], color='tomato')

plt.gca().set(title="Temperaturen: Tageshöchstwerte", xlabel="Zeitraum", ylabel="Temp. °C")
  1. Drücken Sie Strg + Return.

Der Code legt zunächst die Diagrammgröße fest und zeichnet mit der "plot"-Funktion ein Liniendiagramm mit den Datumswerten auf der X-Achse und den Höchsttemperaturen auf der Y-Achse. Schließlich werden der Diagrammtitel sowie die Achsenbeschriftungen definiert.

Davon sehen Sie in Excel anfangs allerdings nichts. Es werden nur ein Symbol und die Python-Objektbezeichnung "Image" angezeigt.

Das ändert sich, wenn Sie die Python-Ausgabe über das Objektsymbol in der Bearbeitungsleiste auf Excel-Wert umschalten. Daraufhin sehen Sie zwar das Diagramm. Es ist aber winzig, weil es auf die Größe der Tabellenzelle skaliert wird. Sie könnten die Spaltenbreite und Zeilenhöhe anpassen, um das Diagramm in einer akzeptablen Größe darzustellen. Meist ist es aber sinnvoller, das Diagramm als Grafikobjekt anzeigen zu lassen.

Dazu klicken Sie mit der rechten Maustaste auf die Zelle mit dem Python-Code und wählen im Kontextmenü Bild in Zelle-Verweis erstellen an.

Das so erstellte Grafikobjekt ist mit der Python-Formelzelle verknüpft und kann frei platziert und dimensioniert werden.

Liniendiagramme können Sie natürlich auch mit herkömmlichen Excel-Funktionen erstellen. Die Python-Bibliotheken besitzen aber viele vorgefertigte Funktionen, die weitaus komplexere Visualisierungen ermöglichen.

Mit folgendem Python-Code können Sie sich zum Beispiel saisonale Trends und Statistiken der Wetterdaten zeichnen lassen:

from statsmodels.tsa.seasonal import seasonal_decompose

plt.figure(figsize=(20,10))
season_stats = seasonal_decompose(data_gesamt['Temp. max.'], model='additive', period=365)
season_stats.plot()
Zeitreihen lassen sich mit vorgefertigten Python-Funktionen auswerten.

Oder lassen Sie sich mit dem folgenden Python-Code ein Liniendiagramm mit dem gleitenden Monatsdurchschnitt der Temperaturen anzeigen und überlagern Sie es mit einer Trendlinie:

from numpy.polynomial import Polynomial

x = np.arange(data_gesamt.index.size)
y = data_gesamt['Temp. max.']

p = Polynomial.fit(x, y, 1)
data_temp_mean = data_gesamt['Temp. max.'].rolling(window=30).mean()

plt.figure(figsize=(20,10), dpi=300)
plt.style.use('seaborn-v0_8-whitegrid')
plt.plot(data_gesamt.index, p(x), 'b')
plt.plot(data_temp_mean, color='r')

Wie Sie sehen, lohnt es sich, sich näher mit Python zu beschäftigen. Und es bleibt spannend, wie Python in Excel nach Ablauf der Vorschauphase angeboten wird.