• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Ordenar valores en Pandas

octubre 23, 2023 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 7 minutos

En los DataFrames de Pandas se pueden ordenar los registros en base a los valores es estos utilizando el método sort_values(). Este método permite ordenar en base a una o varias columnas, tanto de forma ascendente como descendente, e indicar cómo se deben tratar los valores nulos. Veamos cómo se puede usar este método para ordenar valores en Pandas, para ello primero se mostrará la sintaxis del método y luego se mostrarán algunos ejemplos.

Tabla de contenidos

  • 1 El método sort_values() de Pandas
  • 2 Ejemplo de uso de sort_values() para ordenar valores en Pandas
    • 2.1 Ordenar los valores de orden descendente
    • 2.2 Ordenar los valores en base a dos columnas
    • 2.3 Ordenar los valores nulos al principio
    • 2.4 Restablecer los índices del DataFrame
  • 3 Conclusiones

El método sort_values() de Pandas

En Pandas el método sort_values() se emplea para ordenar un DataFrame según los valores de una o más columnas. Su sintaxis es la siguiente:

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

El significado de cada uno de los parámetros del método es el siguiente:

  • by: este es el único parámetro obligatorio en el que se debe indicar el nombre de la columna o columnas con las que se desea ordenar el conjunto de datos. En el caso de ordenar solamente por una columna se debe indicar la etiqueta de esta, mientras que si se desea ordenar por dos o más se debe indicar una lista con las etiquetas en el orden que se desea utilizar para ordenar.
  • ascending: con esta opción booleana se puede seleccionar cómo se ordenarán los valores. Por defecto el valor es True y los registros se ordenarán de forma ascendente, en caso de que se desee ordenar los valores de forma descendente se debe indicar el valor False.
  • inplace: a través de esta opción se puede indicar si se creará un nuevo DataFrame ordenado o se modificará el actual. El valor por defecto es False, por lo que se crea un nuevo DataFrame. Al trabajar con grandes conjuntos de datos es recomendable cambiar el valor por defecto a True para no tener en memoria dos copias de los valores. Además, cuando se modifica el DataFrame no es necesario asignar el resultado a una nueva variable.
  • na_position: mediante este parámetro opcional se le indica al método dónde colocar los valores NaN en el DataFrame ordenado. Puede tomar dos valores: 'last' para colocar los NaN al final o 'first' para colocarlos al principio. Por defecto, los NaN se colocan al final.
  • ignore_index: con este parámetro se puede indicar si se deben crear nuevos índices del DataFrame resultante. Por defecto el valor es False, por lo que se mantienen los índices. Para modificarlos es necesario asignar el valor True.
  • kind: usando este parámetro opcional se puede especificar el algoritmo de ordenación a utilizar. El parámetro solamente puede tomar uno de los siguientes valores: ‘quicksort’ (predeterminado), ‘mergesort’, ‘heapsort’ o cualquier función de ordenación válida. El valor predeterminado funciona bien en la mayoría de los casos, por lo que es poco habitual modificarlo, y cada algoritmo tiene diferentes propiedades de rendimiento y estabilidad.
  • axis: mediante este parámetro se puede indicar si se desea ordenar por filas (opción predeterminada) o por columnas (se debe indicar 1). Este es un parámetro poco usado ya que la opción más habitual es la predeterminada.

Publicidad


Ejemplo de uso de sort_values() para ordenar valores en Pandas

El uso básico de sort_values() es ordenar los conjuntos de datos en los DataFrames en base a una columna. Para ello solamente se debe usar el método indicando la columna en base a la cual se desea ordenar los datos. A modo de ejemplo se va a usar el conjunto de datos “planets” de Seaborn que contiene información de los exoplanetas descubiertos hasta 2014. Un conjunto de datos que ya se ha usado varías veces en la serie especial de publicaciones sobre la librería Seaborn. Para importar el conjunto de datos y ordenarlo en base al año de descubrimiento se puede usar el siguiente código.

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
En Analytics Lane
Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

import seaborn as sns
import pandas as pd

# Cargar el dataset "planets" de Seaborn
planets_data = sns.load_dataset("planets")

# Mostrar las primeras filas del dataset sin ordenar
print("Dataset sin ordenar:")
print(planets_data.head())

# Ordenar el dataset por 'year'
planets_data_sorted = planets_data.sort_values(by=['year'])

# Mostrar las primeras filas del dataset ordenado
print("\nDataset ordenado por 'year':")
print(planets_data_sorted.head())
Dataset sin ordenar:
            method  number  orbital_period   mass  distance  year
0  Radial Velocity       1         269.300   7.10     77.40  2006
1  Radial Velocity       1         874.774   2.21     56.95  2008
2  Radial Velocity       1         763.000   2.60     19.84  2011
3  Radial Velocity       1         326.030  19.40    110.62  2007
4  Radial Velocity       1         516.220  10.50    119.47  2009

Dataset ordenado por 'year' y luego por 'orbital_period':
              method  number  orbital_period    mass  distance  year
441  Radial Velocity       1       83.888000  11.680     40.57  1989
942    Pulsar Timing       3       66.541900     NaN       NaN  1992
941    Pulsar Timing       3       25.262000     NaN       NaN  1992
943    Pulsar Timing       3       98.211400     NaN       NaN  1994
16   Radial Velocity       1        4.230785   0.472     15.36  1995

En este ejemplo se han importado las librerías necesarias y el conjunto de datos. A continuación, se muestra el conjunto de datos sin ordenar y el conjunto de datos ordenado en base al año de descubrimiento de los exoplanetas ('year'). Observándose que los datos se ordenan de forma ascendente.

Ordenar los valores de orden descendente

Si se desean mostrar los exoplanetas en base al año de descubrimiento, pero en orden descendente solamente se debe asignar el valor False a la propiedad ascending del método. Esto es lo que se muestra en el siguiente ejemplo.

# Ordenar el dataset por 'year' en orden descendente
planets_data_sorted = planets_data.sort_values(by=['year'], ascending=False)

# Mostrar las primeras filas del dataset ordenado
print("\nDataset ordenado por 'year' en orden descendente:")
print(planets_data_sorted.head())
Dataset ordenado por 'year' y luego por 'orbital_period':
              method  number  orbital_period  mass  distance  year
852          Transit       4        43.84450   NaN       NaN  2014
890          Transit       2         2.42629   NaN       NaN  2014
440  Radial Velocity       1      3827.00000  0.48     20.48  2014
895          Transit       1        68.95840   NaN       NaN  2014
894          Transit       1         2.46502   NaN       NaN  2014

Nótese que en el año 2014 se han descubierto más plantas, por lo que los cinco primeros registros que muestra head() pertenecen todos a este año. Aunque es posible usar otra columna como segundo criterio de ordenación.

Publicidad


Ordenar los valores en base a dos columnas

La ordenación por dos o más columnas se puede obtener indicando en el parámetro by una lista con los nombres de estas. El método ordenara el primer lugar en base a la primera columna indicada y, cuando los valores son similares se ordenará en base a la segunda columna y siguientes. Por ejemplo, se pueden ordenar los datos en base al año ('year') y periodo orbital ('orbital_period') como se muestra a continuación.

# Ordenar el dataset primero por 'year' y luego por 'orbital_period'
planets_data_sorted = planets_data.sort_values(by=['year', 'orbital_period'],
                                               ascending=False)

# Mostrar las primeras filas del dataset ordenado
print("\nDataset ordenado por 'year' y luego por 'orbital_period':")
print(planets_data_sorted.head())
Dataset ordenado por 'year' y luego por 'orbital_period':
              method  number  orbital_period  mass  distance  year
440  Radial Velocity       1          3827.0  0.48     20.48  2014
501  Radial Velocity       2          3452.0  2.58     68.54  2014
893  Radial Velocity       2          3000.0   NaN       NaN  2014
829  Radial Velocity       2          1460.0   NaN       NaN  2014
742  Radial Velocity       4           982.0   NaN       NaN  2014

Obteniendo como resultado un conjunto de datos ordenado por año y en segundo lugar por el pedido orbital. En este caso, los planetas para los que no se conoce el periodo orbital aparecerán al final de la lista, pero este comportamiento se puede cambiar con el parámetro na_position.

Ordenar los valores nulos al principio

Si se asigna al parámetro na_position el valor 'first' los valores con NaN se mostrarán al principio. Lo que se puede ver en el siguiente ejemplo.

# Ordenar el dataset primero por 'year' y 'orbital_period' mostrando NaN al principio
planets_data_sorted = planets_data.sort_values(by=['year', 'orbital_period'],
                                               ascending=False, na_position='first')

# Mostrar las primeras filas del dataset ordenado
print("\nDataset ordenado con valores NaN al principio:")
print(planets_data_sorted.head())
Dataset ordenado por 'year' y luego por 'orbital_period':
                        method  number  orbital_period  mass  distance  year
749  Transit Timing Variations       3             NaN   NaN       NaN  2014
440            Radial Velocity       1          3827.0  0.48     20.48  2014
501            Radial Velocity       2          3452.0  2.58     68.54  2014
893            Radial Velocity       2          3000.0   NaN       NaN  2014
829            Radial Velocity       2          1460.0   NaN       NaN  2014

En este caso el único planeta descubierto en 2014 del que se desconocía el periodo orbital se muestra al principio de la lista.

Publicidad


Restablecer los índices del DataFrame

Por defecto, al reordenar los elementos del DataFrame, los índices se conservan. Para asignar unos nuevos índices se puede usar la propiedad ignore_index, a la que se le debe asignar el valor True. Lo que se puede ver en el siguiente ejemplo.

# Ordenar el dataset por 'year' y restableciendo los índices 
planets_data_sorted = planets_data.sort_values(by=['year'], ignore_index=True)

# Mostrar las primeras filas del dataset ordenado
print("\nDataset ordenado por 'year' y restableciendo los índices:")
print(planets_data_sorted.head())
Dataset ordenado por 'year' y restableciendo los índices:
            method  number  orbital_period    mass  distance  year
0  Radial Velocity       1       83.888000  11.680     40.57  1989
1    Pulsar Timing       3       66.541900     NaN       NaN  1992
2    Pulsar Timing       3       25.262000     NaN       NaN  1992
3    Pulsar Timing       3       98.211400     NaN       NaN  1994
4  Radial Velocity       1        4.230785   0.472     15.36  1995

Nótese que ahora los índices comienzan por 0 y están ordenados. No como antes cuando se conservaban los valores originales.

Conclusiones

En esta entrada se ha visto la sintaxis del método de los DataFrames sort_values() con el que se puede ordenar valores en Pandas. Un método que es extremadamente útil para el preprocesado de los datos. Se ha visto cómo ordenar los valores en base una columna, a varias columnas y cambiar el método de ordenación. Además, se ha visto cómo modificar la prioridad de los valores NaN y restablecer los índices del DataFrame. Con lo que se ha cubierto la mayoría de posibles las aplicaciones de este método.

Image by Džoko Stach from Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • Cómo solucionar problemas de red en VirtualBox: Guía completa publicado el junio 11, 2025 | en Herramientas
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • La tabla de la web finalmente importada en Excel Importar tablas desde la web en Excel publicado el octubre 21, 2020 | en Herramientas
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto