1. Description de la méthode DataFrame.sorte_values()
La méthode DataFrame.sorte_values() permet de trier un DataFrame pandas selon l'étiquette passée en paramètres. La méthode DataFrame.sorte_values() possède un certain nombre de paramètres comme le trie croissant ou décroissant etc.
2. Syntaxe de la méthode DataFrame.sorte_values()
1 |
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None) |
Cette méthode prend les paramètres by, axis, ascending, inplace, kind, na_position, ignore_index et key et renvoie un DataFrame trié. Utilisez inplace=True param pour appliquer le tri sur DataFrame existant. Pour spécifier l'ordre, vous devez utiliser la propriété booléenne ascendante ; False pour décroissant et True pour croissant. Par défaut, il est défini sur True.
3. Exemple d'usage de la méthode DataFrame.sorte_values()
Exemple1 (Trier par age croissant ou décroissant )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import pandas as pan dictData = {'ID' : [231, 711, 312 , 113 , 123] , 'Nom': ['Ema', 'Robert', 'Rose' , 'Arthur' , 'Paul'], 'Age': [22, 21, 19 , 20 , 23], 'Taille': [170, 190, 181 , 175 , 165]} df = pan.DataFrame(dictData , index=[35 , 55 , 43 , 11 , 7]) # Trier le DataFrame par age croissant print(df.sort_values(['Age'])) print('-------------------------------') # Trier le DataFrame par age décroissant ascending=False print(df.sort_values(['Age'] , ascending=False)) """ output: ID Nom Age Taille 43 312 Rose 19 181 11 113 Arthur 20 175 55 711 Robert 21 190 35 231 Ema 22 170 7 123 Paul 23 165 ------------------------------- ID Nom Age Taille 7 123 Paul 23 165 35 231 Ema 22 170 55 711 Robert 21 190 11 113 Arthur 20 175 43 312 Rose 19 181 """ |
Remarque
Parfois, on souhaite faire une nouvelle indexation sur le résultat du tri, on peut le faire lors du tri en utilisant le parmètre ignore_index=True ou bien en appelant pandas.DataFrame.reset_index() sur le DataFrame trié.
Exemple2 (trier le dataframe avec réindexation)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pandas as pan dictData = {'ID' : [231, 711, 312 , 113 , 123] , 'Nom': ['Ema', 'Robert', 'Rose' , 'Arthur' , 'Paul'], 'Age': [22, 21, 19 , 20 , 23], 'Taille': [170, 190, 181 , 175 , 165]} df = pan.DataFrame(dictData , index=[35 , 55 , 43 , 11 , 7]) # Trier le DataFrame par age croissant avec réindexation print(df.sort_values(['Age'] , ignore_index=True)) """ output: ID Nom Age Taille 0 312 Rose 19 181 1 113 Arthur 20 175 2 711 Robert 21 190 3 231 Ema 22 170 4 123 Paul 23 165 """ |
Remarque
Avec le trie selon une étiquette passée en paramètres, on se trouve parfois confronté à un problèmes de deux ou plusieurs valeurs identiques, comme par exemple deux étudiant qui on même age! Lequel doit être placé le premier! Dans ce cas on fait le trie sur deux ou plusieurs étiquettes.
L'exemple suivant présente deux étudiants qui ont même age: Athur et Rose! Nous devons ajouter l'étiquette 'ID' comme paramètre de trie:
Exemple (Trie selon 'Age' et 'ID')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pandas as pan dictData = {'ID' : [231, 711, 312 , 113 , 123] , 'Nom': ['Ema', 'Robert', 'Rose' , 'Arthur' , 'Paul'], 'Age': [22, 21, 20, 20 , 23], 'Taille': [170, 190, 181 , 175 , 165]} df = pan.DataFrame(dictData , index=[35 , 55 , 43 , 11 , 7]) # Trier le DataFrame par age croissant avec réindexation print(df.sort_values(['Age' , 'ID'] )) """ output: ID Nom Age Taille 11 113 Arthur 20 175 43 312 Rose 20 181 55 711 Robert 21 190 35 231 Ema 22 170 7 123 Paul 23 165 """ |
Younes Derfoufi
CRMEF OUJDA