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()
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()
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:
Aber die Spaltennamen des ursprünglichen Datenrahmens df
ändern sich nicht:
df.head()
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:
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:
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()
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()
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()
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()
Fazit
Dies ist ein Überblick über die verschiedenen Methoden zum Umbenennen von Spalten in einem Pandas-Dataframe:
- Bei einem Beispieldatenrahmen
df
ist das Spaltenattributdf.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 sichmapping
auf die Zuordnung von den alten Spaltennamen zu den neuen Spaltennamen bezieht. Sie können die Methoderename()
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 Siedf.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.