Fonction Pandas df.sort_values()

Pandas 常用函数Fonctions courantes de Pandas


df.sort_values()C'est une fonction de Pandas utilisée pour trier les données d'un DataFrame selon une ou plusieurs colonnes.

Le tri est une opération de base en analyse de données qui vous aide à mieux comprendre les données et à découvrir des tendances.sort_values()Il prend en charge le tri par une seule colonne ou plusieurs colonnes, par ordre croissant ou décroissant, et peut gérer les valeurs manquantes. C'est un outil indispensable dans le traitement des données.


Syntaxe de base et paramètres

sort_values()C'est une fonction membre de DataFrame, appelée via l'opérateur point.pour l'invoquer.

Format de syntaxe

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

Description du paramètre

Paramètre Type Obligatoire ? Description Valeur par défaut
par str ou liste de str Requis Spécifie le(s) nom(s) de colonne utilisés pour le tri. S'il s'agit d'une liste, le tri est effectué selon l'ordre de la liste. Aucune
axis int ou str Optional Spécifie l'axe de tri.0ou'index'0 signifie trier par colonnes (par défaut) ;1ou'columns'1 signifie trier par lignes. 0
ascending bool ou liste de bool Optional Spécifie l'ordre de tri.TrueTrue signifie ordre croissant (du plus petit au plus grand) ;FalseFalse signifie ordre décroissant (du plus grand au plus petit). S'il s'agit d'une liste, elle correspond un à un avecbyles colonnes du paramètre 'by'. True
inplace bool Optional Si TrueTrue, il modifie directement le DataFrame d'origine et ne renvoie aucun nouvel objet ; si FalseFalse, il renvoie un nouveau DataFrame et les données d'origine restent inchangées. False
kind str Optional Spécifie l'algorithme de tri.'quicksort''quicksort' (tri rapide),'mergesort''mergesort' (tri fusion),'heapsort''heapsort' (tri par tas),'stable''stable' (tri stable). 'quicksort'
na_position str Optional Spécifie la position des valeurs manquantes (NaN).'first''first' signifie placé au début ;'last''last' signifie placé à la fin. 'last'
ignore_index bool Optional Si TrueTrue, il réinitialise l'index trié, en numérotant à partir de 0 ; si FalseFalse, il conserve l'index d'origine. False
key callable Optional Applique une fonction aux données avant le tri, couramment utilisée pour des règles de tri personnalisées. Aucune

Description de la valeur de retour

  • Renvoie un nouveau DataFrame (siinplace=False), ouNone(siinplace=True)。
  • le DataFrame renvoyé a été trié selon les règles spécifiées.

Exemples

Maîtrisons parfaitementsort_values()l’utilisation de df.sort_values().

Exemple 1 : Trier selon une seule colonne par ordre croissant

L’utilisation la plus simple consiste à trier par ordre croissant selon les valeurs d’une colonne.

Exemple

import pandas as pd

# Créer un DataFrame de notes d’étudiants
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Mathématiques: [85, 92, 78, 90, 88],
    Anglais: [90, 85, 92, 88, 78]
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Trier par ordre croissant selon la note de mathématiques
df_sorted = df.sort_values(by=Mathematics)

print(Après tri selon les notes de mathématiques par ordre croissant :)
print(df_sorted)

Sortie attendue :

原始数据:
   姓名  数学  英语
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

Explication du code :

  1. L’ordre de tri par défaut est croissant (du plus petit au plus grand).
  2. La note de mathématiques 78 est placée en première position, et 92 en dernière position.
  3. Après le tri, l’index reste inchangé (2, 0, 4, 3, 1).

Exemple 2 : Trier selon une seule colonne par ordre décroissant

Utiliserascending=Falsepour obtenir un tri décroissant.

Exemple

import pandas as pd

# Créer un DataFrame de notes d’étudiants
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Mathématiques: [85, 92, 78, 90, 88],
    Anglais: [90, 85, 92, 88, 78]
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Trier par ordre décroissant selon le score de mathématiques
df_sorted = df.sort_values(by=Mathematics, ascending=False)

print(Après avoir trié par scores de mathématiques en ordre décroissant :)
print(df_sorted)

Sortie attendue :

原始数据:
   姓名  数学  英语
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

Explication du code :

  • Utiliserascending=Falsepermet d'obtenir un tri décroissant du plus grand au plus petit.
  • Le score de mathématiques de Li Si, 92, est placé en premier.

Exemple 3 : Trier par plusieurs colonnes

Vous pouvez trier par plusieurs colonnes : triez d'abord par la première colonne, puis, lorsque la première colonne est identique, triez par la deuxième colonne.

Exemple

import pandas as pd

# Créer un DataFrame de notes d’étudiants
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    Classe: [Classe 1, Classe 2, Classe 1, Classe 2, Classe 1],
    Mathématiques: [85, 92, 78, 90, 88]
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Trier d'abord par classe, puis par score de mathématiques (les deux en ordre croissant)
df_sorted = df.sort_values(by=[Class, Mathematics])

print("Après tri par classe d'abord, puis par score de mathématiques :")
print(df_sorted)
print("=" * 50)

# Trier par classe par ordre croissant, score de mathématiques par ordre décroissant
df_sorted2 = df.sort_values(by=[Class, Mathematics], ascending=[True, False])

print(Trier par classe par ordre croissant, score de mathématiques par ordre décroissant :)
print(df_sorted2)

Sortie attendue :

原始数据:
   姓名  班级  数学
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

Explication du code :

  • Utiliser une listeby=['班级', '数学']pour trier par plusieurs colonnes.
  • Trier d'abord par "class", avec Class 1 devant et Class 2 derrière.
  • Au sein d'une même classe, trier ensuite par le score de "math".
  • Utiliserascending=[True, False]pour spécifier des directions de tri différentes pour différentes colonnes.

Exemple 4 : Tri avec des valeurs manquantes

Utiliserna_positionparamètre pour contrôler la position des valeurs manquantes.

Exemple

import pandas as pd
import numpy as np

# Créer un DataFrame avec des valeurs manquantes
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Score': [85, np.nan, 92, 78]
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Par défaut : valeurs manquantes placées en dernier
df_sorted_last = df.sort_values(by='Score')

print("Valeurs manquantes placées à la fin :")
print(df_sorted_last)
print("=" * 50)

# Placer les valeurs manquantes en premier
df_sorted_first = df.sort_values(by='Score', na_position='first')

print("Valeurs manquantes placées au début :")
print(df_sorted_first)

Sortie attendue :

原始数据:
   姓名   成绩
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

Explication du code :

  • Par défaut (na_position='last'), les valeurs manquantes sont placées en dernier.
  • Setna_position='first', et les valeurs manquantes sont placées en premier.

Exemple 5 : Réinitialisation de l'index après le tri

Après le tri, l'index peut devenir discontinu ; vous pouvez utiliserignore_index=Truepour réinitialiser l'index.

Exemple

import pandas as pd

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

print(“Données brutes :”)
print(df)
print("=" * 50)

# Trier sans réinitialiser l'index
df_sorted = df.sort_values(by='Score')

print(Après tri (avec les indices d'origine conservés) :)
print(df_sorted)
print("=" * 50)

# Trier et réinitialiser l'index
df_sorted_reset = df.sort_values(by='Score', ignore_index=True)

print(Après tri (index réinitialisé) :)
print(df_sorted_reset)

Sortie attendue :

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

Explication du code :

  • Utilisationignore_index=TrueEnsuite, l'index est renuméroté à partir de 0.
  • C'est plus pratique lorsque vous devez accéder aux données par index plus tard.

Exemple 6 : Tri personnalisé à l'aide du paramètre key

keyLe paramètre vous permet d'appliquer une fonction personnalisée aux données avant le tri.

Exemple

import pandas as pd

# Créer un DataFrame contenant un mélange de chaînes en majuscules et en minuscules
data = {
    'Word': ['apple', 'Banana', 'cherry', 'APPLE', 'banana']
}
df = pd.DataFrame(data)

print(Données originales :)
print(df)
print("=" * 50)

# Trier par ordre alphabétique croissant (sensible à la casse)
df_sorted_case = df.sort_values(by='Word')

print(Tri alphabétique croissant (sensible à la casse) :)
print(df_sorted_case)
print("=" * 50)

# Utiliser le paramètre key pour obtenir un tri insensible à la casse
df_sorted_nocase = df.sort_values(by='Word', key=lambda x: x.str.lower())

print(Tri alphabétique croissant (insensible à la casse) :)
print(df_sorted_nocase)

Sortie attendue :

原始数据:
    单词
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

Explication du code :

  • Par défaut, le tri est sensible à la casse, les lettres majuscules étant placées avant les lettres minuscules.
  • Utilisationkey=lambda x: x.str.lower()toutes les chaînes sont converties en minuscules avant le tri, ce qui permet un tri insensible à la casse.

Exemple 7 : Modification sur place à l'aide du paramètre inplace

Utilisationinplace=Truevous pouvez modifier directement le DataFrame d'origine.

Exemple

import pandas as pd

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

print(Données originales :)
print(df)
print(fID des données d'origine : {id(df)})
print("=" * 50)

# Trier sur place en utilisant inplace=True
df.sort_values(by='Score', inplace=True)

print(Après le tri avec inplace=True :)
print(df)
print(fID des données triées : {id(df)})

Sortie attendue :

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

Explication du code :

  • Utilisationinplace=Trueensuite, le DataFrame lui-même est modifié, et aucun nouvel objet n'est renvoyé.
  • L'ID avant et après le triidsont identiques, ce qui indique qu'il s'agit du même objet.
  • Cette méthode peut économiser de la mémoire, mais elle modifiera les données d'origine.

Notes

  • sort_values()Par défaut, un nouveau DataFrame est renvoyé et les données d'origine ne sont pas modifiées. Pour modifier sur place, utilisezinplace=Truele paramètre.
  • L'opération de tri n'est pas effectuée sur place (sauf si spécifiéinplace=True), le DataFrame d'origine reste inchangé.
  • Utilisationignore_index=Truepeut réinitialiser l'index, ce qui est plus pratique dans le traitement ultérieur des données.
  • keyLe paramètre est très puissant et peut mettre en œuvre divers tris personnalisés, tels que l'insensibilité à la casse, le tri par valeur absolue, etc.
  • Lors du tri sur plusieurs colonnes,ascendingle paramètre peut être une liste, correspondant un à un avecbyles colonnes dans ...

Pandas 常用函数Fonctions Pandas courantes

Autres extensions