Course
Python Excel Tutorial: Der endgültige Leitfaden
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
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:
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:
-
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.
-
Daten aus einer Zelle lesen
Hier ist ein Screenshot des aktiven Blattes, mit dem wir in diesem Abschnitt arbeiten werden:
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
-
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:
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:
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.
-
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:
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:
Beachte, dass in Zelle K1 eine neue Spalte mit dem Namen "Summe der Verkäufe" erstellt wurde.
-
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:
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:
-
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]
-
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:
-
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.
-
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.
-
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.
-
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.
-
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):
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.
-
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.
-
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’]
-
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']
-
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.
-
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":
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:
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:
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:
-
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":
Ähnlich wie bei der Erstellung des Balkendiagramms müssen wir den Bereich für Werte und Kategorien festlegen:
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:
-
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:
Legen wir den Bereich für die Werte und Kategorien dieses Diagramms fest:
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:
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:
-
Ä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:
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:
-
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:
-
Ä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:
-
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:
-
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:
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:
-
Ü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. -
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. -
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. -
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.
Erfahre mehr über Python und Tabellenkalkulationen
Course
Pandas Joins für Tabellenkalkulationsbenutzer
Course