Función Pandas DataFrame DataFrame.sort_values()

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.sort_values():
  2. Códigos de ejemplo: Ordena el DataFrame con Pandas pandas.DataFrame.sort_values() basado en una sola columna
  3. Códigos de ejemplo: Ordenar DataFrame con Pandas DataFrame.sort_values() Basado en múltiples columnas
  4. Códigos de ejemplo: Ordenar DataFrame en orden descendente con Pandas DataFrame.sort_values()
  5. Códigos de ejemplo: Ordena DataFrame poniendo primero a NaN con Pandas DataFrame.sort_values()
Función Pandas DataFrame DataFrame.sort_values()

El método de Pandas DataFrame.sort_values() ordena el llamador DataFrame en orden ascendente o descendente por los valores de la columna especificada a lo largo de cualquiera de los índices.

La sintaxis de pandas.DataFrame.sort_values():

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

Parámetros

by Nombre o lista de nombres para ordenar por
axis ordenar a lo largo de la fila (axis=0) o fila (axis=1)
ascending ordenados en orden ascendente (ascending=True) o descendente (ascending=True).
inplace Booleana. Si es True, modifica la llamada DataFrame en su lugar.
kind qué algoritmo de clasificación usar. default: quicksort
na_position Ponga el valor NaN al principio (na_position=first) o al final (na_position=last).
ignore_index Booleana. Si True, los índices del DataFrame original son ignorados. El valor por defecto es False, lo que significa que los índices son usados.

Retorna

Si inplace es True, devuelve el DataFrame clasificado; si no, None.

Códigos de ejemplo: Ordena el DataFrame con Pandas pandas.DataFrame.sort_values() basado en una sola columna

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)

Resultado:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
       Date  Sales  Price
1  April-11    300      1
2  April-12    400      2
5  April-16    300      2
0  April-10    200      3
4  April-14    300      3
3  April-13    200      4

Ordena el DataFrame df en orden ascendente (por defecto) por los valores de la columna Price.

Los índices en el DataFrame clasificado se mantienen igual que en el DataFrame original.

Si prefieres tener la nueva columna de índices en el DataFrame ordenado, entonces puedes poner ignore_index (introducido a partir de la versión 1.0.0) como True.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]

df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")

Resultado:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-11    300      1
1  April-12    400      2
2  April-16    300      2
3  April-10    200      3
4  April-14    300      3
5  April-13    200      4

Aquí, usamos ignore_index=True para asignar nuevos índices a las filas e ignorar el índice del DataFrame original.

Códigos de ejemplo: Ordenar DataFrame con Pandas DataFrame.sort_values() Basado en múltiples columnas

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
               ignore_index=True,
               inplace=True)
print("After Sorting:")
print(df)

Resultado:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-13    200      4
2  April-11    300      1
3  April-16    300      2
4  April-14    300      3
5  April-12    400      2

Aquí, al principio, Sales se ordena primero en el orden ascendente, y luego Price para cada Sales también se ordena en el orden ascendente.

En el df, 200 es el valor más pequeño de la columna Sales y l es el valor más pequeño de la columna Price para el valor de Sales de alo.

Así, la fila con 200 en la columna Sales y l en el Price va a la parte superior.

Debido a inplace=True, el DataFrame original se modifica después de llamar a la función sort_values().

Códigos de ejemplo: Ordenar DataFrame en orden descendente con Pandas DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
                         ignore_index=True,
                         ascending=False)
print("After Sorting:")
print(sorted_df)

Resultado:


Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-12    400      2
1  April-11    300      1
2  April-14    300      3
3  April-16    300      2
4  April-10    200      3
5  April-13    200      4

Ordena el DataFrame df en el orden descendente de los valores de la columna Sales.

400 es el mayor valor de la columna Sales, por lo que la entrada va al principio, y las otras filas se ordenan en consecuencia.

Códigos de ejemplo: Ordena DataFrame poniendo primero a NaN con Pandas DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)

Resultado:

Before Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-11    300    1.0
2  April-12    400    2.0
3  April-13    200    4.0
4  April-14    300    3.0
5  April-16    300    NaN
After Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-16    300    NaN
2  April-11    300    1.0
3  April-12    400    2.0
4  April-14    300    3.0
5  April-13    200    4.0

Por defecto, los valores NaN se colocan al final de DataFrame después de la clasificación.

Pero al establecer na_position=first, podemos colocar los valores NaN al principio de DataFrame.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame