Das Umbenennen von Spalten in einem Pandas Dataframe ist eine gängige Operation. Lernen Sie die vier verschiedenen Methoden zum Umbenennen von Pandas-Spalten kennen.

Pandas ist eine beliebte Python-Bibliothek für die Datenanalyse. Die Daten, die wir analysieren müssen, liegen oft in verschiedenen Formaten vor, darunter csv- und tsv-Dateien, relationale Datenbanken und mehr. Und Sie müssen einige Vorprüfungen an den Daten vornehmen, fehlende Werte behandeln und die Daten für die weitere Analyse vorbereiten.

Mit Pandas können Sie:

  • Daten aus verschiedenen Quellen einlesen
  • Den Datensatz untersuchen und fehlende Werte in ihm behandeln
  • Den Datensatz analysieren, um Erkenntnisse zu gewinnen

Bei allen Datenanalyseprojekten werden Sie oft Datenrahmen aus Python-Datenstrukturen wie einem Wörterbuch erstellen. Oder Sie lesen Daten aus anderen Quellen, wie z.B. einer csv-Datei, in einen Datenrahmen ein.

Der Datenrahmen ist die grundlegende Datenstruktur in Pandas. Er enthält die Datensätze in den Zeilen und die verschiedenen Felder oder Attribute in den Spalten.

Möglicherweise müssen Sie jedoch die Spaltennamen umbenennen, um sie anschaulicher zu machen und die Lesbarkeit zu verbessern. Hier lernen Sie vier verschiedene Möglichkeiten kennen, wie Sie Spalten umbenennen können. Fangen wir an!

Erstellen eines Pandas DataFrame

Sie können dem Tutorial in einer Jupyter-Notebook-Umgebung mit installiertem Pandas folgen. Oder Sie können auf Google Colab folgen.

Zunächst erstellen wir einen Pandas DataFrame, mit dem wir im weiteren Verlauf des Tutorials arbeiten werden.

Hier ist ein Wörterbuch book_dict:

books_dict = {
    "ein": [
        "Atomare Gewohnheiten",
        "His Dark Materials",
        "Die Mitternachtsbibliothek",
        "Die zerbrochene Erde",
        "Ängstliche Menschen",
    ],
    "zwei": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "drei": ["Sachbuch", "Fantasy", "Magischer Realismus", "Fantasy", "Belletristik"],
    "vier": [4, 5, 3, 5, 4],
}

Wir importieren zunächst pandas und erstellen dann einen Datenrahmen df aus books_dict.

import pandas as pd

Hinweis: Wir werden immer wieder auf die folgende Codezelle zurückkommen, um eine erste Version des Datenrahmens zu erstellen, bevor wir die Spalten umbenennen.

df = pd.DataFrame(books_dict)

Wir können df.head() verwenden, um die ersten Zeilen des Datenrahmens df zu erhalten. Standardmäßig werden die ersten fünf Zeilen zurückgegeben. In diesem Fall hat df nur fünf Zeilen. Wenn wir also df.head() verwenden, erhalten wir den gesamten Datenrahmen.

df.head()
image-230

Wir sehen, dass die Spaltennamen derzeit die Schlüssel des Wörterbuchs sind. Aber das ist nicht sehr aussagekräftig. Benennen wir sie also um! 👩‍🏫

Methoden zum Umbenennen von Spalten in Pandas

Schauen wir uns nun die verschiedenen Methoden zum Umbenennen von Spalten in Pandas an:

  • Setzen des Attributs columns des Datenrahmens auf die Liste der neuen Spaltennamen
  • Verwendung der Methode rename() für den Datenrahmen
  • Verwendung von str.replace zum Umbenennen einer oder mehrerer Spalten
  • Verwendung der Methode set_axis() für den Datenrahmen

Einstellen des Attributs columns

Für jeden Datenrahmen enthält das Attribut columns die Liste der Spaltennamen:

df.columns
# Index(['eins', 'zwei', 'drei', 'vier'], dtype='object')

Lassen Sie uns die Spalten umbenennen, um anzugeben, wofür jedes Feld steht, und rufen Sie dann df.head() auf, um die Ergebnisse zu sehen:

df.columns = ['Titel','Autor','Genre','Bewertung']
df.head()
image-231

Verwendung der Methode rename()

Um Spalten in Pandas umzubenennen, können Sie die Methode rename() mit der folgenden Syntax verwenden:

df.rename(column={mapping})

Dieses Mapping kann ein Wörterbuch der folgenden Form sein:

{'alte_spalte_name_1':'neue_spalte_name_1', 'alte_spalte_name_2':'neue_spalte_name_2',...,
'alte_spalte_name_n':'neue_spalte_name_n'}

Lassen Sie uns df aus dem Wörterbuch books_dict erstellen:

df = pd.DataFrame(books_dict)

Wenn wir die Methode rename() mit der obigen Syntax verwenden, erhalten wir df_1. Das ist eine Kopie des Datenrahmens, bei der die Spalten umbenannt wurden.

df_1 = df.rename(columns={'eins':'Titel','zwei':'Autor','drei':'Genre','vier':'Bewertung'})
df_1.head()

Die Spaltennamen von df_1 werden also geändert:

image-232

Aber die Spaltennamen des ursprünglichen Datenrahmens df ändern sich nicht:

df.head()
image-233

Da wir mit dieser Methode eine Zuordnung zwischen den alten und den neuen Spaltennamen herstellen können, können wir sie sowohl für die Umbenennung einzelner als auch mehrerer Spalten verwenden.

Spalten an Ort und Stelle umbenennen

Was, wenn Sie den vorhandenen Datenrahmen ändern möchten, ohne eine neue Kopie zu erstellen?

Dazu können Sie inplace in dem Methodenaufruf auf True setzen.

df.rename(columns={'eins':'Titel','zwei':'Autor','drei':'Genre','vier':'Bewertung'},inplace=True)
df.head()

Dies wird die Spalten des ursprünglichen Datenrahmens df umbenennen:

rename-pandas-columns

Bis jetzt haben wir gesehen, wie man:

  • Spalten umbenennen, indem Sie ein Wörterbuch bereitstellen, das die alten Spaltennamen den neuen Spaltennamen zuordnet
  • Spalten an Ort und Stelle umbenennen, ohne einen neuen Datenrahmen zu erstellen

Sie können die Umbenennungsmethode auch auf eine andere Weise verwenden.

Eine andere Herangehensweise an das Umbenennen von Spalten

Lassen Sie uns die Spalten so umbenennen, dass sie in Großbuchstaben geschrieben sind:

df = pd.DataFrame(books_dict)
df.columns = ['TITEL','AUTOR','GENRE','BEWERTUNG']
df.head()

Der Datenrahmen df sieht nun wie folgt aus:

image-234

Nehmen wir an, wir möchten die Namen dieser Spalten in die Groß- und Kleinschreibung des Titels ändern. Anstatt für jeden Spaltennamen ein Wörterbuch bereitzustellen, können wir einen Funktions- oder Methodenaufruf für ein Objekt angeben, wie gezeigt:

df.rename(str.title,axis='columns',inplace=True)
df.head()
rename-pandas-columns

Hier setzen wir die Achse auf 'Spalten' und verwenden str.title, um alle Spaltennamen in die Groß- und Kleinschreibung zu konvertieren.

Verwendung von str.replace() für die Zeichenketten der Spaltennamen

Wie immer führen Sie die folgende Codezelle aus, um den Datenrahmen aus dem Wörterbuch zu erstellen:

df = pd.DataFrame(books_dict)

In Python hätten Sie die Methode replace() mit der Syntax str.replace(this, with_this) verwendet, um eine Kopie einer Zeichenkette mit den gewünschten Änderungen zu erhalten. Hier ist ein Beispiel:

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'

Sie wissen, dass das Attribut columns eine Liste von Strings mit den Namen der Spalten enthält. Sie können also str.replace('alter_Spaltenname','neuer_Spaltenname') wie folgt aufrufen:

df.columns = df.columns.str.replace('ein','Titel')
df.head()
rename-pandas-columns

Hier haben wir nur die Spalte ‘eins’ in ‘Titel’ umbenannt, so dass die anderen Spaltennamen unverändert bleiben.

Lassen Sie uns nun die anderen Spalten auf die gleiche Art und Weise umbenennen:

df.columns = df.columns.str.replace('zwei','Autor')
df.columns = df.columns.str.replace('drei','Genre')
df.columns = df.columns.str.replace('vier','Bewertung')
df.head()
image-232

Diese Methode zum Umbenennen von Spalten ist hilfreich, wenn Sie nur eine oder eine kleine Teilmenge der Spalten umbenennen müssen.

Verwendung der Methode set_axis()

Kehren wir zur ursprünglichen Version eines Datenrahmens zurück:

df = pd.DataFrame(books_dict)

Sie können auch die Methode set_axis() verwenden, um die Spalten umzubenennen. Die Syntax lautet wie folgt:

df.set_axis([list_of_column_names],axis='columns')

In der Standardeinstellung gibt die Methode set_axis() die Kopie des Datenrahmens zurück. Wenn Sie jedoch den Datenrahmen an Ort und Stelle ändern möchten, können Sie copy auf False setzen.

df = df.set_axis(['Titel','Autor','Genre','Bewertung'],axis='columns',copy=False)
df.head()
rename-pandas-columns

Fazit

Dies ist ein Überblick über die verschiedenen Methoden zum Umbenennen von Spalten in einem Pandas-Dataframe:

  • Bei einem Beispieldatenrahmen df ist das Spaltenattribut df.columns die Liste der Spaltennamen. Um die Spalten umzubenennen, können Sie dieses Attribut auf die Liste der neuen Spaltennamen setzen.
  • Die Methode rename() zum Umbenennen von Spalten funktioniert mit der Syntax: df.rename(columns={mapping}), wobei sich mapping auf die Zuordnung von den alten Spaltennamen zu den neuen Spaltennamen bezieht. Sie können die Methode rename() auch verwenden, indem Sie eine Funktion angeben, die auf alle Spaltennamen angewendet werden soll: df.rename(function or method call, axis='columns').
  • Genauso wie Sie die Methode replace() auf einen Python-String anwenden, können Sie df.columns.str.replace('alter_Spaltenname', 'neuer_Spaltenname') verwenden, um Spaltennamen zu ersetzen.
  • Eine andere Möglichkeit, Spalten umzubenennen, ist die Verwendung der Methode set_axis mit der Syntax: df.set_axis(list_of_col_names,axis='columns').

Das war’s für dieses Tutorial! Sehen Sie sich die Liste der kollaborativen Notizbücher für die Datenanalyse an.