Pandas df.sort_values()-Funktion

Pandas 常用函数Pandas Häufige Funktionen


df.sort_values()Es ist eine Funktion in Pandas, mit der DataFrame-Daten nach einer oder mehreren Spalten sortiert werden.

Sortieren ist eine grundlegende Operation in der Datenanalyse, die Ihnen hilft, Daten besser zu verstehen und Muster zu entdecken.sort_values()Es unterstützt das Sortieren nach einer einzelnen Spalte oder mehreren Spalten, in aufsteigender oder absteigender Reihenfolge und kann mit fehlenden Werten umgehen. Es ist ein unverzichtbares Werkzeug in der Datenverarbeitung.


Grundlegende Syntax und Parameter

sort_values()Es ist eine Member-Funktion von DataFrame, die über den Punktoperator aufgerufen wird.zum Aufrufen.

Syntaxformat

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)

Parameterbeschreibung

Parameter Type Erforderlich? Beschreibung Standardwert
von str oder Liste von str Erforderlich Gibt den/die für die Sortierung verwendeten Spaltennamen an. Wenn es sich um eine Liste handelt, wird gemäß der Reihenfolge in der Liste sortiert. Keine
axis int oder str Optional Gibt die Achse für die Sortierung an.0oder'index'0 bedeutet nach Spalten sortieren (Standard);1oder'columns'1 bedeutet, nach Zeilen zu sortieren. 0
ascending bool oder Liste von bool Optional Gibt die Sortierreihenfolge an.TrueTrue bedeutet aufsteigend (von klein nach groß);FalseFalse bedeutet absteigend (von groß nach klein). Wenn es eine Liste ist, stimmt sie eins zu eins mitbyden Spalten im Parameter 'by' überein. True
inplace bool Optional Wenn TrueTrue, verändert es das ursprüngliche DataFrame direkt und gibt kein neues Objekt zurück; wenn FalseFalse, gibt es ein neues DataFrame zurück, und die ursprünglichen Daten bleiben unverändert. False
kind str Optional Gibt den Sortieralgorithmus an.'quicksort''quicksort' (Quicksort),'mergesort''mergesort' (Mergesort),'heapsort''heapsort' (Heap-Sortierung),'stable''stable' (stabile Sortierung). 'quicksort'
na_position str Optional Gibt die Position fehlender Werte (NaN) an.'first''first' bedeutet, am Anfang platziert zu werden;'last''last' bedeutet, am Ende platziert zu werden. 'last'
ignore_index bool Optional Wenn TrueTrue, setzt es den sortierten Index zurück, Nummerierung ab 0; wenn FalseFalse, behält es den ursprünglichen Index bei. False
key callable Optional Wendet eine Funktion auf die Daten vor dem Sortieren an, die häufig für benutzerdefinierte Sortierregeln verwendet wird. Keine

Beschreibung des Rückgabewerts

  • Gibt ein neues DataFrame zurück (wenninplace=False), oderNone(wenninplace=True)。
  • Das zurückgegebene DataFrame wurde gemäß den angegebenen Regeln sortiert.

Beispiele

Lass uns gründlich meisternsort_values()die Verwendung von df.sort_values().

Beispiel 1: Nach einer einzelnen Spalte in aufsteigender Reihenfolge sortieren

Die einfachste Verwendung ist, aufsteigend nach den Werten einer Spalte zu sortieren.

Beispiel

import pandas as pd

# Erstelle einen DataFrame mit Studentennoten
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Mathematik: [85, 92, 78, 90, 88],
    Englisch: [90, 85, 92, 88, 78]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Aufsteigend nach Mathematik-Punktzahl sortieren
df_sorted = df.sort_values(by=Mathematics)

print(Nach Sortierung nach Mathematik-Punktzahlen in aufsteigender Reihenfolge:)
print(df_sorted)

Erwartete Ausgabe:

原始数据:
   姓名  数学  英语
0  张三   85   90
1  李四   92   85
2  王五   78   92
3  赵六   90   88
4  钱七   88   78
==================================================
按数学成绩升序排序后:
   姓名  数学  英语
2  王五   78   92
0  张三   85   90
4  钱七   88   78
3  赵六   90   88
1  李四   92   85

Code-Erklärung:

  1. Die Standardsortierreihenfolge ist aufsteigend (von klein nach groß).
  2. Die Mathematik-Punktzahl 78 steht an erster Stelle und 92 an letzter Stelle.
  3. Nach dem Sortieren bleibt der Index unverändert (2, 0, 4, 3, 1).

Beispiel 2: Nach einer einzelnen Spalte in absteigender Reihenfolge sortieren

Verwenden Sieascending=Falseum eine absteigende Sortierung zu erreichen.

Beispiel

import pandas as pd

# Erstelle einen DataFrame mit Studentennoten
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Mathematik: [85, 92, 78, 90, 88],
    Englisch: [90, 85, 92, 88, 78]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Absteigend nach Mathematikpunktzahl sortieren
df_sorted = df.sort_values(by=Mathematics, ascending=False)

print(Nach dem Sortieren nach Mathematikpunkten in absteigender Reihenfolge:)
print(df_sorted)

Erwartete Ausgabe:

原始数据:
   姓名  数学  英语
0  张三   85   90
1  李四   92   85
2  王五   78   92
3  赵六   90   88
4  钱七   88   78
==================================================
按数学成绩降序排序后:
   姓名  数学  英语
1  李四   92   85
3  赵六   90   88
4  钱七   88   78
0  张三   85   90
2  王五   78   92

Code-Erklärung:

  • Verwenden Sieascending=Falsekann eine absteigende Sortierung von groß nach klein erreichen.
  • Li Sis Mathematikpunktzahl von 92 wird an erster Stelle platziert.

Beispiel 3: Nach mehreren Spalten sortieren

Sie können nach mehreren Spalten sortieren: Zuerst nach der ersten Spalte sortieren, und wenn die erste Spalte gleich ist, nach der zweiten Spalte sortieren.

Beispiel

import pandas as pd

# Erstelle einen DataFrame mit Studentennoten
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Class: [Class 1, Class 2, Class 1, Class 2, Class 1],
    Mathematik: [85, 92, 78, 90, 88]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Zuerst nach Klasse, dann nach Mathematikpunktzahl sortieren (beide aufsteigend)
df_sorted = df.sort_values(by=[Class, Mathematics])

print("Nach der Sortierung zuerst nach Klasse, dann nach Mathematikpunktzahl:")
print(df_sorted)
print("=" * 50)

# Nach Klasse aufsteigend, Mathematikpunktzahl absteigend sortieren
df_sorted2 = df.sort_values(by=[Class, Mathematics], ascending=[True, False])

print(Nach Klasse aufsteigend, Mathematikpunktzahl absteigend sortieren:)
print(df_sorted2)

Erwartete Ausgabe:

原始数据:
   姓名  班级  数学
0  张三  一班   85
1  李四  二班   92
2  王五  一班   78
3  赵六  二班   90
4  钱七  一班   88
==================================================
先按班级,再按数学成绩排序后:
   姓名  班级  数学
2  王五  一班   78
0  张三  一班   85
4  钱七  一班   88
3  赵六  二班   90
1  李四  二班   92
==================================================
按班级升序,数学成绩降序:
   姓名  班级  数学
4  钱七  一班   88
0  张三  一班   85
2  王五  一班   78
1  李四  二班   92
3  赵六  二班   90

Code-Erklärung:

  • Verwenden Sie eine Listeby=['班级', '数学']um nach mehreren Spalten zu sortieren.
  • Zuerst nach "class" sortieren, wobei Class 1 vorne und Class 2 dahinter steht.
  • Innerhalb derselben Klasse zusätzlich nach der "math"-Punktzahl sortieren.
  • Verwenden Sieascending=[True, False]um unterschiedliche Sortierrichtungen für verschiedene Spalten festzulegen.

Beispiel 4: Sortieren mit fehlenden Werten

Verwenden Siena_positionParameter zur Steuerung der Position fehlender Werte.

Beispiel

import pandas as pd
import numpy as np

# Erstelle einen DataFrame mit fehlenden Werten
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Score': [85, np.nan, 92, 78]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Standard: fehlende Werte werden zuletzt platziert
df_sorted_last = df.sort_values(by='Score')

print("Fehlende Werte ans Ende gesetzt:")
print(df_sorted_last)
print("=" * 50)

# Fehlende Werte zuerst platzieren
df_sorted_first = df.sort_values(by='Score', na_position='first')

print("Fehlende Werte an den Anfang gesetzt:")
print(df_sorted_first)

Erwartete Ausgabe:

原始数据:
   姓名   成绩
0  张三  85.0
1  李四   NaN
2  王五  92.0
3  赵六  78.0
==================================================
缺失值放在最后:
   姓名   成绩
3  赵六  78.0
0  张三  85.0
2  王五  92.0
1  李四   NaN
==================================================
缺失值放在最前:
   姓名   成绩
1  李四   NaN
3  赵六  78.0
0  张三  85.0
2  王五  92.0

Code-Erklärung:

  • Standardmäßig (na_position='last'), werden fehlende Werte zuletzt platziert.
  • Setna_position='first', und fehlende Werte werden zuerst platziert.

Beispiel 5: Zurücksetzen des Index nach dem Sortieren

Nach dem Sortieren kann der Index nicht fortlaufend sein; Sie könnenignore_index=Trueverwenden, um den Index zurückzusetzen.

Beispiel

import pandas as pd

# DataFrame erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'Score': [85, 92, 78]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Sortieren ohne Zurücksetzen des Index
df_sorted = df.sort_values(by='Score')

print(Nach dem Sortieren (ursprüngliche Indizes beibehalten):)
print(df_sorted)
print("=" * 50)

# Sortieren und Index zurücksetzen
df_sorted_reset = df.sort_values(by='Score', ignore_index=True)

print(Nach dem Sortieren (Index zurückgesetzt):)
print(df_sorted_reset)

Erwartete Ausgabe:

原始数据:
   姓名  成绩
0  张三   85
1  李四   92
2  王五   78
==================================================
排序后(保留原始索引):
   姓名  成绩
2  王五   78
0  张三   85
1  李四   92
==================================================
排序后(重置索引):
   姓名  成绩
0  王五   78
1  张三   85
2  李四   92

Code-Erklärung:

  • Verwendungignore_index=TrueDanach wird der Index beginnend bei 0 neu nummeriert.
  • Das ist praktischer, wenn Sie später über den Index auf Daten zugreifen müssen.

Beispiel 6: Benutzerdefiniertes Sortieren mit dem key-Parameter

keyDer Parameter ermöglicht es Ihnen, vor dem Sortieren eine benutzerdefinierte Funktion auf die Daten anzuwenden.

Beispiel

import pandas as pd

# Erstellen Sie ein DataFrame, das eine Mischung aus Zeichenfolgen in Groß- und Kleinschreibung enthält
data = {
    'Word': ['apple', 'Banana', 'cherry', 'APPLE', 'banana']
}
df = pd.DataFrame(data)

print(Originaldaten:)
print(df)
print("=" * 50)

# Alphabetisch in aufsteigender Reihenfolge sortieren (Groß-/Kleinschreibung beachten)
df_sorted_case = df.sort_values(by='Word')

print(Alphabetisch aufsteigend (Groß-/Kleinschreibung beachten):)
print(df_sorted_case)
print("=" * 50)

# key-Parameter verwenden, um eine Sortierung ohne Beachtung der Groß-/Kleinschreibung zu erreichen
df_sorted_nocase = df.sort_values(by='Word', key=lambda x: x.str.lower())

print(Alphabetisch aufsteigend (Groß-/Kleinschreibung wird nicht beachtet):)
print(df_sorted_nocase)

Erwartete Ausgabe:

原始数据:
    单词
0  apple
1  Banana
2  cherry
3  APPLE
4  banana
==================================================
按字母升序(区分大小写):
    单词
3  APPLE
0  apple
1  Banana
4  banana
2  cherry
==================================================
按字母升序(不区分大小写):
    单词
0  apple
3  APPLE
1  Banana
4  banana
2  cherry

Code-Erklärung:

  • Standardmäßig wird bei der Sortierung die Groß-/Kleinschreibung beachtet, wobei Großbuchstaben vor Kleinbuchstaben stehen.
  • Verwendungkey=lambda x: x.str.lower()Alle Zeichenfolgen werden vor dem Sortieren in Kleinbuchstaben umgewandelt, wodurch eine Sortierung ohne Beachtung der Groß-/Kleinschreibung erreicht wird.

Beispiel 7: In-place-Modifikation unter Verwendung des inplace-Parameters

Verwendunginplace=TrueSie können direkt am ursprünglichen DataFrame Änderungen vornehmen.

Beispiel

import pandas as pd

# DataFrame erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'Score': [85, 92, 78]
}
df = pd.DataFrame(data)

print(Originaldaten:)
print(df)
print(fUrsprüngliche Daten-ID: {id(df)})
print("=" * 50)

# In-place sortieren mit inplace=True
df.sort_values(by='Score', inplace=True)

print(Nach dem Sortieren mit inplace=True:)
print(df)
print(fSortierte Daten-ID: {id(df)})

Erwartete Ausgabe:

原始数据:
   姓名  成绩
0  张三   85
1  李四   92
2  王五   78
原始数据 id: 140234567890
==================================================
使用 inplace=True 排序后:
   姓名  成绩
2  王五   78
0  张三   85
1  李四   92
排序后数据 id: 140234567890  # 同一个对象

Code-Erklärung:

  • Verwendunginplace=Trueanschließend wird das DataFrame selbst geändert und kein neues Objekt zurückgegeben.
  • Die id vor und nach dem Sortierenidsind gleich, was darauf hinweist, dass es dasselbe Objekt ist.
  • Diese Methode kann Speicher sparen, aber sie wird die ursprünglichen Daten ändern.

Hinweise

  • sort_values()Standardmäßig wird ein neuer DataFrame zurückgegeben und die Originaldaten werden nicht geändert. Um an Ort und Stelle zu ändern, verwenden Sieinplace=Trueden Parameter.
  • Die Sortieroperation wird nicht an Ort und Stelle durchgeführt (sofern nicht anders angegebeninplace=True), der ursprüngliche DataFrame bleibt unverändert.
  • Verwendungignore_index=Truekann den Index zurücksetzen, was bei der nachfolgenden Datenverarbeitung bequemer ist.
  • keyDer Parameter ist sehr leistungsfähig und kann verschiedene benutzerdefinierte Sortierungen implementieren, wie z. B. ohne Berücksichtigung der Groß-/Kleinschreibung, Sortierung nach absolutem Wert usw.
  • Beim Sortieren nach mehreren Spalten,ascendingkann der Parameter eine Liste sein, die eins zu eins mitbyden Spalten in ... übereinstimmt

Pandas 常用函数Häufige Pandas-Funktionen

Weitere Erweiterungen