Pandas Datensortierung

PandasBeginner
Jetzt üben

Einführung

Willkommen zum Pandas Sorting Data Lab! Sortieren ist eine grundlegende Operation in der Datenanalyse. Es hilft Ihnen, Ihre Daten zu organisieren, sodass sie leichter zu lesen, zu verstehen und zu analysieren sind. Egal, ob Sie die höchsten oder niedrigsten Werte finden müssen oder Daten einfach in einer logischen Reihenfolge anordnen möchten, Pandas bietet leistungsstarke und flexible Werkzeuge, um diese Aufgabe zu erledigen.

In diesem Lab lernen Sie die primären Sortiermethoden in Pandas kennen:

  • sort_values(): Zum Sortieren eines DataFrames nach einem oder mehreren Spaltenwerten.
  • sort_index(): Zum Sortieren eines DataFrames nach seinem Index.
  • reset_index(): Zum Zurücksetzen des Index nach einer Sortieroperation.

Am Ende dieses Labs werden Sie in der Lage sein, Ihre Daten nach Ihren analytischen Bedürfnissen anzuordnen. Los geht's!

DataFrame nach einer einzelnen Spalte mit sort_values sortieren

In diesem Schritt lernen Sie die gängigste Sortieroperation kennen: das Sortieren eines DataFrames nach den Werten in einer einzelnen Spalte. Hierfür verwenden wir die Methode sort_values(). Der Parameter by wird verwendet, um die Spalte anzugeben, nach der Sie sortieren möchten.

Öffnen Sie zunächst die Datei main.py im Verzeichnis ~/project über den Dateiexplorer auf der linken Seite. Diese Datei wurde bereits mit einem Beispiel-DataFrame vorab gefüllt.

Fügen Sie nun den folgenden Code am Ende von main.py hinzu, um den DataFrame nach der Spalte Age zu sortieren.

## --- Schritt 1: Nach einer einzelnen Spalte sortieren ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame nach Alter sortiert:")
print(df_sorted_by_age)

Ihre vollständige Datei main.py sollte nun wie folgt aussehen:

import pandas as pd

## Erstellen eines Beispiel-DataFrames für unsere Übungen
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 22, 25, 28, 22],
    'Score': [85, 91, 88, 79, 91]
}
df = pd.DataFrame(data)

print("Original DataFrame:")
print(df)

## --- Schritt 1: Nach einer einzelnen Spalte sortieren ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame nach Alter sortiert:")
print(df_sorted_by_age)

Um das Ergebnis zu sehen, führen Sie das Skript im Terminal aus.

python3 main.py

Sie sehen den ursprünglichen DataFrame, gefolgt von dem neuen DataFrame, der nach Alter in aufsteigender Reihenfolge sortiert ist.

Erwartete Ausgabe:

Original DataFrame:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

DataFrame sorted by Age:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Nach mehreren Spalten aufsteigend sortieren

In diesem Schritt lernen Sie, wie Sie einen DataFrame basierend auf mehreren Spalten sortieren. Dies ist nützlich, wenn Sie bei der ersten Sortierspalte Gleichstände haben und ein sekundäres Sortierkriterium anwenden möchten.

Um nach mehreren Spalten zu sortieren, übergeben Sie eine Liste von Spaltennamen an den Parameter by der Methode sort_values(). Pandas sortiert zuerst nach der ersten Spalte in der Liste und verwendet dann die zweite Spalte, um Gleichstände aufzulösen, und so weiter.

Sortieren wir unseren DataFrame zuerst nach Age und dann nach Score. Fügen Sie den folgenden Code am Ende Ihrer main.py-Datei hinzu.

## --- Schritt 2: Nach mehreren Spalten sortieren ---
df_sorted_multiple = df.sort_values(by=['Age', 'Score'])
print("\nDataFrame nach Alter und dann nach Punktzahl sortiert:")
print(df_sorted_multiple)

Führen Sie das Skript nun erneut aus, um die Änderungen zu sehen.

python3 main.py

Sie sehen einen neuen Abschnitt in der Ausgabe. Beachten Sie, wie die beiden Zeilen mit Age 22 nun nach Score sortiert sind (Bob mit 91 kommt nach Eve mit 91, da ihre Reihenfolge stabil ist). Dasselbe gilt für die Zeilen mit Age 25.

Erwartete Ausgabe (nur der neue Teil wird angezeigt):

...

DataFrame nach Alter und dann nach Punktzahl sortiert:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Absteigend sortieren mit ascending=False

In diesem Schritt lernen Sie, wie Sie die Sortierrichtung steuern. Standardmäßig sortiert sort_values() aufsteigend. Sie können dies ändern, indem Sie den Parameter ascending verwenden.

  • Um absteigend zu sortieren, setzen Sie ascending=False.
  • Wenn Sie nach mehreren Spalten sortieren, können Sie für jede Spalte eine andere Reihenfolge angeben, indem Sie eine Liste von Booleans übergeben, z. B. ascending=[True, False].

Sortieren wir den DataFrame zuerst nach Age aufsteigend und dann nach Score absteigend. Dies hilft uns, den höchsten Punktesammler innerhalb jeder Altersgruppe zu finden. Fügen Sie den folgenden Code am Ende von main.py hinzu.

## --- Schritt 3: Absteigend und gemischt sortieren ---
df_sorted_mixed = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("\nDataFrame sortiert nach Alter (aufsteigend) und Punktzahl (absteigend):")
print(df_sorted_mixed)

Führen Sie das Skript aus, um das Ergebnis zu beobachten.

python3 main.py

In der Ausgabe betrachten Sie die Zeilen für das Alter 22. Eve und Bob haben beide eine Punktzahl von 91, daher ändert sich ihre Reihenfolge möglicherweise nicht. Für das Alter 25 erscheint Charlie (Punktzahl 88) nun vor Alice (Punktzahl 85), da wir die Punktzahlen absteigend sortiert haben.

Erwartete Ausgabe (nur der neue Teil wird angezeigt):

...

DataFrame sortiert nach Alter (aufsteigend) und Punktzahl (absteigend):
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
2  Charlie   25     88
0    Alice   25     85
3    David   28     79

Index mit sort_index sortieren

In diesem Schritt lernen Sie, wie Sie einen DataFrame nach seinem Index sortieren. Nach der Ausführung einer sort_values()-Operation wird der Index des DataFrames durcheinandergebracht. Dies sehen Sie in den vorherigen Ausgaben (z. B. der Index ist 1, 4, 2, 0, 3).

Die Methode sort_index() ermöglicht es Ihnen, den DataFrame basierend auf seinen Index-Labels zu sortieren und die ursprüngliche Reihenfolge wiederherzustellen, wenn der Index ein einfacher Bereich war.

Nehmen wir das Ergebnis aus dem vorherigen Schritt (df_sorted_mixed) und sortieren es nach seinem Index. Fügen Sie den folgenden Code am Ende von main.py hinzu.

## --- Schritt 4: Nach Index sortieren ---
## Das vorherige Ergebnis (df_sorted_mixed) hat einen durcheinandergeratenen Index. Sortieren wir ihn nach Index.
df_reordered_by_index = df_sorted_mixed.sort_index()
print("\nDataFrame neu nach Index sortiert:")
print(df_reordered_by_index)

Führen Sie das Skript aus.

python3 main.py

Sie werden sehen, dass der DataFrame nun nach seinem Index (0, 1, 2, 3, 4) sortiert ist, was ihn effektiv in seine ursprüngliche Zeilenreihenfolge zurückversetzt.

Erwartete Ausgabe (nur der neue Teil wird angezeigt):

...

DataFrame neu nach Index sortiert:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

Index nach Sortierung mit reset_index zurücksetzen

In diesem letzten Schritt lernen Sie, wie Sie den Index eines DataFrames zurücksetzen. Nach dem Sortieren ist der Index keine saubere, sequentielle Reihe mehr ab 0. Während sort_index() die ursprüngliche Reihenfolge wiederherstellen kann, möchten Sie manchmal die neue sortierte Reihenfolge beibehalten, aber einen neuen, sequentiellen Index haben.

Die Methode reset_index() ist hierfür perfekt geeignet. Sie ersetzt den aktuellen Index durch einen Standard-Integer-Index (0, 1, 2, ...). Es ist üblich, den Parameter drop=True zu verwenden, um den alten Index vollständig zu verwerfen. Wenn Sie drop=True nicht verwenden, wird der alte Index als neue Spalte mit dem Namen index hinzugefügt.

Nehmen wir einen unserer sortierten DataFrames (df_sorted_mixed) und setzen seinen Index zurück. Fügen Sie den letzten Code-Schnipsel zu main.py hinzu.

## --- Schritt 5: Index nach dem Sortieren zurücksetzen ---
## Nehmen wir einen sortierten DataFrame und geben ihm einen neuen, sauberen Index
df_with_reset_index = df_sorted_mixed.reset_index(drop=True)
print("\nSortierter DataFrame mit zurückgesetztem Index:")
print(df_with_reset_index)

Führen Sie das Skript ein letztes Mal aus.

python3 main.py

Beobachten Sie die endgültige Ausgabe. Der DataFrame ist immer noch nach Alter (aufsteigend) und Punktzahl (absteigend) sortiert, aber der Index ist nun eine saubere Sequenz von 0 bis 4.

Erwartete Ausgabe (nur der neue Teil wird angezeigt):

...

Sortierter DataFrame mit zurückgesetztem Index:
      Name  Age  Score
0      Bob   22     91
1      Eve   22     91
2  Charlie   25     88
3    Alice   25     85
4    David   28     79

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss des Pandas Sorting Data Labs! Sie haben die wesentlichen Fähigkeiten für die Organisation und Sortierung Ihrer Daten in einem Pandas DataFrame erlernt.

In diesem Lab haben Sie Folgendes geübt:

  • Sortieren nach einer einzelnen Spalte mit sort_values(by='column_name').
  • Sortieren nach mehreren Spalten durch Übergabe einer Liste an den by-Parameter.
  • Steuern der Sortierrichtung mit dem ascending-Parameter.
  • Wiederherstellen der ursprünglichen Reihenfolge durch Sortieren des Index mit sort_index().
  • Erstellen eines neuen, sauberen Index auf einem sortierten DataFrame mit reset_index(drop=True).

Diese Sortiertechniken sind grundlegend für die Datenbereinigung, -exploration und -vorbereitung für fortgeschrittenere Analysen und Visualisierungen. Üben Sie diese Fähigkeiten weiter, um auf Ihrer Reise in die Datenwissenschaft effizienter zu werden.