Direkt zum Inhalt
HeimAnleitungenPython

Python Excel Tutorial: Der endgültige Leitfaden

Lerne, wie du Excel-Dateien in Python liest und importierst, Daten in diese Tabellen schreibst und die besten Pakete dafür findest.
Aktualisierte 11. Sept. 2024  · 30 Min. lesen

Einführung in Excel in Python

Egal, ob du studierst oder berufstätig bist, die Chancen stehen gut, dass du Excel benutzt hast, um mit Daten zu arbeiten und Zahlen zu berechnen.

Eine Studie aus dem Jahr 2019 ergab, dass etwa 54 % der Unternehmen Excel nutzen, um Rechenoperationen durchzuführen, Daten zu analysieren, Visualisierungen zu erstellen und Berichte zu generieren. Du kannst auch Vorhersagemodelle wie Regression und Clustering mit Excel durchführen.

Doch trotz der unbestrittenen Stärken von Excel hat das Tool seine eigenen Nachteile, die es manchmal ineffizient machen, wenn es um bestimmte Aufgaben mit großen Datensätzen geht.

Eine Einschränkung von Excel ist seine Unfähigkeit, große Datenmengen zu verarbeiten. Wenn du versuchst, komplexe Operationen mit vielen Dateneinträgen in Excel durchzuführen, kann es zu ernsthaften Leistungsproblemen kommen, besonders wenn deine Formeln und Makros nicht für die Leistung optimiert sind.

Excel kann auch sehr zeitaufwändig werden, wenn du immer wiederkehrende Aufgaben erledigen musst. Wenn du zum Beispiel jede Woche eine Analyse in mehreren Excel-Dateien wiederholen musst, müsstest du sie manuell öffnen und die gleichen Formeln immer wieder einfügen.

Umfragen zeigen, dass 93% der Excel-Benutzer/innen es als zeitaufwändig empfinden, Tabellenkalkulationen zu konsolidieren und dass Mitarbeiter/innen jeden Monat etwa 12 Stunden damit verbringen, verschiedene Excel-Dateien zu kombinieren.

Diese Nachteile können durch die Automatisierung von Excel-Workflows mit Python gelöst werden. Aufgaben wie Tabellenkonsolidierung, Datenbereinigung und prädiktive Modellierung können mit einem einfachen Python-Skript, das in eine Excel-Datei geschrieben wird, in wenigen Minuten erledigt werden.

Excel-Benutzer/innen können auch einen Zeitplaner in Python erstellen, der das Skript automatisch in verschiedenen Zeitintervallen ausführt, wodurch die Anzahl der menschlichen Eingriffe, die erforderlich sind, um dieselbe Aufgabe immer wieder durchzuführen, drastisch reduziert wird.

In diesem Artikel zeigen wir dir, wie du das machst:

  • Benutze eine Bibliothek namens Openpyxl, um Excel-Dateien mit Python zu lesen und zu schreiben.
  • Arithmetische Operationen und Excel-Formeln in Python erstellen
  • Manipuliere Excel-Arbeitsblätter mit Python
  • Erstelle Visualisierungen in Python und speichere sie in einer Excel-Datei
  • Excel-Zellfarben und -Stile mit Python formatieren

Python von Grund auf lernen

Beherrsche Python für Data Science und erwerbe gefragte Fähigkeiten.
Kostenloses Lernen Beginnen

Einführung in Openpyxl

Openpyxl ist eine Python-Bibliothek, die es ermöglicht, Excel-Dateien zu lesen und in sie zu schreiben. 

Dieses Framework hilft dir, Funktionen zu schreiben, Tabellen zu formatieren, Berichte zu erstellen und Diagramme direkt in Python zu erstellen, ohne dass du eine Excel-Anwendung öffnen musst.

Außerdem können Nutzer/innen mit Openpyxl durch Arbeitsblätter iterieren und dieselbe Analyse für mehrere Datensätze gleichzeitig durchführen. 

Dies verbessert die Effizienz und ermöglicht die Automatisierung von Excel-Arbeitsabläufen, da die Nutzer/innen die Analyse nur auf einem Arbeitsblatt durchführen müssen und sie so oft wie nötig wiederholen können.

So installierst du Openpyxl

Um Openpyxl zu installieren, öffne einfach die Eingabeaufforderung oder die Powershell und gib den folgenden Befehl ein:

$pip install Openpyxl

Du solltest die folgende Meldung sehen, die anzeigt, dass das Paket erfolgreich installiert wurde:

Openpyxl insall Erfolg

Excel-Dateien in Python mit Openpyxl lesen

In diesem Tutorial verwenden wir den Video Game Sales-Datensatz von Kaggle. Dieser Datensatz wurde von unserem Team für diesen Lehrgang aufbereitet. Du kannst die modifizierte Version unter diesem Link herunterladen. Du kannst Excel in Python importieren, indem du den folgenden Prozess befolgst:

  1. Laden der Arbeitsmappe

    Nachdem du den Datensatz heruntergeladen hast, importiere die Openpyxl-Bibliothek und lade die Arbeitsmappe in Python:

    import openpyxl 
    
    wb = openpyxl.load_workbook('videogamesales.xlsx')

    Da die Excel-Datei nun als Python-Objekt geladen ist, musst du der Bibliothek mitteilen, auf welches Arbeitsblatt sie zugreifen soll. Es gibt zwei Möglichkeiten, dies zu tun:

    Die erste Methode besteht darin, einfach das aktive Arbeitsblatt, also das erste Blatt in der Arbeitsmappe, mit der folgenden Codezeile aufzurufen:

    ws = wb.active

    Wenn du den Namen des Arbeitsblatts kennst, kannst du es alternativ auch über seinen Namen aufrufen. In diesem Abschnitt des Lehrgangs werden wir das Blatt "vgsales" verwenden:

    ws = wb['vgsales']

    Zählen wir nun die Anzahl der Zeilen und Spalten in diesem Arbeitsblatt:

    print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))

    Der obige Code sollte die folgende Ausgabe liefern:

    Total number of rows: 16328. And total number of columns: 10

    Jetzt, da wir die Abmessungen des Blattes kennen, können wir lernen, wie man Daten aus der Arbeitsmappe liest. 

  2. Daten aus einer Zelle lesen

    Hier ist ein Screenshot des aktiven Blattes, mit dem wir in diesem Abschnitt arbeiten werden:

    Verkaufsdaten für Videospiele

    Um mit Openpyxl Daten aus einer bestimmten Zelle abzurufen, kannst du den Wert der Zelle wie folgt eingeben:

    print('The value in cell A1 is: '+ws['A1'].value)

    Du solltest die folgende Ausgabe erhalten:

    The value in cell A1 is: Rank
  3. Daten aus mehreren Zellen lesen

    Jetzt wissen wir, wie wir Daten aus einer bestimmten Zelle lesen können. Was wäre, wenn wir alle Zellwerte in einer bestimmten Zeile des Arbeitsblatts ausdrucken wollten?

    Dazu kannst du eine einfache "for-Schleife" schreiben, die alle Werte in einer bestimmten Zeile durchläuft:

    values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)]
    print(values)

    Der obige Code gibt alle Werte in der ersten Zeile aus:

    ['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']

    Als Nächstes wollen wir versuchen, mehrere Zeilen in einer bestimmten Spalte auszudrucken.

    Wir werden eine for-Schleife erstellen, um die ersten zehn Zeilen in der Spalte "Name" als Liste darzustellen. Wir sollten die Namen erhalten, die in dem roten Kasten unten hervorgehoben sind:

    Videospiele Namen Spalte

    data=[ws.cell(row=i,column=2).value for i in range(2,12)]
    print(data)

    Der obige Code erzeugt die folgende Ausgabe:

    ['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']

    Zum Schluss drucken wir die ersten zehn Zeilen in einem Bereich von Spalten in der Kalkulationstabelle aus:

    # reading data from a range of cells (from column 1 to 6)
    
    my_list = list()
    
    for value in ws.iter_rows(
        min_row=1, max_row=11, min_col=1, max_col=6, 
        values_only=True):
        my_list.append(value)
        
    for ele1,ele2,ele3,ele4,ele5,ele6 in my_list:
        (print ("{:<8}{:<35}{:<10}
                 {:<10}{:<15}{:<15}".format(ele1,ele2,ele3,ele4,ele5,ele6)))

    Nachdem du den obigen Code ausgeführt hast, sollten die ersten zehn Datenzeilen in den ersten sechs Spalten angezeigt werden:

    Videospiele in der Rangliste

Mit Openpyxl in Excel-Dateien schreiben

Da wir nun wissen, wie wir auf Excel-Dateien zugreifen und sie lesen können, wollen wir lernen, wie wir mit Openpyxl in sie schreiben können.

  1. Schreiben in eine Zelle

    Es gibt zwei Möglichkeiten, wie du mit Openpyxl in eine Datei schreiben kannst.

    Erstens kannst du die Zelle direkt über ihre Taste aufrufen:

    ws['K1'] = 'Sum of Sales'

    Eine Alternative ist, die Zeilen- und Spaltenposition der Zelle anzugeben, in die du schreiben möchtest:

    ws.cell(row=1, column=11, value = 'Sum of Sales')

    Jedes Mal, wenn du mit Openpyxl in eine Excel-Datei schreibst, musst du deine Änderungen mit der folgenden Codezeile speichern, sonst werden sie nicht in das Arbeitsblatt übernommen:

    wb.save('videogamesales.xlsx')

    Wenn deine Arbeitsmappe geöffnet ist, wenn du versuchst, sie zu speichern, bekommst du den folgenden Berechtigungsfehler:

    Erlaubnisfehler

    Stelle sicher, dass du die Excel-Datei schließt, bevor du deine Änderungen speicherst. Du kannst es dann erneut öffnen, um sicherzustellen, dass die Änderung in deinem Arbeitsblatt übernommen wird:

    Videospieldaten mit neuer Spalte

    Beachte, dass in Zelle K1 eine neue Spalte mit dem Namen "Summe der Verkäufe" erstellt wurde.

  2. Eine neue Spalte erstellen

    Addieren wir nun die Summe der Verkäufe in jeder Region und schreiben sie in Spalte K.

    Wir tun dies für die Verkaufsdaten in der ersten Zeile:

    row_position = 2
    col_position = 7
    
    total_sales = ((ws.cell(row=row_position, column=col_position).value)+
                   (ws.cell(row=row_position, column=col_position+1).value)+
                   (ws.cell(row=row_position, column=col_position+2).value)+
                   (ws.cell(row=row_position, column=col_position+3).value))
    
    ws.cell(row=2,column=11).value=total_sales
    wb.save('videogamesales.xlsx')

    Beachte, dass der Gesamtumsatz in Zelle K2 für das erste Spiel im Arbeitsblatt berechnet wurde:

    Summe der Verkäufe in Zelle K2

    Auf ähnliche Weise erstellen wir eine for-Schleife, um die Verkaufswerte in jeder Zeile zu summieren:

    row_position = 1
    
    for i in range(1, ws.max_row):
    
        row_position += 1
        NA_Sales = ws.cell(row=row_position, column=7).value
        EU_Sales = ws.cell(row=row_position, column=8).value
        JP_Sales = ws.cell(row=row_position, column=9).value
        Other_Sales = ws.cell(row=row_position, column=10).value
    
        total_sales = (NA_Sales + EU_Sales + JP_Sales + Other_Sales)
        ws.cell(row=row_position, column=11).value = total_sales
    
    wb.save("videogamesales.xlsx")

    Deine Excel-Datei sollte jetzt eine neue Spalte enthalten, die die Gesamtverkäufe von Videospielen in allen Regionen angibt:

    Summe der Verkäufe berechnet

  3. Neue Zeilen anhängen

    Um eine neue Zeile an die Arbeitsmappe anzuhängen, erstellst du einfach ein Tupel mit den Werten, die du einfügen möchtest, und schreibst es in das Blatt:

    new_row = (1,'The Legend of Zelda',1986,'Action','Nintendo',3.74,0.93,1.69,0.14,6.51,6.5)
    
    ws.append(new_row)
        
    wb.save('videogamesales.xlsx')

    Du kannst bestätigen, dass diese Daten angefügt wurden, indem du die letzte Zeile in der Arbeitsmappe ausdruckst:

    values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)]
    print(values)

    Es wird die folgende Ausgabe erzeugt:

    [1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]
  4. Löschen von Zeilen

    Um die neue Zeile zu löschen, die wir gerade erstellt haben, kannst du die folgende Codezeile ausführen:

    ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete
    
    wb.save('videogamesales.xlsx')

    Das erste Argument in der Funktion delete_rows() ist die Zeilennummer, die du löschen willst. Das zweite Argument gibt die Anzahl der Zeilen an, die gelöscht werden sollen.

Excel-Formeln mit Openpyxl erstellen

Du kannst Openpyxl verwenden, um Formeln zu schreiben, genau wie du es in Excel tun würdest. Hier sind einige Beispiele für grundlegende Funktionen, die du mit Openpyxl erstellen kannst:

  1. DURCHSCHNITT

    Legen wir eine neue Spalte mit dem Namen "Durchschnittlicher Umsatz" an, um den durchschnittlichen Gesamtumsatz mit Videospielen in allen Märkten zu berechnen:

    ws['P1'] = 'Average Sales'
    ws['P2'] = '= AVERAGE(K2:K16220)'
    
    wb.save('videogamesales.xlsx')

    Der durchschnittliche Umsatz über alle Märkte hinweg beträgt etwa 0,19. Dieser wird in Zelle P2 deines Arbeitsblatts gedruckt.

  2. COUNTA

    Die Funktion "COUNTA" in Excel zählt die Zellen, die innerhalb eines bestimmten Bereichs ausgefüllt sind. Verwenden wir sie, um die Anzahl der Datensätze zwischen E2 und E16220 zu finden:

    ws['Q1'] = "Number of Populated Cells" 
    ws['Q2'] = '=COUNTA(E2:E16220)'
    
    wb.save('videogamesales.xlsx')

    In diesem Bereich gibt es 16.219 Datensätze, die Informationen enthalten.

  3. COUNTIF

    COUNTIF ist eine häufig verwendete Excel-Funktion, die die Anzahl der Zellen zählt, die eine bestimmte Bedingung erfüllen. Benutzen wir sie, um die Anzahl der Spiele in diesem Datensatz mit dem Genre "Sport" zu zählen:

    ws['R1'] = 'Number of Rows with Sports Genre'
    ws['R2'] = '=COUNTIF(E2:E16220, "Sports")'
    
    wb.save('videogamesales.xlsx')

    Es gibt 2.296 Sportspiele in dem Datensatz.

  4. SUMIF

    Jetzt wollen wir mit der Funktion SUMIF die Summe der Umsätze ermitteln, die durch Sportspiele erzielt wurden:

    ws['S1'] = 'Total Sports Sales'
    ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)'
     
    wb.save('videogamesales.xlsx')

    Die Gesamtzahl der durch Sportspiele erzielten Umsätze beträgt 454.

  5. DECKEN

    Die CEILING-Funktion in Excel rundet eine Zahl auf das nächste angegebene Vielfache auf. Mit dieser Funktion können wir den Gesamtumsatz der Sportspiele aufrunden:

    ws['T1'] = 'Rounded Sum of Sports Sales'
    ws['T2'] = '=CEILING(S2,25)'
    
    wb.save('videogamesales.xlsx')

    Wir haben den Gesamtumsatz der Sportspiele auf das nächste Vielfache von 25 gerundet, was ein Ergebnis von 475 ergibt.

    Die obigen Codeschnipsel sollten die folgende Ausgabe in deinem Excel-Blatt erzeugen (aus den Zellen P1 bis T2):

    Durchschnittliche Verkaufsreihe

    In unserem Spickzettel zu den Excel-Grundlagen erfährst du mehr über Excel-Formeln, Operatoren, mathematische Funktionen und bedingte Berechnungen.

Arbeiten mit Blättern in Openpyxl

Nachdem wir nun wissen, wie wir auf Arbeitsblätter zugreifen und in sie schreiben können, wollen wir lernen, wie wir sie mit Openpyxl bearbeiten, entfernen und duplizieren können.

  1. Namen der Blätter ändern

    Zuerst geben wir den Namen des aktiven Blatts aus, mit dem wir gerade arbeiten, indem wir das Attribut title von Openpyxl verwenden:

    print(ws.title)

    Die folgende Ausgabe wird gerendert:

    vgsales

    Jetzt benennen wir dieses Arbeitsblatt mit den folgenden Codezeilen um:

    ws.title ='Video Game Sales Data'
    
    wb.save('videogamesales.xlsx')

    Der Name deines aktiven Blatts sollte nun in "Verkaufsdaten für Videospiele" geändert werden.

  2. Ein neues Arbeitsblatt erstellen

    Führe die folgende Codezeile aus, um alle Arbeitsblätter in der Arbeitsmappe aufzulisten:

    print(wb.sheetnames)

    Du wirst ein Array sehen, das die Namen aller Arbeitsblätter in der Datei auflistet:

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

    Legen wir nun ein neues leeres Arbeitsblatt an:

    wb.create_sheet('Empty Sheet') # create an empty sheet
    print(wb.sheetnames) # print sheet names again
    
    wb.save('videogamesales.xlsx')

    Beachte, dass jetzt ein neues Blatt mit dem Namen "Leeres Blatt" erstellt worden ist:

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]
  3. Ein Arbeitsblatt löschen

    Um ein Arbeitsblatt mit Openpyxl zu löschen, verwendest du einfach das Attribut remove und druckst alle Blattnamen erneut aus, um zu bestätigen, dass das Blatt gelöscht wurde:

    wb.remove(wb['Empty Sheet'])
    print(wb.sheetnames)
    
    wb.save('videogamesales.xlsx')

    Beachte, dass das Arbeitsblatt "Leeres Blatt" nicht mehr verfügbar ist:

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
  4. Ein Arbeitsblatt duplizieren

    Zum Schluss führst du diese Codezeile aus, um eine Kopie eines bestehenden Arbeitsblatts zu erstellen:

    wb.copy_worksheet(wb['Video Game Sales Data'])
    wb.save('vgsales_2.xlsx')

    Wenn wir alle Blattnamen noch einmal ausdrucken, erhalten wir die folgende Ausgabe:

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']

Hinzufügen von Diagrammen zu einer Excel-Datei mit Openpyxl

Excel wird oft als das Tool schlechthin für die Erstellung von Visualisierungen und Zusammenfassungen von Datensätzen angesehen. In diesem Abschnitt lernen wir, wie man mit Openpyxl Diagramme in Excel direkt aus Python erstellt.

  1. Balkendiagramm

    Erstellen wir zunächst ein einfaches Balkendiagramm, das die Gesamtverkäufe von Videospielen nach Genre anzeigt. Dazu verwenden wir das Arbeitsblatt "Gesamtumsatz nach Gattung":

    Arbeitsblatt für Balkendiagramm

    Dieses Arbeitsblatt enthält eine Pivot-Tabelle, in der die Summe der Verkäufe nach Genre aggregiert wurde, wie im Screenshot oben zu sehen ist.

    Bevor wir mit der Erstellung des Balkendiagramms beginnen, greifen wir auf dieses Arbeitsblatt zu:

    ws = wb['Total Sales by Genre'] # access the required worksheet

    Jetzt müssen wir Openpyxl die Werte und Kategorien mitteilen, die wir darstellen möchten.

    Werte:

    Die Werte enthalten die "Summe der Verkäufe", die wir darstellen wollen. Wir müssen Openpyxl mitteilen, wo diese Daten in der Excel-Datei zu finden sind, indem wir den Bereich angeben, in dem deine Werte beginnen und enden.

    Mit vier Parametern in Openpyxl kannst du angeben, wo sich deine Werte befinden:

    • Min_column: Die minimale Spalte, die Daten enthält
    • Max_column: Die maximale Spalte, die Daten enthält
    • Min_row: Die kleinste Zeile, die Daten enthält
    • Max_row: Die maximale Zeile, die Daten enthält

    Hier ist ein Bild, das zeigt, wie du diese Parameter definieren kannst:

    Vier Parameter zur Definition von Werten

    Beachte, dass die kleinste Zeile die erste Zeile ist und nicht die zweite. Das liegt daran, dass Openpyxl mit der Zählung ab der Zeile beginnt, in der ein numerischer Wert steht.

    # Values for plotting
    
    from openpyxl.chart import Reference
    
    values = Reference(ws,         # worksheet object   
                       min_col=2,  # minimum column where your values begin
                       max_col=2,  # maximum column where your values end
                       min_row=1,  # minimum row you’d like to plot from
                       max_row=13) # maximum row you’d like to plot from

    Kategorien

    Jetzt müssen wir die gleichen Parameter für die Kategorien in unserem Balkendiagramm definieren:

    Parameter für Balkendiagramm-Kategorien

    Hier ist der Code, den du verwenden kannst, um Parameter für die Kategorien des Diagramms festzulegen:

    cats = Reference(ws, 
                     min_col=1, 
                     max_col=1, 
                     min_row=2, 
                     max_row=13)

    Erstellen des Balkendiagramms

    Jetzt können wir das Balkendiagrammobjekt erstellen und unsere Werte und Kategorien mit den folgenden Codezeilen einfügen:

    from openpyxl.chart import BarChart
    
    chart = BarChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)

    Chart-Titel festlegen

    Schließlich kannst du die Diagrammtitel festlegen und Openpyxl mitteilen, wo du sie in der Excel-Tabelle erstellen möchtest:

    # set the title of the chart
    chart.title = "Total Sales"
    
    # set the title of the x-axis
    chart.x_axis.title = "Genre"
    
    # set the title of the y-axis
    chart.y_axis.title = "Total Sales by Genre"
    
    # the top-left corner of the chart
    # is anchored to cell F2 .
    ws.add_chart(chart,"D2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Du kannst dann die Excel-Datei öffnen und zum Arbeitsblatt "Gesamtumsatz nach Gattung" navigieren. Du solltest ein Diagramm sehen, das wie folgt aussieht:

    Gesamtumsatz nach Genre

  2. Gruppiertes Balkendiagramm

    Jetzt wollen wir ein gruppiertes Balkendiagramm erstellen, das die Gesamtverkäufe nach Genre und Region anzeigt. Die Daten für diese Tabelle findest du im Arbeitsblatt "Aufschlüsselung der Verkäufe nach Genre":

    Tabelle für gruppiertes Balkendiagramm

    Ähnlich wie bei der Erstellung des Balkendiagramms müssen wir den Bereich für Werte und Kategorien festlegen:

    Definition von Valen und Kategorien für gruppierte Balkendiagramme

    Wir können nun auf das Arbeitsblatt zugreifen und dies im Code niederschreiben:

    ### Creating a Grouped Bar Chart with Openpyxl
    
    ws = wb['Breakdown of Sales by Genre'] # access worksheet
    
    # Data for plotting
    
    values = Reference(ws,
                       min_col=2,
                       max_col=5,
                       min_row=1,
                       max_row=13)
    
    cats = Reference(ws, min_col=1, 
                         max_col=1, 
                         min_row=2, 
                         max_row=13)

    Jetzt können wir das Balkendiagrammobjekt erstellen, die Werte und Kategorien darin einfügen und die Titelparameter genau wie zuvor festlegen:

    # Create object of BarChart class
    
    chart = BarChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)
    
    # set the title of the chart
    chart.title = "Sales Breakdown"
    
    # set the title of the x-axis
    chart.x_axis.title = "Genre"
    
    # set the title of the y-axis
    chart.y_axis.title = "Breakdown of Sales by Genre"
    
    # the top-left corner of the chart is anchored to cell H2.
    ws.add_chart(chart,"H2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Sobald du das Arbeitsblatt öffnest, sollte ein gruppiertes Balkendiagramm erscheinen, das wie folgt aussieht:

    Gruppierte Balkendiagrammausgabe

  3. Gestapeltes Liniendiagramm

    Zum Schluss erstellen wir ein gestapeltes Liniendiagramm mit den Daten auf der Registerkarte "Aufschlüsselung der Verkäufe nach Jahren". Dieses Arbeitsblatt enthält die Verkaufszahlen von Videospielen, aufgeschlüsselt nach Jahr und Region:

    Summe der Verkaufsdaten

    Legen wir den Bereich für die Werte und Kategorien dieses Diagramms fest:

    Werte und Kategorien für gestapeltes Liniendiagramm

    Jetzt können wir diese Mindest- und Höchstwerte in den Code schreiben:

    # Data for plotting
    
    values = Reference(ws,
                       min_col=2,
                       max_col=6,
                       min_row=1,
                       max_row=40)
    
    cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=40)

    Zum Schluss erstellen wir das Liniendiagrammobjekt und legen den Titel, die x-Achse und die y-Achse des Diagramms fest:

    # Create object of LineChart class
    
    from openpyxl.chart import LineChart
    
    chart = LineChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)
    
    # set the title of the chart
    chart.title = "Total Sales"
    
    # set the title of the x-axis
    chart.x_axis.title = "Year"
    
    # set the title of the y-axis
    chart.y_axis.title = "Total Sales by Year"
    
    # the top-left corner of the chart is anchored to cell H2 
    ws.add_chart(chart,"H2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Auf deinem Arbeitsblatt sollte ein gestapeltes Liniendiagramm erscheinen, das wie folgt aussieht:

    Gestapeltes Liniendiagramm

Zellen mit Openpyxl formatieren

Mit Openpyxl kannst du Zellen in Excel-Arbeitsmappen formatieren. Du kannst deine Tabellenkalkulation verschönern, indem du Schriftgrößen, Hintergrundfarben und Zellränder direkt in Python änderst.

Hier sind einige Möglichkeiten, wie du dein Python-Excel-Tabellenblatt mit Openpyxl anpassen kannst:

  1. Ändern von Schriftgrößen und -stilen

    Vergrößern wir die Schriftgröße in Zelle A1 und fetten den Text mit den folgenden Codezeilen:

    from openpyxl.styles import Font
    
    ws = wb['Video Game Sales Data']
    ws['A1'].font = Font(bold=True, size=12)
    
    wb.save('videogamesales.xlsx')

    Beachte, dass der Text in Zelle A1 jetzt etwas größer und fett gedruckt ist:

    Daten in großer Schrift

    Was wäre nun, wenn wir die Schriftgröße und den Stil für alle Spaltenüberschriften in der ersten Zeile ändern wollten?

    Dazu können wir denselben Code verwenden und einfach eine for-Schleife erstellen, die alle Spalten der ersten Zeile durchläuft:

    for cell in ws["1:1"]: 
        cell.font = Font(bold=True, size=12)
    
    wb.save('videogamesales.xlsx')

    Wenn wir durch ["1:1"] iterieren, teilen wir Openpyxl die Start- und Endzeilen mit, die durchlaufen werden sollen. Wenn wir zum Beispiel eine Schleife durch die ersten zehn Zeilen ziehen wollen, müssen wir stattdessen ["1:10"] angeben.

    Du kannst die Excel-Tabelle öffnen, um zu überprüfen, ob die Änderungen übernommen wurden:

    kleinere Schriftdaten

  2. Schriftfarbe ändern

    Du kannst die Schriftfarben in Openpyxl mithilfe von Hex-Codes ändern:

    from openpyxl.styles import colors
    
    ws['A1'].font = Font(color = 'FF0000',bold=True, size=12) ## red
    ws['A2'].font = Font(color = '0000FF') ## blue
    
    wb.save('videogamesales.xlsx')

    Nachdem du die Arbeitsmappe gespeichert und wieder geöffnet hast, sollten sich die Schriftfarben in den Zellen A1 und A2 geändert haben:

    change font color

  3. Ändern der Zellenhintergrundfarbe

    Um die Hintergrundfarbe einer Zelle zu ändern, kannst du das PatternFill-Modul von Openpyxl verwenden:

    ## changing background color of a cell
    
    from openpyxl.styles import PatternFill
    
    ws["A1"].fill = PatternFill('solid', start_color="38e3ff") # light blue background color
    
    wb.save('videogamesales.xlsx')

    Die folgende Änderung sollte sich in deinem Arbeitsblatt widerspiegeln:

    Zelle Farbwechsel

  4. Hinzufügen von Zellrändern

    Um mit Openpyxl einen Zellrand hinzuzufügen, führst du die folgenden Codezeilen aus:

    ## cell borders
    
    from openpyxl.styles import Border, Side
    
    my_border = Side(border_style="thin", color="000000")
    
    ws["A1"].border = Border(
        top=my_border, left=my_border, right=my_border, bottom=my_border
    )
    
    wb.save("videogamesales.xlsx")

    Du solltest einen Rahmen sehen, der so aussieht, dass er sich über die Zelle A1 erstreckt:

    Zellenfarbe ändern

  5. Bedingte Formatierung

    Unter bedingter Formatierung versteht man das Hervorheben bestimmter Werte in einer Excel-Datei auf der Grundlage einer Reihe von Bedingungen. Sie ermöglicht es den Nutzern, Daten einfacher zu visualisieren und die Werte in ihren Arbeitsblättern besser zu verstehen.

    Verwenden wir Openpyxl, um alle Verkaufswerte von Videospielen, die größer oder gleich 8 sind, grün zu markieren:

    from openpyxl.formatting.rule import CellIsRule
    
    
    fill = PatternFill(
        start_color='90EE90',
        end_color='90EE90',fill_type='solid') # specify background color
    
    ws.conditional_formatting.add(
        'G2:K16594', CellIsRule(operator='greaterThan', formula=[8], fill=fill)) # include formatting rule
    
    wb.save('videogamesales.xlsx')

    Im ersten Codeblock geben wir die Hintergrundfarbe der Zellen an, die wir formatieren möchten. In diesem Fall ist die Farbe hellgrün.

    Dann erstellen wir eine bedingte Formatierungsregel, die besagt, dass jeder Wert, der größer als 8 ist, mit der von uns festgelegten Füllfarbe hervorgehoben werden soll. Wir geben auch den Bereich der Zellen an, auf den wir diese Bedingung anwenden möchten.

    Nachdem du den obigen Code ausgeführt hast, sollten alle Verkaufswerte über 8 wie folgt hervorgehoben werden:

    Bedingt formatiert

Arbeiten mit Excel in Python: Nächste Schritte

Wir haben in diesem Lernprogramm viel behandelt, angefangen bei den Grundlagen der Openpyxl-Bibliothek bis hin zu fortgeschrittenen Operationen wie dem Erstellen von Diagrammen und dem Formatieren von Tabellen in Python.

Für sich genommen sind Python und Excel leistungsstarke Werkzeuge zur Datenverarbeitung, mit denen du Vorhersagemodelle erstellen, analytische Berichte verfassen und mathematische Berechnungen durchführen kannst.

Der größte Vorteil von Excel ist, dass es von fast jedem benutzt wird. Von technisch nicht versierten Interessenvertretern bis hin zu Einsteigern verstehen Mitarbeiter aller Ebenen Berichte, die in einer Excel-Tabelle dargestellt werden. 

Python hingegen wird verwendet, um große Datenmengen zu analysieren und Modelle zu erstellen. Es kann Teams dabei helfen, mühsame Aufgaben zu automatisieren und die organisatorische Effizienz zu verbessern.

Wenn Excel und Python zusammen verwendet werden, können die Arbeitsabläufe eines Unternehmens um Stunden verkürzt werden, ohne dass die Benutzeroberfläche, mit der alle Mitarbeiter vertraut sind, verändert werden muss.

Jetzt, da du weißt, wie Openpyxl für die Arbeit mit Excel-Tabellen verwendet werden kann, findest du hier einige Möglichkeiten, wie du dieses neu erworbene Wissen nutzen kannst, um deine bestehenden Arbeitsabläufe zu verbessern:

  1. Übung an größeren Datensätzen

    Der Datensatz, den wir oben verwendet haben, hat nur etwa 16.000 Zeilen, während Openpyxl mit den optimierten Modi der Bibliothek viel größere Mengen verarbeiten kann. Wenn es dein Ziel ist, große Excel-Arbeitsmappen schnell zu bearbeiten, kannst du mit Openpyxl im optimierten Lese- und Schreibmodus üben.
  2. Nimm einen Online-Kurs

    Wir haben zwar die Grundlagen der Arbeit mit Excel in Python behandelt, aber es gibt viele Konzepte, die in diesem Kurs nicht behandelt werden konnten. Dazu gehören das Arbeiten mit mehreren Excel-Tabellen, das Erstellen von Pivot-Tabellen und das Zusammenfassen großer Datenmengen.

    Wir empfehlen, den Kurs Python für Tabellenkalkulationsanwender von Datacamp zu besuchen, um einige dieser Wissenslücken zu schließen.
  3. Lerne, Excel-Workflows in Python zu automatisieren

     Wie bereits erwähnt, liegt der größte Vorteil von Bibliotheken wie Openpyxl in der Möglichkeit, mit mehreren Arbeitsmappen gleichzeitig zu arbeiten und Arbeitsabläufe so zu planen, dass sie nicht mehrmals wiederholt werden müssen.

    Du kannst versuchen, eine einfache Funktion zu erstellen, die mehrere Arbeitsmappen auf einmal durchläuft und einige der in diesem Lehrgang behandelten Operationen ausführt.
  4. Lerne über verschiedene Bibliotheken

    Openpyxl ist zwar eine Möglichkeit, Excel-Dateien mit Python zu bearbeiten, aber es gibt auch Alternativen wie die Pandas-Bibliothek, mit der du Excel-Inhalte schneller verarbeiten kannst.

    Wenn Zellformatierung oder die direkte Arbeit mit Excel-Formeln keine Voraussetzung für dich ist, ist Pandas vielleicht sogar einfacher zu erlernen, weil es eine bessere Dokumentation und Unterstützung durch die Community hat.

    Du kannst unseren Kurs Datenmanipulation mit Pandas besuchen, um die Bibliothek noch heute kennenzulernen. 

Lass dich für deine Traumrolle als Data Scientist zertifizieren

Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

Hol Dir Deine Zertifizierung
Timeline mobile.png
Themen

Erfahre mehr über Python und Tabellenkalkulationen

Zertifizierung verfügbar

Course

Python für Tabellenkalkulationsanwender

4 hr
26.9K
Nutze dein Wissen über gängige Tabellenkalkulationsfunktionen und -techniken, um Python zu erkunden!
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow