Ich habe eine große Tabellenkalkulationsdatei (.xlsx), die ich mit Python-Pandas verarbeite. Es kommt vor, dass ich Daten von zwei Registerkarten in dieser großen Datei benötige. Eine der Registerkarten enthält eine Menge Daten und die andere enthält nur wenige quadratische Zellen.
Wenn ich pd.read_excel () in einem Arbeitsblatt verwende, sieht es für mich so aus, als ob die gesamte Datei geladen ist (nicht nur das Arbeitsblatt, an dem ich interessiert bin). Wenn ich die Methode also zweimal verwende (einmal für jedes Blatt), muss ich effektiv die gesamte Arbeitsmappe zweimal einlesen lassen (obwohl wir nur das angegebene Blatt verwenden).
Benutze ich es falsch oder ist es nur auf diese Weise begrenzt?
Danke dir!
Antworten:
Versuchen Sie
pd.ExcelFile
:Wie von @HaPsantran festgestellt, wird die gesamte Excel-Datei während des
ExcelFile()
Aufrufs eingelesen (es scheint keinen Weg zu geben, dies zu umgehen ). Dies erspart Ihnen lediglich, jedes Mal, wenn Sie auf ein neues Blatt zugreifen möchten, dieselbe Datei lesen zu müssen.Beachten Sie, dass das
sheet_name
Argument topd.read_excel()
der Name des Blattes (wie oben), eine Ganzzahl, die die Blattnummer angibt (z. B. 0, 1 usw.), eine Liste von Blattnamen oder -indizes oder sein kannNone
. Wenn eine Liste bereitgestellt wird, wird ein Wörterbuch zurückgegeben, in dem die Schlüssel die Blattnamen / -indizes und die Werte die Datenrahmen sind. Standardmäßig wird einfach das erste Blatt (dhsheet_name=0
) zurückgegeben.Wenn
None
angegeben, werden alle Blätter als{sheet_name:dataframe}
Wörterbuch zurückgegeben.quelle
sheet_name
und nichtsheetname
. Ich wusste nicht, dass dies der veraltete Teil war, da er immer noch an der Methode read_excel arbeitete, aber nicht an der Analysemethode.Es gibt 3 Möglichkeiten:
Lesen Sie alle Blätter direkt in ein geordnetes Wörterbuch.
Vielen Dank an @ihightower für den Hinweis und @toto_tico für den Hinweis auf das Versionsproblem.
Lesen Sie das erste Blatt direkt in den Datenrahmen
Lesen Sie die Excel-Datei und erhalten Sie eine Liste der Blätter. Wählen Sie dann die Blätter aus und laden Sie sie.
Lesen Sie alle Blätter und speichern Sie sie in einem Wörterbuch. Gleich wie zuerst, aber expliziter.
Update: Vielen Dank an @toto_tico für den Hinweis auf das Versionsproblem.
quelle
df_sheet_map = pd.read_excel(file_fullpath, sheetname=None)
, ist , dass die Blätter automatisch in einem Wörterbuch enthalten sind. Und auf das Blatt als Datenrahmen wiedf_sheet_map['house']
Sie können auch den Index für das Blatt verwenden:
gibt das erste Arbeitsblatt. für das zweite Arbeitsblatt:
quelle
Sie können auch den Blattnamen als Parameter angeben:
lädt nur das Blatt hoch
"sheet_name"
.quelle
Standardmäßig lesen Sie das erste Blatt der Arbeitsmappe.
Lesen Sie das spezifische Blatt der Arbeitsmappe und
Lesen Sie alle Arbeitsblätter von Excel bis Pandas Datenrahmen als Typ von OrderedDict bedeutet verschachtelte Datenrahmen, alle Arbeitsblätter als Datenrahmen innerhalb von Datenrahmen gesammelt und sein Typ ist OrderedDict.
quelle
Ja, leider wird immer die vollständige Datei geladen. Wenn Sie dies wiederholt tun, extrahieren Sie die Blätter wahrscheinlich am besten in separate CSVs und laden Sie sie dann separat. Sie können diesen Prozess mit d6tstack automatisieren, wodurch zusätzliche Funktionen hinzugefügt werden , z. B. die Überprüfung, ob alle Spalten für alle Blätter oder mehrere Excel-Dateien gleich sind.
Siehe Beispiele für d6tstack Excel
quelle
Wenn Sie die Excel-Datei im selben Ordner wie Ihr Python-Programm (Relative Addressing) gespeichert haben, müssen Sie nur die Blattnummer und den Dateinamen angeben. Syntax = pd.read_excel (Dateiname, SheetNo) Beispiel:
quelle