Pandas df.iloc[] Funktion

Pandas 常用函数Gängige Pandas-Funktionen


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

import pandas as pd

# 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:

  1. df.iloc[0]Das Auswählen der ersten Zeile (Position 0) gibt eine Series zurück.
  2. iloc[]Slicing ist linksgeschlossen und rechts offen und umfasst die Positionen 1, 2, 3, aber nicht Position 4.
  3. df.iloc[[1, 3, 4]]Wählt Zeilen an mehreren bestimmten Positionen aus.
  4. 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

import pandas as pd

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:

  1. df.iloc[1, 2]Das Auswählen einer einzelnen Zelle gibt einen skalaren Wert zurück.
  2. df.iloc[0, [1, 3]]Wählt mehrere Spalten einer bestimmten Zeile aus.
  3. df.iloc[:, [0, 2]]Ein Doppelpunkt gibt die Auswahl aller Zeilen an.
  4. 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

import pandas as pd

# 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

import pandas as pd

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:

  1. 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.
  2. ilocBei Verwendung eines Boolean-Arrays, anders alsloc[]bei der bedingten Filterung, wird direkt nach Position ausgewählt.
  3. 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.
  • undloc[]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.

Pandas 常用函数Gängige Pandas-Funktionen

Andere Erweiterungen