• 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
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

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

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.

1200 publicaciones en Analytics Lane
En Analytics Lane
1200 publicaciones en Analytics Lane

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

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

Publicidad


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

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?

Publicaciones relacionadas

  • 1200 publicaciones en Analytics Lane
  • Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas
  • Analytics Lane lanza su Conversor de Bases Numéricas: entiende cómo trabajan los ordenadores a nivel de bits
  • Analytics Lane lanza su Visualizador de Series Temporales: entiende tendencia, estacionalidad y ruido de forma visual e interactiva
  • Analytics Lane lanza un nuevo Formateador y Tester de Expresiones Regulares para desarrolladores
  • Analytics Lane lanza un Conversor CSV ↔ JSON para transformar datos en tiempo real
  • Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring
  • Analytics Lane lanza una Calculadora de Rentabilidad con Flujos Irregulares basada en TIR (XIRR)
  • ¡Analytics Lane cumple ocho años!

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

Ley de Benford: cómo detectar datos manipulados con ejemplos reales

mayo 28, 2026 Por Daniel Rodríguez

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

mayo 26, 2026 Por Daniel Rodríguez

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

mayo 21, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Seleccionar la opción para compactar la base de datos en Microsoft SQL Server Manager Studio Reducir el tamaño en SQL Server de una base de datos publicado el febrero 10, 2023 | en Herramientas
  • Entendiendo las Cópulas en estadística publicado el junio 7, 2024 | en Ciencia de datos
  • Creación de gráficos de barras y gráficos de columnas con Seaborn publicado el julio 18, 2023 | en Python
  • Excel en Python Guardar y leer archivos Excel en Python publicado el julio 30, 2018 | en Python
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python

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.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • 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

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-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto