Como Classificar Pandas DataFrame pelos Valores de uma Coluna
-
Ordem de classificação do
Dataframe
- Argumentoascending
-
Ordem de ordenação - Argumento
na_position
Introduziremos o método pandas.DataFrame.sort_values
para ordenar os valores dataframe
, e suas opções como ascending
para especificar a ordem de ordenação e na_position
que determina a posição de NaN
no resultado ordenado.
Considere o seguinte dataframe
,
import pandas as pd
df = pd.DataFrame({
'col1': ['g', 't', 'n', 'w', 'n', 'g'],
'col2': [5, 2, 5, 1, 3, 6],
'col3': [0, 7, 2, 8,1, 2],
})
print(df)
Se você executar este código, obterá a saída como segue, que ainda não está classificada.
col1 col2 col3
0 g 5 0
1 t 2 7
2 n 5 2
3 w 1 8
4 n 3 1
5 g 6 2
Agora poderíamos ordenar o dataframe
com os códigos abaixo.
import pandas as pd
df = pd.DataFrame({
'col1': ['g', 't', 'n', 'w', 'n', 'g'],
'col2': [5, 2, 5, 1, 3, 6],
'col3': [0, 7, 2, 8,1, 2],
})
print(df.sort_values(by=['col1']))
Classificamos o dataframe
por col1
. Depois de executar o código acima, você obterá a seguinte saída.
col1 col2 col3
0 g 5 0
5 g 6 2
2 n 5 2
4 n 3 1
1 t 2 7
3 w 1 8
Também podemos utilizar mais de uma coluna para ordenação. Vamos mudar a última linha dos códigos acima como a seguir,
print(df.sort_values(by=['col1','col2']))
Resultado:
col1 col2 col3
0 g 5 0
5 g 6 2
4 n 3 1
2 n 5 2
1 t 2 7
3 w 1 8
Agora o dataframe
também é classificado por col2
.
Ordem de classificação do Dataframe
- Argumento ascending
Por padrão, a ordenação está em ordem ascendente. Para ordenar dataframe
em ordem decrescente, precisamos colocar a bandeira ascending=false
.
print(df.sort_values(by=['col1','col2'], ascending=False))
Resultado:
col1 col2 col3
3 w 1 8
1 t 2 7
2 n 5 2
4 n 3 1
5 g 6 2
0 g 5 0
Ordem de ordenação - Argumento na_position
A posição na_position
especifica a posição de NaN
após a classificação, ou seja, last
coloca NaN
no final. Seu valor padrão é first
que coloca NaN
no início do resultado ordenado.
Considere o seguinte dataframe
,
import numpy as np
import pandas as pd
s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position='last'))
Depois de executar o código, obteremos a seguinte saída.
1 2.0
2 4.0
4 7.0
3 10.0
0 NaN