Data Science

Pandas meistern: Effizientes Auswählen mehrerer Spalten in DataFrames

Spread the love

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

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 und loc lösen einen KeyError aus. iloc löst einen IndexError 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 mit loc (wie oben gezeigt).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert