Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation und -analyse. Eine häufige Aufgabe ist die Auswahl bestimmter Spalten aus einem DataFrame. Dieser Artikel untersucht effiziente und übersichtliche Methoden zur Auswahl mehrerer Spalten und hebt Best Practices hervor.
Inhaltsverzeichnis:
- Verwendung der Getitem-Syntax
- Verwendung von
iloc()
- Verwendung von
loc()
- Boolesche Indizierung zur Spaltenauswahl
- Performance-Überlegungen
- Fazit
- FAQ
Verwendung der Getitem-Syntax
Der einfachste Ansatz verwendet die Getitem-Syntax ([]
). Geben Sie eine Liste von Spaltennamen an, um diese Spalten auszuwählen.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Auswahl von 'col1', 'col3' und 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)
Dies ist prägnant und lesbar, aber stellen Sie sicher, dass alle aufgeführten Spalten im DataFrame vorhanden sind; andernfalls tritt ein KeyError
auf.
Verwendung von iloc()
iloc()
verwendet die indexbasierte Indizierung. Wählen Sie Spalten aus, indem Sie eine Liste ihrer ganzzahligen Positionen angeben (denken Sie daran, dass Python die nullbasierte Indizierung verwendet).
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Auswahl der Spalten an den Indizes 0, 2 und 3
selected_df = df.iloc[:, [0, 2, 3]] # : wählt alle Zeilen aus, [0, 2, 3] wählt die Spalten 0, 2 und 3 aus
print(selected_df)
Das :
wählt alle Zeilen aus. iloc()
ist nützlich, wenn Spaltennamen unbekannt sind, aber Indizes verfügbar sind.
Verwendung von loc()
loc()
verwendet Bezeichnungen (Spaltennamen). Ähnlich wie Getitem für mehrere Spalten bietet loc
mehr Flexibilität für kombinierte Zeilen- und Spaltenauswahlen.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Auswahl von 'col1', 'col3' und 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']] # : wählt alle Zeilen aus, ['col1', 'col3', 'col4'] wählt die angegebenen Spalten aus
print(selected_df)
loc
gibt explizit die labelbasierte Auswahl an, was vorteilhaft ist, wenn es mit der Zeilenauswahl mithilfe von Labels oder boolescher Indizierung kombiniert wird.
Boolesche Indizierung zur Spaltenauswahl
Für komplexere Szenarien ermöglicht die boolesche Indizierung mit loc
die Auswahl von Spalten basierend auf Bedingungen, die auf deren Namen angewendet werden.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)
# Auswahl von Spalten, die mit 'col' beginnen
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)
Performance-Überlegungen
Im Allgemeinen ist Getitem am schnellsten, gefolgt von loc
und dann iloc
. Die Unterschiede sind jedoch in der Regel vernachlässigbar, es sei denn, es werden massive DataFrames verarbeitet. Priorisieren Sie Lesbarkeit und Wartbarkeit gegenüber geringfügigen Performance-Verbesserungen.
Fazit
Die Auswahl mehrerer Spalten ist in Pandas grundlegend. Getitem ist am einfachsten für bekannte Spaltennamen. iloc()
eignet sich für die indexbasierte Indizierung, während loc()
Flexibilität bietet und für die labelbasierte Auswahl bevorzugt wird. Die beste Methode hängt von Ihren spezifischen Bedürfnissen und Ihrer Datenstruktur ab.
FAQ
- F: Was passiert, wenn ich eine nicht vorhandene Spalte auswähle?
A: Getitem undloc
lösen einenKeyError
aus.iloc
löst einenIndexError
aus, wenn der Index außerhalb des Bereichs liegt. - F: Kann ich Spalten basierend auf einer Bedingung auswählen?
A: Ja, verwenden Sie die boolesche Indizierung mitloc
(wie oben gezeigt).