Pandas-Styling

Panda bekommt Locken / Styling

Einführung

Reiner Text ist unkompliziert und leicht zu lesen, kann aber manchmal an Betonung und Klarheit fehlen, insbesondere bei komplexen oder umfangreichen Inhalten. Text mit Hervorhebungen, unterschiedlichen Schriftarten und Farben hingegen hilft, die Aufmerksamkeit des Lesers zu lenken, wichtige Punkte hervorzuheben und die Lesbarkeit zu verbessern. Durch visuelle Unterscheidungen wie Fettdruck, Kursivschrift und Farbcodierung können wichtige Informationen besser herausgestellt, das Verständnis gefördert und die Benutzerbindung verbessert werden. Ein übermäßiger Einsatz dieser Elemente kann jedoch zu Unordnung führen und die Lesbarkeit verringern – daher ist Balance entscheidend.

Das war ein Beispiel für einen reinen, sachlichen Stil, wie er häufig in seriösen Lehrbüchern zu finden ist. Im Gegensatz dazu könnte man einen ansprechenderen Stil so gestalten:

Reiner Text ist unkompliziert und leicht zu lesen, kann aber manchmal an Betonung und Klarheit fehlen, insbesondere bei komplexen oder umfangreichen Inhalten.
Andererseits hilft Text mit Hervorhebungen, unterschiedlichen Schriftarten und 🎨 Farben, um die Aufmerksamkeit des Lesers zu lenken, wichtige Punkte hervorzuheben und die Lesbarkeit zu verbessern.
✅ Die Verwendung von Fettdruck, Kursivschrift und 🟢 Farbcodierung kann wichtige Informationen hervorheben, das Verständnis erleichtern und die Nutzerbindung verbessern.
⚠️ Allerdings kann übermäßiger Einsatz dieser Elemente zu Unordnung führen und die Lesbarkeit beeinträchtigen, daher ist Balance entscheidend!

Nun hast du vielleicht schon eine Vorstellung vom Fokus dieses Kapitels in unserem Pandas-Tutorial. Lassen wir den Blick nun auf Python und Pandas richten: Genauso wie wir Texte durch Strukturierung und Hervorhebungen klarer und ansprechender gestalten können, lassen sich diese Prinzipien auch auf ein DataFrame anwenden. So kann man es lesbarer und optisch ansprechender gestalten, ohne die Rohdaten zu verändern.

In der Programmierung – einschließlich der Python-Entwicklung – gilt als grundlegende Best Practice, die Rohdaten (Logik) von ihrer Darstellung (Styling oder Rendering) zu trennen. Dieses Prinzip findet in verschiedenen Bereichen Anwendung, von der Webentwicklung über Data Science bis hin zur Backend-Entwicklung.

In Pandas halten wir uns an dieses Prinzip, indem wir die Rohdaten unabhängig von ihrer Präsentation bewahren. Dadurch bleiben die Daten präzise, rechnerisch nutzbar und jederzeit leicht formatiert, ohne ihre zugrunde liegende Struktur zu verändern.

Warum sollte man Daten von der Präsentation in Pandas trennen?

  • Bewahrt die Datenintegrität
    Die zugrunde liegenden numerischen Werte bleiben unverändert, wodurch Rundungsfehler oder Datenkorruption vermieden werden.
    Beispiel: Ein Wert bleibt als 1234.5678 erhalten, anstatt als formatierter String "1.234,57 EUR" gespeichert zu werden.

  • Gewährleistet die Berechnungskompatibilität
    Operationen wie Summieren, Mittelwertbildung oder statistische Analysen erfordern reine numerische Daten.
    Beispiel: Wenn wir "$100.50" als String speichern, kann Pandas die Gesamtverkäufe nicht korrekt berechnen.

  • Ermöglicht flexible Präsentation
    Die Formatierung kann je nach Anwendungsfall dynamisch angewendet werden (Berichte, Dashboards, benutzerspezifische Ansichten).
    Beispiel: Anzeige als "50%", aber Speicherung als 0.5 für Berechnungen.

  • Erhöht die Wartbarkeit
    Falls sich die Anzeigeanforderungen ändern (z. B. von USD zu EUR), muss nur die Styling-Logik angepasst werden, nicht die eigentlichen Daten.

Die .style-Eigenschaft

Pandas bietet eine leistungsstarke .style-Eigenschaft, die es ermöglicht, DataFrames optisch ansprechend zu formatieren und zu gestalten. Dies ist besonders nützlich für Jupyter Notebooks und Berichte.
Die .style-Eigenschaft von Pandas erlaubt eine dynamische Formatierung und Visualisierung, ohne die Rohdaten zu verändern. Sie verbessert die Lesbarkeit durch Zahlenformatierung, Farbverläufe und Hervorhebungen, während Berechnungen unangetastet bleiben.

Grundlegende Formatierung mit .format

Werfen wir zunächst einen Blick auf die format-Methode der .style-Eigenschaft von Pandas. Die format-Methode wird verwendet, um die Anzeige von DataFrame-Werten anzupassen, ohne die zugrunde liegenden Daten zu verändern.

Das folgende Beispiel zeigt, wie man numerische Werte in einem DataFrame formatiert, indem die Spalte B auf zwei Dezimalstellen beschränkt wird:

In [112]:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3], 'B': [4.1234, 5.5678, 6.91011]}) # Formatierung wird angewendet: # Spalte 'B' mit 2 Nachkommastellen styled_df = df.style.format({'B': "{:,.2f}"}) styled_df 
Out[112]:
  A B
0 1 4.12
1 2 5.57
2 3 6.91

Weitere Formatierungsmöglichkeiten:

Spezifizierer Effekt Beispiel ("{:.2f}".format(123.456))
.0f Rundet auf 0 Dezimalstellen 123
.2f Rundet auf 2 Dezimalstellen 123.46
.2% Umwandlung in Prozent mit 2 Dezimalstellen 12345.60%
.e Wissenschaftliche Notation (Kleinbuchstaben) 1.23e+02
.E Wissenschaftliche Notation (Großbuchstaben) 1.23E+02
.g Allgemeines Format (entfernt unnötige Dezimalstellen) 123.456
.G Allgemeines Format (Großbuchstaben-Exponenten falls erforderlich) 123.456

Häufige Anwendungsfälle:

  • "{:,.2f}"Tausendertrennzeichen + 2 Dezimalstellen (1.234,56)
  • "{:.1%}"Prozentanzeige (12,3%)
  • "{:.3e}"Wissenschaftliche Notation (1.235e+02)

Die Daten bleiben numerisch, werden aber in einer formatierten Weise angezeigt.

Bevor wir ein weiteres Formatierungsbeispiel erkunden, werfen wir zunächst einen Blick auf den falschen Ansatz, um zu verstehen, warum die Vermischung von Logik und Darstellung eine schlechte Praxis ist.

Indem wir diesen Fehler in Aktion sehen, wirst du die Bedeutung der Trennung von Datenverarbeitung und Präsentation besser zu schätzen wissen:

In [3]:
import pandas as pd df = pd.DataFrame({'Preis': ['1.234,57 €', '9.876,43 €'], 'Rabatt': ['15%', '25%']}) df 
Out[3]:
Preis Rabatt
0 1.234,57 € 15%
1 9.876,43 € 25%

Das ist schlecht, weil:

  • Die Werte als Strings statt als numerische Typen gespeichert werden.
  • Berechnungen wie Summieren, Mittelwertbildung oder Sortieren nicht durchgeführt werden können.
  • Die Formatierung (Währungssymbole, Prozentzeichen) mit den Daten vermischt ist, was gegen das Prinzip der Trennung von Daten und Präsentation verstößt.

Nun die korrekte Vorgehensweise mit style.format:

In [6]:
df = pd.DataFrame({'Preis': [1234.57, 9876.43], 'Rabatt': [0.15, 0.25]}) # Formatierung nur zur Anzeige anwenden (Zahlen bleiben unverändert) df.style.format({'Preis': '{:,.2f} €', 'Rabatt': '{:.0%}'}) 
Out[6]:
  Preis Rabatt
0 1,234.57 € 15%
1 9,876.43 € 25%

Das ist viel besser:

  • Die "Preis"-Spalte bleibt ein Float (z. B. 1234.57), wird aber als "1.234,57 €" angezeigt.
  • Die "Rabatt"-Spalte bleibt ein Float (z. B. 0.15), wird aber als "15%" angezeigt.

Hervorheben der maximalen Werte

Das folgende Beispiel zeigt, wie man mit highlight_max() den höchsten Wert in jeder Spalte hervorheben kann, sodass wichtige Werte visuell herausstechen.

In [8]:
import pandas as pd df = pd.DataFrame({ 'Vorname': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 'Gewicht (kg)': [68, 85, 74, 90, 62], 'Größe (cm)': [165, 180, 175, 185, 160], 'IQ': [120, 135, 110, 132, 125] }) # Styling anwenden, um den höchsten Wert in jeder Spalte hervorzuheben styled_df = df.style.highlight_max(axis=0, color='lightgreen') styled_df 
Out[8]:
  Vorname Gewicht (kg) Größe (cm) IQ
0 Alice 68 165 120
1 Bob 85 180 135
2 Charlie 74 175 110
3 David 90 185 132
4 Emma 62 160 125

Im vorherigen Beispiel haben wir den höchsten Wert in jeder Spalte hervorgehoben.
Allerdings wäre das Hervorheben der maximalen Werte in jeder Zeile nicht sinnvoll, da die Daten heterogen sind – es wäre unlogisch, innerhalb einer einzelnen Zeile einen Namen, ein Gewicht, eine Größe und einen IQ-Wert miteinander zu vergleichen.

Um ein Beispiel zu zeigen, bei dem die zeilenweise Hervorhebung sinnvoll ist, betrachten wir einen passenderen Datensatz.
Mit dem Parameter axis können wir festlegen, ob wir zeilenweise (axis=1) oder spaltenweise (axis=0) hervorheben möchten.

In [9]:
import pandas as pd df = pd.DataFrame({ 'Montag': [8.5, 7.2, 9.0, 6.8, 8.3], 'Dienstag': [7.4, 8.1, 6.5, 9.2, 7.0], 'Mittwoch': [8.0, 9.3, 7.7, 8.1, 6.9], 'Donnerstag': [6.2, 8.4, 9.1, 7.3, 8.5], 'Freitag': [7.3, 6.8, 8.2, 7.6, 9.1] }, index=['Alice', 'Bob', 'Charlie', 'David', 'Emma']) # Styling anwenden, um den höchsten Wert in jeder Zeile hervorzuheben # (der längste Arbeitstag jeder Person) styled_df = df.style.highlight_max(axis=1, color='orange') styled_df 
Out[9]:
  Montag Dienstag Mittwoch Donnerstag Freitag
Alice 8.500000 7.400000 8.000000 6.200000 7.300000
Bob 7.200000 8.100000 9.300000 8.400000 6.800000
Charlie 9.000000 6.500000 7.700000 9.100000 8.200000
David 6.800000 9.200000 8.100000 7.300000 7.600000
Emma 8.300000 7.000000 6.900000 8.500000 9.100000

Now, we highlight the longest workday per day with axis=0:

In [10]:
import pandas as pd df = pd.DataFrame({ 'Montag': [8.5, 7.2, 9.0, 6.8, 8.3], 'Dienstag': [7.4, 8.1, 6.5, 9.2, 7.0], 'Mittwoch': [8.0, 9.3, 7.7, 8.1, 6.9], 'Donnerstag': [6.2, 8.4, 9.1, 7.3, 8.5], 'Freitag': [7.3, 6.8, 8.2, 7.6, 9.1] }, index=['Alice', 'Bob', 'Charlie', 'David', 'Emma']) # Styling anwenden, um den höchsten Wert in jeder Zeile hervorzuheben # (der längste Arbeitstag jeder Person) styled_df = df.style.highlight_max(axis=0, color='orange') styled_df 
Out[10]:
  Montag Dienstag Mittwoch Donnerstag Freitag
Alice 8.500000 7.400000 8.000000 6.200000 7.300000
Bob 7.200000 8.100000 9.300000 8.400000 6.800000
Charlie 9.000000 6.500000 7.700000 9.100000 8.200000
David 6.800000 9.200000 8.100000 7.300000 7.600000
Emma 8.300000 7.000000 6.900000 8.500000 9.100000

Anwenden eines Farbverlaufs / Gradient

Die Methode .background_gradient() wendet einen Farbverlauf auf jede Zelle basierend auf ihrem Wert an, indem eine bestimmte Farbskala (cmap) verwendet wird.

Die dahinterliegende Logik besteht darin, die Daten zu normalisieren und sie anschließend einer Farbskala zuzuordnen.

In [11]:
df.style.background_gradient(cmap='Blues') 
Out[11]:
  Montag Dienstag Mittwoch Donnerstag Freitag
Alice 8.500000 7.400000 8.000000 6.200000 7.300000
Bob 7.200000 8.100000 9.300000 8.400000 6.800000
Charlie 9.000000 6.500000 7.700000 9.100000 8.200000
David 6.800000 9.200000 8.100000 7.300000 7.600000
Emma 8.300000 7.000000 6.900000 8.500000 9.100000

Schritt-für-Schritt-Logik hinter der Farbverlaufsfärbung:

  1. Werte normalisieren
    • Pandas skaliert die Werte in jeder Spalte zwischen 0 und 1.
    • Der kleinste Wert wird 0 (hellste Farbe) und der größte Wert wird 1 (dunkelste Farbe).

$$ \text{normalisierter Wert} = \frac{\text{Zellenwert} - \text{min(Spalte)}}{\text{max(Spalte)} - \text{min(Spalte)}} $$

  1. Colormap anwenden (cmap='Blues')

    • Eine matplotlib-Colormap (z. B. "Blues") wird verwendet, um Farben basierend auf den normalisierten Werten zuzuweisen.
    • Kleinere Werte erhalten hellere Blautöne.
    • Größere Werte erhalten dunklere Blautöne.
  2. Farben rendern

    • Die Hintergrundfarbe jeder Zelle wird mit der entsprechenden Farbe aus der Colormap gesetzt.

Standardmäßig normalisiert background_gradient() die Werte spaltenweise (axis=0).
Um stattdessen zeilenweise zu skalieren, muss axis auf 1 gesetzt werden:

In [12]:
df.style.background_gradient(cmap='Blues', axis=1) 
Out[12]:
  Montag Dienstag Mittwoch Donnerstag Freitag
Alice 8.500000 7.400000 8.000000 6.200000 7.300000
Bob 7.200000 8.100000 9.300000 8.400000 6.800000
Charlie 9.000000 6.500000 7.700000 9.100000 8.200000
David 6.800000 9.200000 8.100000 7.300000 7.600000
Emma 8.300000 7.000000 6.900000 8.500000 9.100000

Du kannst mit verschiedenen cmap-Werten experimentieren:

  • 'Blues' → Blautöne (gut für Klarheit)
  • 'Greens' → Grüntöne (umweltfreundlich, positive Wirkung)
  • 'Oranges' → Orangetöne (warme Farben)
  • 'Purples' → Lilatöne (stilvoll, künstlerisch)
  • 'Reds' → Rottöne (Intensität, Dringlichkeit)
  • 'Greys' → Grautöne (neutral, gut für dezente visuelle Effekte)

Divergierende Colormaps eignen sich hervorragend, um Abweichungen von einem zentralen Wert hervorzuheben (z. B. positive vs. negative Veränderungen).

  • 'coolwarm' → Blau-Rot-Verlauf (gut zur Hervorhebung von Unterschieden)
  • 'RdBu' → Rot zu Blau (gegensätzliche Extreme)
  • 'PiYG' → Pink zu Grün (ästhetische Alternative zu Rot/Blau)
  • 'BrBG' → Braun zu Grün (erdige Töne, gut für Kontraste)

Mehrfarbige & auffällige Colormaps bieten einzigartige und lebendige Effekte.

  • 'viridis' → Gelb-Grün-Blau (farbenblindfreundlich, weit verbreitet in der Datenvisualisierung)
  • 'plasma' → Lila-Rot-Gelb (hoher Kontrast, sticht hervor)
  • 'magma' → Dunkellila-Orange-Gelb (dramatisch, gut für visuelle Effekte mit hoher Wirkung)
  • 'cividis' → Blau-Gelb (farbenblindfreundliche Alternative zu Viridis)

Hier ist ein Beispiel mit cmap='cividis':

In [13]:
import pandas as pd import numpy as np daten = { 'Januar': [5000, -2000, 3000, -1000, 2600], 'Februar': [-1500, 4000, -2500, 500, -1100], 'März': [3000, -1800, 6200, -700, 1000], 'April': [-2200, 5000, -1200, 1000, 3500] } index = ['Nimbus Corp', 'Quantum Dynamics', 'Aurora Ventures', 'Vertex Solutions', 'Orion Enterprises'] df = pd.DataFrame(daten, index=index) # Styling mit 'cividis'-Colormap anwenden styled_df = df.style.background_gradient(cmap='cividis') styled_df 
Out[13]:
  Januar Februar März April
Nimbus Corp 5000 -1500 3000 -2200
Quantum Dynamics -2000 4000 -1800 5000
Aurora Ventures 3000 -2500 6200 -1200
Vertex Solutions -1000 500 -700 1000
Orion Enterprises 2600 -1100 1000 3500

Balkendiagramme innerhalb von Zellen anwenden

Die Methode .style.bar() fügt Balkendiagramme innerhalb der Zellen hinzu, um die Werte visuell darzustellen.
Dies erleichtert den schnellen Vergleich von Arbeitsstunden pro Person (zeilenweise) oder pro Tag (spaltenweise).

In [14]:
import pandas as pd df = pd.DataFrame({ 'Montag': [8.5, 5.2, 9.8, 6.1, 7.3], 'Dienstag': [6.4, 8.7, 7.1, 9.0, 5.6], 'Mittwoch': [7.8, 9.5, 5.9, 8.3, 6.7], 'Donnerstag': [5.6, 7.2, 9.3, 6.8, 8.9], 'Freitag': [9.1, 6.5, 8.0, 7.6, 9.4] }, index=['Alice', 'Bob', 'Charlie', 'David', 'Emma']) # Balkendiagramme spaltenweise anwenden (jede Spalte hat ihre eigene Skala) styled_columnwise_bar = df.style.bar(color='lightblue', axis=0) 
In [15]:
# Balkendiagramme zeilenweise anwenden (jede Zeile hat ihre eigene Skala) styled_rowwise_bar = df.style.bar(color='lightgreen', width=90, # Maximale Breite der Balken in Prozent axis=1) styled_rowwise_bar 
Out[15]:
  Montag Dienstag Mittwoch Donnerstag Freitag
Alice 8.500000 6.400000 7.800000 5.600000 9.100000
Bob 5.200000 8.700000 9.500000 7.200000 6.500000
Charlie 9.800000 7.100000 5.900000 9.300000 8.000000
David 6.100000 9.000000 8.300000 6.800000 7.600000
Emma 7.300000 5.600000 6.700000 8.900000 9.400000

Ein weiteres Beispiel, das die Verwendung anderer Parameter demonstriert:

In [16]:
data = { 'Januar': [5000, -2000, 3000, -1000, 2600], 'Februar': [-1500, 4000, -2500, 500, -1100], 'März': [3000, -1800, 6200, -700, 1000], 'April': [-2200, 5000, -1200, 1000, 3500] } index = ['Nimbus Corp', 'Quantum Dynamics', 'Aurora Ventures', 'Vertex Solutions', 'Orion Enterprises'] df = pd.DataFrame(data, index=index) styled_df = df.style.bar( color=('red', 'green'), # Negative Werte in Rot, positive in Grün align='zero', # Balken um Null zentrieren, andere Optionen: 'left', 'mid' (Standard) width=80, # Maximale Balkenbreite auf 80 % setzen axis=0 # Spaltenweise Balkenanzeige ) styled_df 
Out[16]:
  Januar Februar März April
Nimbus Corp 5000 -1500 3000 -2200
Quantum Dynamics -2000 4000 -1800 5000
Aurora Ventures 3000 -2500 6200 -1200
Vertex Solutions -1000 500 -700 1000
Orion Enterprises 2600 -1100 1000 3500

Funktionen spalten- oder zeilenweise anwenden

Die .apply()-Methode in Pandas ermöglicht es, eine Funktion auf jedes Element, jede Zeile oder jede Spalte eines DataFrames anzuwenden.
Sie ist ein leistungsstarkes Werkzeug für Datenumwandlung, Feature Engineering und benutzerdefinierte Berechnungen.

Hintergrundfarben für Index-, Spalten- und Wertzellen

In [17]:
import pandas as pd df = pd.DataFrame({ 'Produkt': ['Hemd', 'Hose', 'Jacke', 'Schuhe', 'Hut'], 'Klein (€)': [25.90, 40.10, 60.00, 80.00, 15.00], 'Mittel (€)': [30.50, 45.00, 65.00, 85.00, 18.00], 'Groß (€)': [35.80, 50.00, 70.00, 90.00, 20.00] }) def highlight_values(val):  """ Funktion zur Farbgebung der Werte-Zellen in Hellgelb """ return 'background-color: lightyellow;' # Stile auf die Tabelle anwenden styled_df = df.style.map(highlight_values).set_table_styles([ {'selector': 'th', 'props': [('background-color', 'orange'), ('color', 'black'), ('font-weight', 'bold')]}, # Spaltenüberschriften {'selector': 'th.index', 'props': [('background-color', 'orange'), ('color', 'black'), ('font-weight', 'bold')]} # Index (Zeilenüberschriften) ]) # Den gestylten DataFrame anzeigen styled_df 
Out[17]:
  Produkt Klein (€) Mittel (€) Groß (€)
0 Hemd 25.900000 30.500000 35.800000
1 Hose 40.100000 45.000000 50.000000
2 Jacke 60.000000 65.000000 70.000000
3 Schuhe 80.000000 85.000000 90.000000
4 Hut 15.000000 18.000000 20.000000
In [18]:
import pandas as pd # Erstellen eines DataFrames mit Produkten und Preisen df = pd.DataFrame({ 'Produkt': ['Hemd', 'Hose', 'Jacke', 'Schuhe', 'Hut'], 'Klein (€)': [25.90, 40.10, 60.00, 80.00, 15.00], 'Mittel (€)': [30.50, 45.00, 65.00, 85.00, 18.00], 'Groß (€)': [35.80, 50.00, 70.00, 90.00, 20.00] }) def highlight_values(val):  """ Hebt Werte-Zellen in Hellgelb hervor """ return 'background-color: lightyellow;' # Stil auf den DataFrame anwenden styled_df = df.style.map(highlight_values).set_table_styles([ {'selector': 'th', 'props': [('background-color', 'orange'), ('color', 'black'), ('font-weight', 'bold')]}, # Stil für Spaltenüberschriften {'selector': 'th.index', 'props': [('background-color', 'orange'), ('color', 'black'), ('font-weight', 'bold')]} # Stil für Zeilenüberschriften (Index) ]) # Gestylten DataFrame anzeigen styled_df 
Out[18]:
  Produkt Klein (€) Mittel (€) Groß (€)
0 Hemd 25.900000 30.500000 35.800000
1 Hose 40.100000 45.000000 50.000000
2 Jacke 60.000000 65.000000 70.000000
3 Schuhe 80.000000 85.000000 90.000000
4 Hut 15.000000 18.000000 20.000000
In [19]:
import pandas as pd import numpy as np # Monate definieren monate = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] # Boutique-Standorte definieren standorte = ['Zürich', 'Frankfurt', 'Hamburg', 'München'] # Zufällige Einkommenswerte generieren (einschließlich Verluste) np.random.seed(42) # Für Reproduzierbarkeit daten = np.random.randint(-5000, 20000, size=(12, 4)) # Zufällige Einkommenswerte # DataFrame erstellen df = pd.DataFrame(daten, index=monate, columns=standorte) # Funktion zur Hervorhebung von Werten: Grün für Gewinne, Rot für Verluste def highlight_values(val): if val < 0: return 'background-color: red; color: white; font-weight: bold' else: return 'background-color: lightgreen; color: black; font-weight: bold' # Stile anwenden styled_df = df.style.map(highlight_values) \ .set_table_styles([ {'selector': 'th', 'props': [('background-color', 'yellow'), ('color', 'black'), ('font-weight', 'bold')]}, # Spaltenüberschriften {'selector': 'th.index', 'props': [('background-color', 'yellow'), ('color', 'black'), ('font-weight', 'bold')]} # Zeilenüberschriften ]) \ .format("{:,.0f}") # Tausendertrennzeichen für bessere Lesbarkeit hinzufügen styled_df 
Out[19]:
  Zürich Frankfurt Hamburg München
Januar 18,654 10,795 -4,140 390
Februar 16,575 6,964 6,284 17,118
März 1,265 11,850 -574 16,962
April 9,423 6,363 11,023 3,322
Mai -3,315 -4,231 18,333 -2,567
Juni 311 51 1,420 12,568
Juli 15,939 14,769 1,396 3,666
August 13,942 19,233 13,431 -2,253
September -4,811 14,118 -1,995 16,042
Oktober -3,101 19,118 -3,733 12,912
November 6,394 -1,444 -1,110 3,838
Dezember 9,502 16,777 5,627 3,792

📌 Kapitelzusammenfassung

In diesem Kapitel haben wir verschiedene Methoden zur Formatierung und Visualisierung von Pandas-DataFrames kennengelernt.

  • Wir haben gezeigt, wie sich Werte formatieren lassen, ohne die Rohdaten zu verändern, indem wir .style.format() verwendet haben.
  • Mithilfe von Farbverläufen (.background_gradient()) konnten wir Werte visuell hervorheben und deren Unterschiede deutlicher machen.
  • Die Verwendung von Balkendiagrammen (.bar()) ermöglichte eine anschauliche Darstellung von Zahlen innerhalb der Tabellenzellen.
  • Mit .apply() konnten wir benutzerdefinierte Funktionen auf Spalten oder Zeilen anwenden, um Daten flexibel zu transformieren.
  • Abschließend haben wir gezeigt, wie man Zellen basierend auf ihren Werten einfärbt, um positive und negative Werte klar zu unterscheiden.

Diese Techniken helfen, Daten übersichtlicher und interpretierbarer zu machen, insbesondere in Berichten, Dashboards oder Jupyter Notebooks. 🚀

box

Numerisches Python

Die Bücher zur Webseite

Bücher zur Webseite

Im Hanser-Verlag sind vier Bücher von Bernd Klein und Philip Klein erschienen, die auf den Inhalten dieser Webseite aufbauen, aber auch über die Inhalte hinausgehen. Es lohnt sich also die Bücher zu kaufen, womit Sie außerdem diese Webseite unterstützen!

Einführung in Python3

Einführung in Python von Bernd Klein
Zum Online-Shop des Hanser-Verlages, wo Sie das Buch versandkostenfrei bestellen können!


Numerisches Python: Arbeiten mit NumPy, Matplotlib und Pandas

Bernd Klein: Python-Buch Numerisches Python Buch kaufen

Bernd Klein, Philip Klein:
Funktionale Programmierung mit Python

Bernd Klein, Philip Klein: Funktionale Programmierung mit Python Buch kaufen Python-Grundlagen | eLearning
Mit dem Hanser eCampus „Python-Grundlagen“ erhalten Einsteiger:innen eine Einführung in die Programmiersprache Python.

Python Grundlagen: elearning, Bernd Klein Buch kaufen



Bücher kaufen

Wenn Ihnen diese Webseite gefällt, - was wir natürlich sehr hoffen, - dann können Sie meine Arbeit unterstützen, wenn Sie eines meiner Bücher oder beide Bücher kaufen oder weiterempfehlen.

Die Bücher können Sie über jede Buchhandlung in Ihrer Nähe beziehen. Alternativ können Sie sie auch direkt über den Hanser-Verlag beziehen:
Bücher von Bernd Klein und Philip Klein

Spenden

Ihre Unterstützung ist dringend benötigt. Diese Webseite ist frei von Werbeblöcken und -bannern! So soll es auch bleiben! Dazu benötigen wir Ihre Unterstützung:

Weshalb wir Ihre Spende dringend benötigen erfahren Sie hier

Tutorial

Diese Webseite bietet ein Tutorial für Python. Der Unterschied zu anderen Online-Tutorials und Python-Kursen besteht darin, dass wir hier mehr Beispiele und Übungen bieten wollen. Außerdem werden komplexe Probleme in zahlreichen Diagrammen und Bildern veranschaulicht, um einen leichteren Zugang zu gewährleisten. In zahlreichen Python-Kursen hat Bernd Klein die Erfahrungen gesammelt, die in die Entwicklung dieser Webseite eingeflossen sind.

Fortgeschrittene Themen

Auf dieser Webseite befinden sich auch zahlreiche fortgeschrittene Themen zu Python, wie man sie in dieser Art vergeblich in anderen Python-Tutorials sucht. Themen, die insbesondere auch für Studierende der Informatik von besonderem Interesse sind: Turingmaschine, Endliche Automaten, Threads, Graphentheorie

Aber auch für Mathematikerinnen und Mathematiker, Ingenieurinnen und Ingenieure und andere naturwissenschaftlich Orientierte sind zum Beispiel die Einführungen in NumPy, Matplotlib und Pandas von großem Nutzen.


 


Suchen in dieser Webseite:

Webseite durchsuchen:

English Version / Englische Übersetzung

This chapter is also available in our English Python tutorial: Styling DataFrame Objects in Pandas

Schulungen

Wenn Sie Python schnell und effizient lernen wollen, empfehlen wir den Kurs Bodenseo, Linux, Python und viele andere Kurse
Einführung in Python
von Bodenseo. Dieser Kurs wendet sich an totale Anfänger, was Programmierung betrifft. Wenn Sie bereits Erfahrung mit Python oder anderen Programmiersprachen haben, könnte der Python-Kurs für Fortgeschrittene der geeignete Kurs sein.

Python Courses


For those who prefer Python training courses in English: All our Python classes are available in English as well: Python Courses



Dem Autor Bernd Klein auf Facebook folgen:


Bernd Klein on Facebook

Spenden

Ihre Unterstützung ist dringend benötigt. Diese Webseite ist frei von Werbeblöcken und -bannern! So soll es auch bleiben! Dazu benötigen wir Ihre Unterstützung:

Weshalb wir Ihre Spende benötigen erfahren Sie hier

Spruch des Tages:

Der Anwender steht immer im Mittelpunkt - und dort steht er jedem - und vor allem dem Programmierer - im Weg!


Und noch ein Spruch:

"Er ist ein fauler Hund, sicherlich sehr intelligent aber von Mathematikkenntnissen Überhaupt nicht belastet"
Hermann Minkowski über Albert Einstein

Hilfe

Diese Dokumentation zu Python mit Einführung und Tutorial wurde mit großer Sorgfalt erstellt und wird ständig erweitert. Dennoch können wir für die Korrektheit der Texte und der zahlreichen Beispiele keine Garantie übernehmen. Die Benutzung und Anwendung der Beispiele erfolgt auf eigenes Risiko. Wir freuen uns über alle Anregungen und Fehlerkorrekturen!



Datenschutzerklärung

Datenschutzerklärung nach DSGVO