432 Stimmen

Verwendung von Pandas zum pd.read_excel() für mehrere Arbeitsblätter desselben Arbeitsbuchs

Ich habe eine große Tabellendatei (.xlsx), die ich mit Python Pandas verarbeite. Es kommt vor, dass ich Daten aus zwei Registerkarten (Blättern) in dieser großen Datei benötige. Eine der Registerkarten enthält eine Menge Daten und die andere nur ein paar einzelne Zellen.

Wenn ich pd.read_excel() für irgendein Arbeitsblatt verwende, scheint es mir, als ob die gesamte Datei geladen wird (nicht nur das Arbeitsblatt, das mich interessiert). Wenn ich die Methode zweimal verwende (einmal für jedes Blatt), muss ich praktisch zweimal das gesamte Arbeitsbuch einlesen (obwohl wir nur das angegebene Blatt verwenden).

Wie lade ich nur bestimmte Blätter mit pd.read_excel()?

2voto

citynorman Punkte 4182

Ja, leider wird es immer die gesamte Datei laden. Wenn Sie dies wiederholt tun, ist es wahrscheinlich am besten, die Blätter in separate CSVs zu extrahieren und dann separat zu laden. Sie können diesen Prozess mit d6tstack automatisieren, das auch zusätzliche Funktionen wie die Überprüfung, ob alle Spalten in allen Blättern oder mehreren Excel-Dateien gleich sind, hinzufügt.

import d6tstack
c = d6tstack.convert_xls.XLStoCSVMultiSheet('multisheet.xlsx')
c.convert_all() # ['multisheet-Sheet1.csv','multisheet-Sheet2.csv']

Siehe d6tstack Excel-Beispiele

2voto

Nikita Agarwala Punkte 92

Wenn Sie die Excel-Datei im selben Ordner wie Ihr Python-Programm gespeichert haben (relative Pfade), müssen Sie nur die Blattnummer zusammen mit dem Dateinamen angeben.

Beispiel:

 data = pd.read_excel("wt_vs_ht.xlsx", "Blatt2")
 print(data)
 x = data.Height
 y = data.Weight
 plt.plot(x,y,'x')
 plt.show()

1voto

Aashutosh Kumar Punkte 403

Einzelseite aus Excel-Datei mit read_excel lesen

df = pd.read_excel(config_file, sheet_name = 'euro-währungskurse')

Mehrere Seiten aus Excel-Datei lesen

excel_df    = pd.read_excel(self.excel_file, sheet_name=[0, 1, 2])          # Liest die 1., 2. und 3. Seite, gibt ein Dictionary mit den Schlüsselnummern 0,1,2 und den entsprechenden Werttabellendaten zurück
# excel_df  = pd.read_excel(self.excel_file, sheet_name=['blattA', 'blattB', 'blattC'])
# excel_df  = pd.read_excel(self.excel_file, sheet_name=None)       # Alle Seiten lesen
blatt1_df   = excel_df[0]
blatt2_df   = excel_df[1]
blatt3_df   = excel_df[2]

0voto

imvickykumar999 Punkte 19

Df wird eine Liste sein, die jedes Blatt als DataFrame in jedem Index enthält.

import pandas as pd

deine_datei = 'deine_datei.xlsx'
sh = pd.read_excel(deine_datei, sheet_name=None)

name = list(sh.keys())
df = []

for i in range(len(name)):
  df.append(pd.read_excel(deine_datei, name[i]))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X