Pandas df.iloc[] Funktion
iloc[]Es ist eine auf ganzzahligen Positionen basierende Indexierungsmethode in Pandas, mit der Daten über Zeilen- und Spaltennummern ausgewählt werden. Sie istloc[]anders,iloc[]vollständig auf der Position der Daten basiert (ganzzahliger Index beginnend bei 0), ohne die auf den Daten selbst festgelegten Labels zu berücksichtigen.
Wenn Sie Daten nach Position auswählen müssen oder Daten auswählen möchten, ohne die spezifischen Index-Labels zu kennen,iloc[]ist sie die beste Wahl. Ihre Arbeitsweise ist der Python-Listenindizierung sehr ähnlich, was sie für Python-Nutzer sehr intuitiv macht.
Grundlegende Syntax und Parameter
iloc[]Es ist der Indexer von DataFrame, aufgerufen über eckige Klammern[]Er akzeptiert nur Ganzzahlen, Ganzzahlenlisten, Ganzzahlen-Slices oder boolesche Arrays als Parameter.
Syntaxformat
# 选择单行(返回 Series) DataFrame.iloc[行号] # 选择多行(返回 DataFrame) DataFrame.iloc[[行号1, 行号2, ...]] # 使用切片选择连续行 DataFrame.iloc[起始行:结束行] # 选择行和列 DataFrame.iloc[行号, 列号] DataFrame.iloc[行切片, 列切片] DataFrame.iloc[行列表, 列列表]
Parameterbeschreibung
| Parameterposition | Parametertyp | Beschreibung |
|---|---|---|
| Erster Parameter (Zeilen) | Ganzzahl, Ganzzahlenliste, Ganzzahlen-Slice, boolesches Array | Wird zum Auswählen von Zeilen basierend auf der Position verwendet (beginnend bei 0). |
| Zweiter Parameter (Spalten) | Integer, Integer-Liste, Integer-Slice | Optional, wird zur Auswahl von Spalten verwendet, ebenfalls positionsbasiert. |
Beschreibung des Rückgabewerts
- Einzelnes Element: gibt einen Skalarwert zurück.
- Einzelne Zeile: gibt eine Series zurück.
- Mehrere Zeilen: gibt ein DataFrame zurück.
- Kombination aus Zeilen und Spalten: gibt abhängig vom Auswahlergebnis eine Series oder ein DataFrame zurück.
Beispiele
Lassen Sie uns umfassend meisterniloc[]seine Verwendung anhand zahlreicher Beispiele.
Beispiel 1: Grundlegende Verwendung – Zeilen auswählen
iloc[]Verwendet positionsbasierte Indexierung, sehr ähnlich zur Indexierung von Python-Listen.
Beispiel
# Beispiel-DataFrame erstellen
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [18, 19, 17, 18, 20],
'score': [85, 92, 78, 90, 88],
'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)
print("Ursprüngliches DataFrame:")
print(df)
print()
# Erste Zeile auswählen (Index 0)
print("Erste Zeile auswählen (Position 0):")
print(df.iloc[0])
print()
# Mehrere Zeilen auswählen
print("Zeilen 1, 3, 4 auswählen:")
print(df.iloc[[1, 3, 4]])
print()
# Slicing verwenden, um aufeinanderfolgende Zeilen auszuwählen (Hinweis: iloc-Slicing ist linksgeschlossen und rechts offen, wie in Python)
print("Zeilen 1 bis 3 auswählen (Positionen 1, 2, 3):")
print(df.iloc[1:4])
print()
# Die ersten 3 Zeilen auswählen
print("Die ersten 3 Zeilen:")
print(df.iloc[:3])
Ausgabe:
原始 DataFrame:
name age score grade
0 Alice 18 85 A
1 Bob 19 92 A
2 Charlie 17 78 B
3 David 18 90 A
4 Eve 20 88 B
选择第一行(位置 0):
name Alice
age 18
score 85
grade A
Name: 0, dtype: object
选择第 1、3、4 行:
name age score grade
1 Bob 19 92 A
3 David 18 90 A
4 Eve 20 88 B
选择第 1 行到第 3 行(位置 1、2、3):
name age score grade
1 Bob 19 92 A
2 Charlie 17 78 B
3 David 18 90 A
前 3 行:
name age score grade
0 Alice 18 85 A
1 Bob 19 92 A
2 Charlie 17 78 B
Codeanalyse:
df.iloc[0]Das Auswählen der ersten Zeile (Position 0) gibt eine Series zurück.iloc[]Slicing ist linksgeschlossen und rechts offen und umfasst die Positionen 1, 2, 3, aber nicht Position 4.df.iloc[[1, 3, 4]]Wählt Zeilen an mehreren bestimmten Positionen aus.df.iloc[:3]Das Weglassen der Startposition bedeutet, bei 0 zu beginnen.
Beispiel 2: Auswählen bestimmter Zeilen und Spalten
iloc[]Sie können Zeilen und Spalten gleichzeitig auswählen und sie präzise anhand ihrer Positionsnummern lokalisieren.
Beispiel
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [18, 19, 17, 18, 20],
'score': [85, 92, 78, 90, 88],
'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)
# Eine einzelne Zelle auswählen (zweite Zeile, dritte Spalte)
print("Zelle an Position [1, 2] auswählen:")
print(df.iloc[1, 2]) # gibt 92 zurück
print()
# Bestimmte Spalten einer bestimmten Zeile auswählen
print("Spalten 1 und 3 von Zeile 0 auswählen:")
print(df.iloc[0, [1, 3]])
print()
# Mehrere Zeilen und Spalten auswählen
print("Zeilen 0, 2, 4 und Spalten 0, 2 auswählen:")
print(df.iloc[[0, 2, 4], [0, 2]])
print()
# Bestimmte Spalten aller Zeilen auswählen
print("Spalten 0 und 2 aller Zeilen:")
print(df.iloc[:, [0, 2]])
print()
# Zeilen- und Spalten-Slicing kombinieren
print("Zeilen 1 bis 3, Spalten 0 bis 2 (exklusiv):")
print(df.iloc[1:4, :3])
Ausgabe:
选择位置 [1, 2] 的单元格:
92
选择第 0 行的第 1 和第 3 列:
age 19
grade A
Name: 0, dtype: object
选择第 0、2、4 行的第 0、2 列:
name score
0 Alice 85
2 Charlie 78
4 Eve 88
所有行的第 0 和第 2 列:
name score
0 Alice 85
1 Bob 92
2 Charlie 78
3 David 90
4 Eve 88
第 1 到 3 行的第 0 到第 2 列(不含):
name age
1 Bob 19
2 Charlie 17
3 David 18
Codeanalyse:
df.iloc[1, 2]Das Auswählen einer einzelnen Zelle gibt einen skalaren Wert zurück.df.iloc[0, [1, 3]]Wählt mehrere Spalten einer bestimmten Zeile aus.df.iloc[:, [0, 2]]Ein Doppelpunkt gibt die Auswahl aller Zeilen an.iloc[]Slicing folgt den Python-Konventionen, links geschlossen und rechts offen (die Endposition ausgeschlossen).
Beispiel 3: Verwendung mit benutzerdefiniertem Index
Wenn das DataFrame einen benutzerdefinierten Index hat,iloc[]Daten werden weiterhin anhand der Position ausgewählt, unabhängig von den Indexbeschriftungen.
Beispiel
# DataFrame mit benutzerdefiniertem Index erstellen
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [18, 19, 17, 18, 20],
'score': [85, 92, 78, 90, 88]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print("DataFrame mit benutzerdefiniertem Index:")
print(df)
print()
# iloc wählt weiterhin anhand der Position aus, unabhängig vom benutzerdefinierten Index
print("iloc")
print(df.iloc[0])
print()
print("iloc[1:3] wählt Zeilen 2 und 3 aus (Positionen 1, 2):")
print(df.iloc[1:3])
print()
# Negative Indizierung verwenden (vom Ende gezählt)
print("Letzte Zeile (Position -1):")
print(df.iloc[-1])
print()
print("Letzte 3 Zeilen:")
print(df.iloc[-3:])
Ausgabe:
带自定义索引的 DataFrame:
name age score
a Alice 18 85
b Bob 19 92
c Charlie 17 78
d David 18 90
e Eve 20 88
iloc[0] 选择第一行(位置 0),与标签 'a', 'b', 'c' 无关:
name Alice
age 18
score 85
Name: a, dtype: object
iloc[1:3] 选择第 2、3 行(位置 1、2):
name age score
b Bob 19 92
c Charlie 17 78
最后一行(位置 -1):
name Eve
age 20
score 88
Name: e, dtype: object
倒数 3 行:
name age score
c Charlie 17 78
d David 18 90
e Eve 20 88
Codeanalyse:
- Selbst wenn das DataFrame einen benutzerdefinierten Index verwendet ('a', 'b', 'c', 'd', 'e'),
iloc[]wählt es weiterhin nach Position aus. iloc[0]Wählt immer die erste Zeile aus (physische Position), unabhängig vom Index-Label.ilocUnterstützt negative Indizierung: -1 steht für die letzte Zeile, -2 für die vorletzte Zeile und so weiter.
Beispiel 4: Auswahl mit booleschen Arrays
iloc[]Es unterstützt auch die Auswahl mithilfe boolescher Arrays, was für bedingte Filterung nützlich ist.
Beispiel
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [18, 19, 17, 18, 20],
'score': [85, 92, 78, 90, 88],
'grade': ['A', 'A', 'B', 'A', 'B']
}
df = pd.DataFrame(data)
# Auswahl mithilfe eines booleschen Arrays
bool_array = [True, False, True, False, True]
print("Mit dem booleschen Array [True, False, True, False, True] ausgewählte Zeilen:")
print(df.iloc[bool_array])
print()
# Verwendung mit Bedingungen (zuerst das boolesche Array berechnen, dann mit iloc verwenden)
# Zeilen mit Punktzahlen größer als 85 auswählen
condition = df['score'] > 85
print("Zeilen mit Punktzahlen größer als 85:")
print(df.iloc[condition.values]) # Das boolesche Array abrufen
print()
# Bestimmte Spalten auswählen, nachdem Zeilen an bestimmten Positionen ausgewählt wurden
print("Zeilen 1 und 3, Spalten 1 und 2:")
print(df.iloc[[1, 3], 1:3])
Ausgabe:
使用布尔数组 [True, False, True, False, True] 选择的行:
name age score grade
0 Alice 18 85 A
2 Charlie 17 78 B
4 Eve 20 88 B
分数大于 85 的行:
name age score grade
1 Bob 19 92 A
3 David 18 90 A
4 Eve 20 88 B
第 1、3 行的第 1、2 列:
age score
1 19 92
3 18 90
Codeanalyse:
- Die Länge des booleschen Arrays muss der Anzahl der Zeilen (für die Zeilenauswahl) oder der Anzahl der Spalten (für die Spaltenauswahl) entsprechen.
ilocBei Verwendung eines Boolean-Arrays, anders alsloc[]bei der bedingten Filterung, wird direkt nach Position ausgewählt.- Sie können einen Slice-Schritt verwenden, um bestimmte Muster auszuwählen, z. B. jede zweite Zeile auszuwählen.
Hinweise
iloc[]Es verwendet positionsbasiertes Indexing; Slicing folgt den Python-Konventionen (links geschlossen, rechts offen).- Wenn eine Position außerhalb des Bereichs übergeben wird, wird ein IndexError ausgelöst.
- Unterstützt negative Indizierung: -1 steht für die letzte Zeile, -2 für die vorletzte Zeile.
- und
loc[]Im Gegensatz dazu,iloc[]unterstützt es keine direkte Filterung mit bedingten Ausdrücken; Sie müssen zuerst ein Boolean-Array berechnen.
Wichtiger Hinweis:
loc[]undiloc[]Der Unterschied ist ein zentraler Punkt beim Erlernen von Pandas.loc[]loc basiert auf Labels,iloc[]iloc basiert auf Positionen. In der Entwicklung wird empfohlen, die beiden klar zu unterscheiden, um Fehler durch Verwechslung zu vermeiden.
Zusammenfassung
iloc[]Es ist ein Datenselektor, der auf der ganzzahligen Position in Pandas basiert und eine Indexierungserfahrung ähnlich wie bei Python-Listen bietet. Sein Hauptmerkmal ist, dass er vollständig auf der Position der Daten (beginnend bei 0) basiert und nicht von benutzerdefinierten Index-Labels beeinflusst wird.
In der tatsächlichen Verwendungiloc[]ist er besonders für die folgenden Szenarien geeignet: wenn Sie Daten nach Position auswählen müssen, wenn Sie negative Indizierung verwenden müssen, wenn Sie Slice-Schritte verwenden müssen und wenn Sie Daten ohne bestimmte Index-Labels auswählen. In Kombination mitloc[]undiloc[], kann er verschiedene Anforderungen an die Datenauswahl flexibel bewältigen.
Gängige Pandas-Funktionen