Désolé, je pense qu'il me manque quelque chose de très fondamental ici:
>>> Series([3,4,0,3]).sort()
sorties Aucune, tandis que
>>> Series([3,4,0,3]).order()
2 0
0 3
3 3
1 4
dtype: int64
qu'est-ce qui me manque avec sort ()?
Merci
EDIT:
Merci pour les réponses, je réalise maintenant que le tri est en place. Mais je ne comprends pas pourquoi
>>> s = Series([3,4,0,3]).sort()
>>> s
ne retourne pas la série triée. Si je comprends bien le manuel il devrait renvoyer la série triée sur place.
.sort()
trie in-place .
Cela signifie qu’après avoir appelé .sort()
, votre tableau existant a été trié. Il ne retourne rien.
Pour prendre un exemple de "noyau" Python:
In [175]: L = [2, 3, 1, 5]
In [176]: L.sort()
In [177]: print(L)
[1, 2, 3, 5]
C'est la même chose pour les Pandas, documentée par Pandas.sort :
Trier les valeurs et les étiquettes d'index par valeur, à la place. Pour la compatibilité avec l'API ndarray. Aucune valeur de retour
Voir aussi:Quelle est la différence entre Series.sort () et Series.order ()?
In [1]: import pandas as pd
In [2]: s = pd.Series([3,4,0,3]).sort()
In [3]: s
En effet, In [3]
ne restituera rien, comme vous pouvez le vérifier:
In [4]: type(s)
Out[4]: NoneType
La raison:
pd.Series([3,4,0,3])
renvoie en effet un objet de type pandas Series
, MAIS Series.sort()
, méthode ne renvoie rien à cause de inplace le tri. Ainsi, l'expression s = pd.Series([3,4,0,3]).sort()
, s
dans LHS n'obtient rien à partir de RHS, donc In [3]: s
ne génère rien.
Après la version 0.17.0 , le tri par valeur méthodes pandas.Series.sort()
et pandas.Series.order()
sont DEPRECATED, remplacés par unpandas.Series.sort_values()
API unifié. Voir cette réponse pour plus de détails.
Les deux .sort () et order () les fonctions sontOBSOLÈTES
.sort_values () function est le remplacement et voici un exemple d'utilisation.
Exemple:
import numpy as np
import pandas as pd
arr = np.array([1,3,4,2])
series = pd.Series(arr)
Ordre croissant
Équivalent à la fonction .order () des anciennes versions.
ascending = series.sort_values()
Ordre décroissant
Équivalent à .order (ascending = False)
descending = series.sort_values(ascending=False)
In Place
Équivalent à .sort () d'anciennes versions.
series.sort_values(inplace=True)
Pour plus d'informations, consultez la documentation officielle ici
Comme avec la plupart des autres itérables en python, Series.sort () ne renvoie en réalité que le tri de la série à la place. Voir par exemple le tri d'une liste python:
In [2]: foo = [5, 3, 9]
In [3]: foo.sort()
In [4]: foo
Out[4]: [3, 5, 9]