• 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

Segmentar datos numéricos en Pandas con la función cut()

noviembre 6, 2023 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

Al trabajar con datos numéricos, para facilitar su análisis e interpretación, puede ser necesario agrupar estos en intervalos de valores discretos. Lo que permite convertir datos numéricos en categorías o clases. La función cut permite segmentar datos numéricos en Pandas de una manera sencilla.

Descripción de la función cut() de Pandas

La función cut() de Pandas permite dividir los valores numéricos de la series de datos en contenedores o bins, donde cada uno de estos bins representa un intervalo de valores. Lo que permite categorizar los datos de una forma significativa. Algo que es especialmente útil durante las fases de análisis y visualización de los datos, ya que permite representar la información de una manera más clara.

Publicidad


Uso básico de la función cut() de Pandas

La función cut() de Pandas requiere que se le indiquen dos parámetros para poder funcionar: los valores que se desea segmentar y los límites de los contenedores o bins. En ambos casos se pueden usar cualquier elemento que represente una serie de listas.

A modo de ejemplo, para ver el funcionamiento de esta función se puede usar el conjunto de datos planets de Seaborn que contiene diferentes características de exoplanetas (un conjunto que ya se ha usado para explicar cómo ordenar valores o crear gráficos de correlación). Como puede ser la columna mass que incluye la masa de los exoplanetas. Si se desea segmentar los registros en base a la masa solamente se tiene que definir un rango de valores y llamar a la función cut() para que realice la tarea. Esto es lo que se hace 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

import seaborn as sns
import pandas as pd

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

# Definición de las categorias de masa
mass_bins = [0, 2, 5, 10, 50]

# Uso de la función cut para segmentar los planetas por masa
mass = pd.cut(planets_data['mass'], mass_bins)

print(mass)
0        (5.0, 10.0]
1         (2.0, 5.0]
2         (2.0, 5.0]
3       (10.0, 50.0]
4       (10.0, 50.0]
            ...     
1030             NaN
1031             NaN
1032             NaN
1033             NaN
1034             NaN
Name: mass, Length: 1035, dtype: category
Categories (4, interval[int64, right]): [(0, 2] < (2, 5] < (5, 10] < (10, 50]]

En donde en primer lugar se importan las librerías y se carga el conjunto de datos. Posteriormente se define mediante una lista los rangos de categorías para la masa, se llama a la función cut() para segmentar los datos y, finalmente, se muestra el resultado. En dónde se puede ver una serie en la que a cada uno de los registros se le asigna un rango ((0, 2], (2, 5], (5, 10], (10, 50]) o NaN cuando los valores no caen dentro los rangos definidos o son son nulos.

Por defecto los rangos incluyen los valores por la derecha y no por la izquierda. Esto es, el rango (2, 5] incluye los planetas con masa mayor de 2, pero no 2, hasta 5 incluido. Un comportamiento que se puede cambiar asignado el valor falso a la propiedad right para que se incluyan los valores por la izquierda.

Ahora se puede usar la función value_counts() de Pandas para contabilizar el número de registros en cada uno de los segmentos.

pd.value_counts(mass)
(0, 2]      333
(2, 5]       95
(5, 10]      55
(10, 50]     30
Name: mass, dtype: int64

Personalización de las etiquetas

Usar directamente los valores de los rangos puede ser algo poco intuitivo, por lo que se le pueden asignar etiquetas personalizadas cuando se realiza la segmentación. Para lo que la función cut() dispone de la propiedad labels. Por ejemplo, los grupos de planetas se puede vivir en tierras, supertierras, minineptunos y neptunianos. Lo que se muestra en el siguiente ejemplo.

# Usar la función cut con etiquetas personalizadas
mass = pd.cut(planets_data['mass'], mass_bins,
              labels=['Tierras', 'Supertierras', 'Minineptunos', 'Neptunianos'])

print(mass)
print()
print(pd.value_counts(mass))
0       Minineptunos
1       Supertierras
2       Supertierras
3        Neptunianos
4        Neptunianos
            ...     
1030             NaN
1031             NaN
1032             NaN
1033             NaN
1034             NaN
Name: mass, Length: 1035, dtype: category
Categories (4, object): ['Tierras' < 'Supertierras' < 'Minineptunos' < 'Neptunianos']

Tierras         333
Supertierras     95
Minineptunos     55
Neptunianos      30
Name: mass, dtype: int64

Ahora el resultado es más intuitivo, pero no se cuentan los planetas con masa desconocida. Para ello se puede asignar una categoría nueva y reemplazar los valores nulos por esta. Algo que se puede conseguir con el siguiente código.

mass = mass.cat.add_categories('Desconocido').fillna('Desconocido')

print(mass)
print()
print(pd.value_counts(mass))
0       Minineptunos
1       Supertierras
2       Supertierras
3        Neptunianos
4        Neptunianos
            ...     
1030     Desconocido
1031     Desconocido
1032     Desconocido
1033     Desconocido
1034     Desconocido
Name: mass, Length: 1035, dtype: category
Categories (5, object): ['Tierras' < 'Supertierras' < 'Minineptunos' < 'Neptunianos' < 'Desconocido']

Desconocido     522
Tierras         333
Supertierras     95
Minineptunos     55
Neptunianos      30
Name: mass, dtype: int64

Haciendo aún más sencilla la interpretación de los datos. Poniendo de manifiesto que la mayoría de los registros de este conjunto de datos no se conoce la masa de los planetas.

Es importante definir la categoría antes de reemplazar los valores nulos por ésta, en caso contrario se producirá un error porque la categoría no existe en la lista de posibles opciones. Por eso en el ejemplo se ha agregado la categoría mediante el método add_categories().

Publicidad


Conclusiones

La función cut() es una herramienta con la que se puede segmentar datos numéricos en Pandas de una manera rápida y sencilla. Permitiendo análisis y visualizaciones de datos más intuitivos. Así, el uso de esta función ayuda a obtener una mejor comprensión de los conjuntos de datos durante el trabajo diario.

Image by NoName_13 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?

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

  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas
  • Identificar el número de clústeres con Calinski-Harabasz en k-means e implementación en Python publicado el junio 16, 2023 | en Ciencia de datos
  • Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas publicado el mayo 10, 2019 | en Python
  • Creación de gráficos de barras y gráficos de columnas con Seaborn publicado el julio 18, 2023 | en Python
  • pandas Pandas: Cómo iterar sobre las filas de un DataFrame en Pandas publicado el septiembre 13, 2021 | 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.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