Nach dem letzten Teil hast du hoffentlich so einige Excel Dateien mit Pandas geöffnet.
Dabei hattest du sicher Probleme mit Excel Dateien mit mehreren Datenblättern, richtig?
Das werden wir jetzt direkt beheben.
Excel Datei einlesen
Pandas bringt neben read_excel auch noch eine Klasse ExcelFile mit, mit der du Excel Dateien einlesen kannst.
Der Vorteil ist, dass mit ExcelFile erstmal nur die Metadaten der Datei gelesen werden.
Also zum Beispiel, welche Arbeitsblätter enthalten sind.
Die Datei selbst wird aber noch nicht eingelesen.
Besonders, wenn du nur bestimmte Arbeitsblätter brauchst, ist das hilfreich.
Wieso solltest du Daten in deinen Speicher laden, die du gar nicht benötigst und sowieso gleich wieder verwirfst?
Öffne deine Datei also erst einmal mit der Klasse ExcelFile:
data_file = pandas.ExcelFile('/content/drive/MyDrive/california_housing_test_multisheet.xlsx')
Welche Arbeitsblätter gibt es?
Mit dem Attribut sheet_names kannst du dir dann eine Liste der enthaltenen Arbeitsblätter ausgeben lassen:
data_file.sheet_names
Du bekommst also eine Liste mit den Namen der Arbeitsblätter, die in deiner Excel Datei enthalten sind.
Wichtig ist, dass zu dem Zeitpunkt die Daten selbst noch nicht eingelesen wurden!
Du erhältst erstmal nur Informationen über die Excel Datei.
Einzelne Arbeitsblätter einlesen
Um jetzt die Arbeitsblätter einzulesen, kannst du einfach die Funktion parse() benutzen.
„parse“ nimmt den Namen eines Arbeitsblatts entgegen und liest genau das Arbeitsblatt ein:
data_ort = data_file.parse(sheet_name='Ort')
In der Datei sind auch wieder nur die Daten, die du schon aus den vorherigen Videos kennst.
Ich habe sie lediglich auf mehrere Arbeitsblätter aufgeteilt und mit einem Index versehen, damit sie wieder zusammen gefunden werden können.
parse() ist eigentlich nur ein äquivalent zu der Funktion read_excel().
Dir stehen damit die gleichen Möglichkeiten zur Verfügung.
Also an Stelle der Code Zeile oben könntest du auch schreiben:
data_ort = pandas.read_excel('/content/drive/MyDrive/california_housing_test_multisheet.xlsx', sheet_name='Ort')
Da du die Datei mit dem Pfad aber bereits in der Hand hast … wieso dann nochmal den ganzen Pfad eintippen? Trotzdem interessant zu wissen:
Alle Funktionen, die dir read_excel() liefert, stehen dir auch mit parse() zur Verfügung.
Den Index festlegen
Wenn du dir jetzt die Daten ausgeben lässt, wird dir auffallen, dass der Index doppelt ist.
Du hast einmal die Spalte „Index“ aus dem Arbeitsblatt, aber zusätzlich noch einen Index, der dir automatisch von Pandas generiert wird.
Vor allem, weil dieselben Daten drin stehen, ist das wirklich überflüssig.
Aber selbst wenn nicht:
Wenn du Daten hast, die über mehrere Arbeitsblätter oder sogar über mehrere Excel Dateien verteilt sind, haben sie in der Regel eine gemeinsame Indexspalte.
Eine Spalte, über die du die Daten zusammen ordnen kannst.
Eine Personalnummer, eine Kontonummer oder sonst irgendeine Form eindeutiger Identifizierung.
Den zusätzlichen Index brauchst du nicht.
Und damit er gar nicht erst generiert wird, kannst du Pandas direkt beim Laden der Daten mitteilen, dass du bereits einen Index hast, den du benutzen möchtest.
Dafür steht die der Parameter index_col zur Verfügung:
data_ort = data_file.parse(sheet_name='Ort', index_col='Index')
Mit index_col teilst du Pandas mit, dass du bereits einen Index hast und in welcher Spalte er zu finden ist.
Pandas nutzt diese Spalte dann beim Einlesen direkt als Index.
Es wird also nichts zusätzlich erzeugt.
Wichtig wird das später, wenn wir zusammengehörige Daten auch zusammen bringen wollen.
Zusammenfassung
Über die Klasse ExcelFile kannst du also erstmal herausfinden, welche Arbeitsblätter in deiner Datei existieren.
Damit lassen sich dann über parse() oder read_excel() in Verbindung mit dem Parameter sheet_name gezielt die Daten einlesen, mit denen du arbeiten willst.
Zum Schluss hast du noch den Parameter index_col kennengelernt, mit dem du Pandas mitteilen kannst, dass es keinen Index für dich erzeugen muss, weil du bereits einen hast.
Im nächsten Video zeige ich dir, wie du die Daten jetzt auch wieder zusammensetzen kannst.
Immerhin willst du Filterungen und Auswertungen ja nicht in jedem Arbeitsblatt einzeln vornehmen und dann wieder manuell zusammen setzen, oder?
Anfang verpasst? Hier gehts zum vollen Kurs:
Ingo Janssen ist ein Softwareentwickler mit über 10 Jahren Erfahrung in der Leitung seines eigenen Unternehmens.
Er studierte Wirtschaftsinformatik an der TH Deggendorf und hat Softwareentwicklung an der FOM Hochschule in München unterrichtet.
Ingo hat mit einer Vielzahl von Unternehmen zusammengearbeitet, von kleinen und mittelständischen Unternehmen bis hin zu MDAX- und DAX-gelisteten Unternehmen.
Ingo ist leidenschaftlich daran interessiert, sein Wissen und seine Expertise mit anderen zu teilen. Aus diesem Grund betreibt er einen YouTube-Kanal mit Programmier-Tutorials und eine Discord-Community, in der Entwickler miteinander in Kontakt treten und voneinander lernen können.
Sie können Ingo auch auf LinkedIn, Xing und Gulp finden, wo er Updates über seine Arbeit teilt und Einblicke in die Tech-Branche gibt.
YouTube | Discord | LinkedIn | Xing | Gulp Profile