Es gibt verschiedene Optionen, je nach Anwendungsfall:
-
Wenn man die Blattnamen nicht kennt.
-
Wenn der Blattname nicht relevant ist.
-
Wenn man den Namen der Blätter kennt.
Im Folgenden werden wir uns jede der Optionen genauer ansehen.
Siehe den Abschnitt Hinweise für Informationen wie das Herausfinden der Blattnamen.
Option 1
Wenn man die Blattnamen nicht kennt
# Alle Blätter in Ihrer Datei lesen
df = pd.read_excel('DATEINAME.xlsx', sheet_name=None)
# Gibt alle Blattnamen in einem geordneten Wörterbuch aus
print(df.keys())
Dann kann man je nach dem gewünschten Blatt jedes einzelne an ein spezifisches dataframe
übergeben, wie zum Beispiel
sheet1_df = pd.read_excel('DATEINAME.xlsx', sheet_name=BLATT1NAME)
sheet2_df = pd.read_excel('DATEINAME.xlsx', sheet_name=BLATT2NAME)
Option 2
Wenn der Name nicht relevant ist und es nur um die Position des Blattes geht. Angenommen, man möchte nur das erste Blatt
# Alle Blätter in Ihrer Datei lesen
df = pd.read_excel('DATEINAME.xlsx', sheet_name=None)
blatt1 = list(df.keys())[0]
Dann kann man je nach dem Blattnamen jedes einzelne an ein spezifisches dataframe
übergeben, wie zum Beispiel
sheet1_df = pd.read_excel('DATEINAME.xlsx', sheet_name=BLATT1NAME)
Option 3
Hier betrachten wir den Fall, dass man die Namen der Blätter kennt. Für die Beispiele nehmen wir an, dass es drei Blätter mit den Namen Blatt1
, Blatt2
und Blatt3
gibt. Der Inhalt in jedem sieht gleich aus und sieht so aus
0 1 2
0 85 January 2000
1 95 February 2001
2 105 March 2002
3 115 April 2003
4 125 May 2004
5 135 June 2005
Je nach den Zielen gibt es verschiedene Ansätze:
-
Alles in einem Dataframe speichern. Ein Ansatz wäre, die Blätter wie folgt zu verknüpfen
sheets = ['Blatt1', 'Blatt2', 'Blatt3']
df = pd.concat([pd.read_excel('DATEINAME.xlsx', sheet_name = sheet) for sheet in sheets], ignore_index = True)
[Ergebnis]:
0 1 2
0 85 January 2000
1 95 February 2001
2 105 March 2002
3 115 April 2003
4 125 May 2004
5 135 June 2005
6 85 January 2000
7 95 February 2001
8 105 March 2002
9 115 April 2003
10 125 May 2004
11 135 June 2005
12 85 January 2000
13 95 February 2001
14 105 March 2002
15 115 April 2003
16 125 May 2004
17 135 June 2005
Im Grunde funktioniert pandas.concat
so (Quelle):
-
Jedes Blatt in einem separaten Dataframe speichern (nennen wir sie df1
, df2
, ...)
sheets = ['Blatt1', 'Blatt2', 'Blatt3']
for i, sheet in enumerate(sheets):
globals()['df' + str(i + 1)] = pd.read_excel('DATEINAME.xlsx', sheet_name = sheet)
[Ergebnis]:
# df1
0 1 2
0 85 January 2000
1 95 February 2001
2 105 March 2002
3 115 April 2003
4 125 May 2004
5 135 June 2005
# df2
0 1 2
0 85 January 2000
1 95 February 2001
2 105 March 2002
3 115 April 2003
4 125 May 2004
5 135 June 2005
# df3
0 1 2
0 85 January 2000
1 95 February 2001
2 105 March 2002
3 115 April 2003
4 125 May 2004
5 135 June 2005
Hinweise:
-
Wenn man die Blattnamen wissen möchte, kann man die Klasse ExcelFile
wie folgt verwenden
blätter = pd.ExcelFile('DATEINAME.xlsx').sheet_names
[Ergebnis]: ['Blatt1', 'Blatt2', 'Blatt3']
-
In diesem Fall wird angenommen, dass die Datei DATEINAME.xlsx
im gleichen Verzeichnis wie das Skript liegt, das ausgeführt wird.
-
Wenn die Datei in einem Ordner des aktuellen Verzeichnisses namens Data liegt, könnte man r'./Data/DATEINAME.xlsx'
verwenden, um eine Variable wie Pfad
zu erstellen, wie folgt
path = r'./Data/Test.xlsx'
df = pd.read_excel(r'./Data/DATEINAME.xlsx', sheet_name=None)
-
Dies könnte eine relevante Lektüre sein.