• 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

Diferentes formas de ordenar dataframes en pandas

abril 29, 2019 Por Daniel Rodríguez 2 comentarios
Tiempo de lectura: 5 minutos

Una vez importado un conjunto de datos en pandas puede ser interesante ordenar el contenido de estos. Lo más habitual es ordenarlo en base a los valores de una o varias columnas. Para ordenar dataframes en pandas se pueden utilizar los métodos nativos de estos objetos. Lo que permite hacer esta tarea de un forma sencilla y eficiente.

En esta entrada se va a utilizar el conjunto de datos planetas que se puede encontrar dentro de los conjuntos de datos de seaborn. La importación de estos datos se puede realizar con el siguiente código.

from seaborn import load_dataset
planets = load_dataset("planets")
planets.head()

Siendo los cinco primeros registros de este conjunto de datos.

            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

Tabla de contenidos

  • 1 Ordenar en base al valor de una columna
  • 2 Ordenar en base al valor de una columna en orden descendente
  • 3 Tener en cuenta los nulos a la hora de ordenar
  • 4 Ordenar el propio dataframe
  • 5 Ordenar el dataframe en base al índice
  • 6 Ordenar por los valores de más de una columna
  • 7 Conclusiones

Ordenar en base al valor de una columna

La primera tarea siempre es ordenar los conjuntos de datos en base a los valores de una columna. Por ejemplo, se puede ordenar los planetas en base al año de descubrimiento. Lo que se puede conseguir con el método sort() al que se le ha de indicar el nombre de la columna por la que ordenar. Esto se puede ver en el siguiente ejemplo.

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

by_year = planets.sort_values('year')
by_year.head()
              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

Lo primero que se puede observar es el hecho de que los registros se ordenan de forma ascendente. Por lo que los planetas descubiertos recientemente aparecerán al final del nuevo conjunto de datos.

by_year.tail()
      method  number  orbital_period  mass  distance  year
846  Transit       2        15.96540   NaN       NaN  2014
847  Transit       2       179.61200   NaN       NaN  2014
849  Transit       4         6.16486   NaN       NaN  2014
851  Transit       4        23.98020   NaN       NaN  2014
840  Transit       3        35.33310   NaN       NaN  2014

Publicidad


Ordenar en base al valor de una columna en orden descendente

En el ejemplo anterior, si se quiere tener al principio del conjunto de datos ordenado es necesario cambiar el método de ordenación. Para ello existe la propiedad ascending que indica si se ordena de forma ascendente. El valor por defecto de esta propiedad es verdadero, por lo que solamente es necesario indicar el valor cuando se desea ordenar en orden descendente. Así para ordenar los planetas por año en orden descendente se puede es necesario escribir.

by_year = planets.sort_values('year',ascending=False)
by_year.head()

En donde se observa el resultado deseado.

              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

Tener en cuenta los nulos a la hora de ordenar

Si en la columna del conjunto de datos que se esté ordenando existe valores nulos, por defecto estos serán puestos al final. La columna periodo orbital contiene valores nulos, al ordenar por ésta se obtiene.

by_period = planets.sort_values('orbital_period')
by_period.head()
                            method  number  orbital_period  mass  distance  year 
945                  Pulsar Timing       1        0.090706   NaN    1200.0  2011 
787  Orbital Brightness Modulation       2        0.240104   NaN    1180.0  2011 
788  Orbital Brightness Modulation       2        0.342887   NaN    1180.0  2011 
794                        Transit       1        0.355000   NaN       NaN  2013 
730                        Transit       3        0.453285   NaN      38.7  2011 

Pudiéndose comprobar fácilmente que los nulos se sitúan nulos al final.

by_period.tail()
       method  number  orbital_period  mass  distance  year
949   Imaging       1             NaN   NaN     120.0  2013
950   Imaging       1             NaN   NaN       NaN  2010
957   Imaging       1             NaN   NaN       NaN  2008
1027  Imaging       1             NaN   NaN      19.2  2011
1029  Imaging       1             NaN   NaN      10.1  2012

Para modificar el orden existe la propiedad na_position en la que se puede indicar si estos han de estar la principio. Así, para que los nulos sean los primero simplemente se ha de ejecutar la siguiente línea.

by_period = planets.sort_values('orbital_period', na_position='first')
by_period.tail()
      method  number  orbital_period  mass  distance  year
900  Imaging       1         40000.0   NaN       NaN  2011
644  Imaging       4         69000.0   NaN     39.94  2008
643  Imaging       4        170000.0   NaN     39.94  2008
68   Imaging       1        318280.0   NaN      7.69  2008
937  Imaging       1        730000.0   NaN       NaN  2006

Publicidad


Ordenar el propio dataframe

En los ejemplos anteriores se puede ver que al ordenarse los datos se ha creado en todo momento un objeto nuevo. En caso de que no se desee este comportamiento se puede indicar mediante la opción inplace que se ordene el propio objeto. Con lo que se evita aumentar la memoria consumida por el programa. Así para ordenar por año en el propio objeto se puede emplear.

planets.sort_values('year', inplace=True)
planets.head()
              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

Ordenar el dataframe en base al índice

En el caso de querer volver a la situación original se puede ordenar el conjunto de datos en base al índice. Lo que requiere utilizar la propiedad sort_index(), al que por defecto no hay que pasarle ningún parámetro.

planes_sort = planets.sort_index()
planes_sort.head()
            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

Véase que en este caso los registros se ordenan en base al valor del índice.

Publicidad


Ordenar por los valores de más de una columna

Finalmente puede ser necesario ordenar los valores por más de una columna. Primero por una y luego por otra. Esto se puede hacer indicando al método sort_values() un vector de columnas en lugar de una cadena de texto. Por ejemplo, se pueden ordenar los planetas por año y periodo orbital el siguiente resultado.

by_year_period = planets.sort_values(['year', 'orbital_period'])
by_year_period.head()
              method  number  orbital_period    mass  distance  year
441  Radial Velocity       1       83.888000  11.680     40.57  1989
941    Pulsar Timing       3       25.262000     NaN       NaN  1992
942    Pulsar Timing       3       66.541900     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 se puede ver que los planetas descubiertos en el 1992 hay dos que están ordenados por su periodo.

Conclusiones

Saber ordenar dataframes en pandas permiten realizar muchos análisis básicos con los que realizar descubrimientos. Hoy se han visto los métodos disponibles en pandas para realizar esta tarea.

La importancia de saber ordenar conjuntos de datos se puede observar porque todas las plataformas cuentan con estas herramientas. Por ejemplo, en R también existen herramientas para ordenar los conjuntos de datos. O las herramientas que existen en Python para ordenar diccionarios.

Imágenes: Pixabay (Katzenfee50)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

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

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

Comentarios

  1. jose dice

    mayo 16, 2022 a las 12:34 pm

    Hola, como lo harías si quisieras ordenar por la cantidad de elementos de la primera columna, es decir, si hay mas columnas de Pulsar Timing que de Radial Velocity

    Responder
    • Daniel Rodríguez dice

      mayo 16, 2022 a las 1:15 pm

      No entiendo el problema, ¿contar el número de ocurrencias y ordenar en base a ese valor? En ese caso una posible solución sería crear una nueva columna con este valor y ordenar en base a esa.

      Responder

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

  • Aprovecha un 40% de descuento en Coursera Plus para impulsar tus habilidades en Ciencia de Datos e Inteligencia Artificial publicado el noviembre 9, 2024 | en Noticias, Reseñas
  • Entendiendo la validación cruzada: Selección de la profundidad óptima en un árbol de decisión publicado el septiembre 13, 2024 | en Ciencia de datos
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos
  • Listado de contraseñas de aplicación creadas Resolver problema de credenciales en Bitbucket publicado el marzo 16, 2022 | 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