Résumé du tri Python (liste, type de dictionnaire, série, DataFrame)

J'utilise souvent le tri, mais il y a quelques différences selon le type, je vais donc le résumer. Je vais résumer chacun par liste, type de dictionnaire, série et DataFrame.

Je pense qu'il y a d'autres façons de le faire. Si vous avez des recommandations, veuillez nous en informer.

liste

Je pense que la méthode de tri est la plus simple. Si vous connaissez également la méthode triée, vous pouvez répondre de manière flexible. Notez que la méthode triée n'apporte aucune modification à la liste elle-même et renvoie la liste triée en tant que valeur de retour.

Tri croissant

méthode de tri

lst = [3, 5, 2, 9, 0, 4]
lst.sort()
print(lst)
#=> [0, 2, 3, 4, 5, 9]

fonction triée

lst = [3, 5, 2, 9, 0, 4]
lst = sorted(lst)
print(lst)
#=> [0, 2, 3, 4, 5, 9]

Tri décroissant

méthode de tri

lst_rvs = [3, 5, 2, 9, 0, 4]
lst_rvs.sort()
lst_rvs.reverse()
print(lst_rvs)
#=> [9, 5, 4, 3, 2, 0]

fonction triée

lst = [3, 5, 2, 9, 0, 4]
lst = sorted(lst, key=lambda x: -x)
print(lst)
#=> [9, 5, 4, 3, 2, 0]

Sorte de dictionnaire

tri croissant par clé

Utilisez la fonction triée également utilisée dans la liste. Une chose à noter à propos du type de dictionnaire est que la liste est renvoyée en tant que valeur de retour.

dct = { 2: 3, 3: 4, 1: 2, 0: 8, 4: 2 }
dct = sorted(dct.items())
print(dct)
#=> [(0, 8), (1, 2), (2, 3), (3, 4), (4, 2)]

Je pense qu'il est facile d'imaginer l'utiliser comme suit.

dct = { 2: 3, 3: 4, 1: 2, 0: 8, 4: 2 }
for k, v in sorted(dct.items()):
    print(str(k) + ": " + str(v))
0: 8
1: 2
2: 3
3: 4
4: 2

Ci-après, le type de dictionnaire sera expliqué dans le format de sortie de l'instruction for.

tri descendant par clé

dct = {2: 3, 3: 4, 1: 2, 0: 8, 4: 2}
for k, v in sorted(dct.items(), key=lambda x: -x[0]):
    print(str(k) + ": " + str(v))
4: 2
3: 4
2: 3
1: 2
0: 8

valeur Tri croissant

dct = {2: 3, 3: 4, 1: 2, 0: 8, 4: 2}
for k, v in sorted(dct.items(), key=lambda x: x[1]):
    print(str(k) + ": " + str(v))
1: 2
4: 2
2: 3
3: 4
0: 8

valeur Tri décroissant

dct = {2: 3, 3: 4, 1: 2, 0: 8, 4: 2}
for k, v in sorted(dct.items(), key=lambda x: -x[1]):
    print(str(k) + ": " + str(v))
0: 8
3: 4
2: 3
1: 2
4: 2

Series (pandas)

index tri croissant

from pandas import Series
ser = Series({2: 3, 3: 4, 1: 2, 0: 8, 4: 2})
ser = ser.sort_index()
print(ser)
0    8
1    2
2    3
3    4
4    2
dtype: int64

index Tri décroissant

from pandas import Series
ser = Series({2: 3, 3: 4, 1: 2, 0: 8, 4: 2})
ser = ser.sort_index(ascending=False)
print(ser)
4    2
3    4
2    3
1    2
0    8
dtype: int64

valeur Tri croissant

from pandas import Series
ser = Series({2: 3, 3: 4, 1: 2, 0: 8, 4: 2})
ser = ser.sort_values()
print(ser)
1    2
4    2
2    3
3    4
0    8
dtype: int64

valeur Tri décroissant

from pandas import Series
ser = Series({2: 3, 3: 4, 1: 2, 0: 8, 4: 2})
ser = ser.sort_values(ascending=False)
print(ser)
0    8
3    4
2    3
4    2
1    2
dtype: int64

DataFrame (pandas)

Trier par étiquette

index ordre croissant

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_index()
print(df)
   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                4      3
   HP  Attack  Defence  Special Attack  Special Defence  Speed
1   9       3        1               6                4      3
2   3       4        2               8                2      3
3   3       5        1               9                4      2

ordre décroissant d'index

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_index(ascending=False)
print(df)

   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                3      3
   HP  Attack  Defence  Special Attack  Special Defence  Speed
3   3       5        1               9                4      2
2   3       4        2               8                2      3
1   9       3        1               6                3      3

ordre croissant des colonnes

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_index(axis=1)
print(df)
   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                4      3
   Attack  Defence  HP  Special Attack  Special Defence  Speed
2       4        2   3               8                2      3
3       5        1   3               9                4      2
1       3        1   9               6                4      3

ordre décroissant des colonnes

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_index(axis=1, ascending=False)
print(df)
   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                3      3
   Speed  Special Defence  Special Attack  HP  Defence  Attack
2      3                2               8   3        2       4
3      2                4               9   3        1       5
1      3                3               6   9        1       3

Trier par valeur

valeur de colonne spécifiée dans l'ordre croissant

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_values(by="Special Defence")
print(df)

   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                3      3
   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
1   9       3        1               6                3      3
3   3       5        1               9                4      2

valeur de colonne spécifiée dans l'ordre décroissant

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2,3,1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_values(by="Special Defence", ascending=False)
print(df)
   HP  Attack  Defence  Special Attack  Special Defence  Speed
2   3       4        2               8                2      3
3   3       5        1               9                4      2
1   9       3        1               6                3      3
   HP  Attack  Defence  Special Attack  Special Defence  Speed
3   3       5        1               9                4      2
1   9       3        1               6                3      3
2   3       4        2               8                2      3

spécification d'index

from pandas import DataFrame
df = DataFrame([[3, 4, 2, 8, 2, 3], [3, 5, 1, 9, 4, 2], [9, 3, 1, 6, 3, 3]], index=[2, 3, 1], columns=["HP", "Attack", "Defence", "Special Attack", "Special Defence", "Speed"])
print(df)
df = df.sort_values(by=3, axis=1)
print(df)
ValueError: When sorting by column, axis must be 0 (rows)

Je pourrais le faire avec ça, mais je ne peux pas. .. BUG/ENH: sort_values(by=index_label, axis=1)

Je vois, je ne peux pas le faire maintenant. Il semble que ce sera possible avec la prochaine mise à jour majeure de la version. Date prévue le 31 août 2017 (au 15 juillet 2016)

référence

Trier le dictionnaire Python (type dict) par valeur de valeur Trier COMMENT (document) Astuces Python: je souhaite trier le contenu d'un type dict (dictionnaire) pandas.Series.sort_index pandas.Series.sort_values pandas.DataFrame.sort_index pandas.DataFrame.sort_values

Recommended Posts

Résumé du tri Python (liste, type de dictionnaire, série, DataFrame)
Résumé des opérations de liste Python3
Comment écrire un type liste / dictionnaire de Python3
Grammaire de base de la série Python3 (liste, tapple)
Résumé des méthodes intégrées, etc. de la liste Python
Résumé de l'utilisation de la liste Python
Liste des opérations de base de Python3 list, tapple, dictionnaire, set
Comment obtenir des éléments de type dictionnaire de Python 2.7
Fonctionnement de base de Python Pandas Series et Dataframe (1)
Liste des modules python
Mémo de type Liste / Dictionnaire Python3
[Mémo] Tri de liste Python3
Résumé des arguments Python
[Python] Erreur de type: résumé des causes et des solutions pour "Aucun type"
Résumé des méthodes de prétraitement pour les débutants en Python (trame de données Pandas)
[Python] Résumé de la méthode de création de table utilisant DataFrame (pandas)
Liste Python, pour instruction, dictionnaire
résumé lié à l'opération de fichier python
Python - Vérifiez le type de valeurs
Mémo récapitulatif des types de données Python
[Python] Copie d'une liste multidimensionnelle
[python] Résumé de la récupération des listes et des éléments du dictionnaire
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Enregistrement d'apprentissage (6ème jour) #Set type #Dictionary type #Conversion automatique de l'ensemble de taples de liste #ndarray type #Pandas (type DataFrame)
[Python] Mémo d'opération de pandas DataFrame
Extension du dictionnaire python par argument
Python pour les super débutants Super débutants Python # dictionnaire type 1
Diviser timedelta dans la série Python 2.7
Un bref résumé de la collection Python
Convertir la liste en DataFrame avec python
Grammaire de base du système Python3 (dictionnaire)
Python pour les super débutants Super débutants Python # dictionnaire type 2
À propos de la liste de base des bases de Python
Résumé des index et des tranches Python
[OpenCV; Python] Résumé de la fonction findcontours
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Résumé de l'utilisation des pandas
[Django] Convertir l'ensemble de requêtes en liste de types de dict
Afficher une liste d'alphabets en Python 3
Résumé de diverses instructions for en Python
[Python] Accélère le chargement du fichier CSV de séries chronologiques
[Python2.7] Résumé de l'utilisation d'unittest
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
[Introduction à l'application Udemy Python3 +] 24. Type de dictionnaire
Résumé des techniques utiles de Scrapy en Python
Introduction facile de la série python3 et d'OpenCV3
[Python2.7] Résumé de l'utilisation du sous-processus
Résumé de la spécification des options d'axe de Python "numpy.sum (...)"
[Introduction à l'application Udemy Python3 +] 16. Type de liste
[Python] Obtenir une liste de dossiers uniquement
Pour accélérer python, résumez la quantité de calcul du type de collection (liste / tuple / dictionnaire / ensemble) pour chaque objectif.
Ne spécifiez pas un objet mutable (type de liste, type de dictionnaire, etc.) comme valeur initiale de l'argument de fonction de python.
Résumé Python
[Python] Créer une liste de date et d'heure (type datetime) pour une certaine période