pandas

Pandas

Tutorial Pandas: Operaciones de cadena de texto y categóricas

Pandas lección sobre operaciones de cadena de texto y datos categóricos. Aprende a manipular y analizar datos textuales y categóricos en Pandas. Entra y mejora tu manejo de datos.

Tipos de dato texto y categóricos

En Pandas, los tipos de dato texto y categóricos son fundamentales para la manipulación y análisis de datos. Los datos de tipo texto se representan utilizando el tipo object o string en Pandas, mientras que los datos categóricos se representan con el tipo category. Cada uno de estos tipos tiene sus particularidades y ventajas en el manejo de datos.

El tipo texto (object o string) se utiliza generalmente para datos que representan cadenas de caracteres. Las operaciones comunes con datos de tipo texto incluyen la búsqueda de patrones, la manipulación de cadenas y la limpieza de datos. Pandas proporciona una serie de métodos específicos para trabajar con datos de tipo texto, accesibles a través del atributo .str.

Ejemplo de creación de una Serie de tipo texto:

import pandas as pd

# Crear una Serie de tipo texto
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto)

El tipo categórico (category) se utiliza para datos que toman un número limitado y fijo de posibles valores, como categorías o etiquetas. Los datos categóricos son útiles para representar variables cualitativas y pueden ofrecer mejoras significativas en la eficiencia de almacenamiento y el rendimiento de ciertas operaciones. Además, permiten realizar operaciones estadísticas y de agrupamiento de manera más efectiva.

Ejemplo de creación de una Serie categórica:

# Crear una Serie categórica
serie_categorica = pd.Series(['bajo', 'medio', 'alto', 'medio'], dtype='category')
print(serie_categorica)

Las ventajas del uso de datos categóricos incluyen:

  • Eficiencia de almacenamiento: Los datos categóricos se almacenan internamente como enteros, lo que reduce el uso de memoria.
  • Optimización de operaciones: Las operaciones sobre datos categóricos pueden ser más rápidas debido a la representación interna eficiente.
  • Facilitación de análisis: Los datos categóricos permiten realizar operaciones de agrupamiento y análisis estadísticos con mayor facilidad.

Transformar datos de texto a categóricos puede ser beneficioso en muchos casos. Por ejemplo, si se tiene una columna de un DataFrame que contiene un número limitado de categorías distintas, se puede convertir a tipo categórico para mejorar la eficiencia.

Ejemplo de conversión de una columna de texto a categórica:

# Crear un DataFrame con una columna de tipo texto
df = pd.DataFrame({'nivel': ['bajo', 'medio', 'alto', 'medio']})

# Convertir la columna a tipo categórico
df['nivel'] = df['nivel'].astype('category')
print(df.dtypes)

Para trabajar con datos de tipo texto y categóricos, Pandas ofrece diversas funciones y métodos que facilitan la manipulación y el análisis. Es importante seleccionar el tipo de dato adecuado según las necesidades específicas del análisis para optimizar tanto el rendimiento como la claridad del código.

Operaciones de texto

En Pandas, las operaciones de texto son esenciales para la manipulación y transformación de datos textuales. Estas operaciones se realizan principalmente utilizando el atributo .str, que proporciona una interfaz para aplicar métodos de cadena de texto sobre las Series de Pandas. 

A continuación, se describen algunas de las operaciones más comunes y útiles que se pueden realizar:

  • Cambio de mayúsculas y minúsculas: Es posible convertir el texto a minúsculas o mayúsculas con los métodos .str.lower() y .str.upper() respectivamente.
import pandas as pd

serie_texto = pd.Series(['Manzana', 'BANANA', 'Cereza'])
print(serie_texto.str.lower())
print(serie_texto.str.upper())
  • Eliminación de espacios en blanco: Para eliminar espacios en blanco al inicio y al final de las cadenas de texto, se puede utilizar .str.strip(). También existen .str.lstrip() y .str.rstrip() para eliminar espacios solo al inicio o al final.
serie_texto = pd.Series(['  manzana  ', '  banana  ', '  cereza  '])
print(serie_texto.str.strip())
  • Reemplazo de subcadenas: El método .str.replace() permite reemplazar subcadenas dentro de las cadenas de texto. Este método soporta expresiones regulares.
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto.str.replace('a', 'o'))
  • División y particionado: Las cadenas de texto pueden dividirse en listas de subcadenas utilizando .str.split(). También es posible particionar las cadenas en partes utilizando .str.partition().
serie_texto = pd.Series(['manzana,banana,cereza'])
print(serie_texto.str.split(','))
  • Concatenación de cadenas: Se pueden concatenar cadenas de texto utilizando el operador + o el método .str.cat(). Este último ofrece más opciones, como especificar un separador.
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto.str.cat(sep=', '))
  • Extracción de subcadenas: Para extraer subcadenas específicas, se puede utilizar .str.slice() o .str.extract(). El primero permite extraer subcadenas basándose en índices, mientras que el segundo utiliza expresiones regulares.
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto.str.slice(0, 3))  # Extrae los primeros tres caracteres
print(serie_texto.str.extract(r'(\w{3})'))  # Extrae las primeras tres letras usando regex
  • Comprobaciones de patrones: Se pueden realizar comprobaciones sobre las cadenas de texto para verificar si cumplen ciertos patrones utilizando métodos como .str.contains(), .str.startswith(), y .str.endswith().
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto.str.contains('an'))
print(serie_texto.str.startswith('ma'))
print(serie_texto.str.endswith('za'))
  • Longitud de cadenas: Es posible obtener la longitud de cada cadena de texto utilizando .str.len().
serie_texto = pd.Series(['manzana', 'banana', 'cereza'])
print(serie_texto.str.len())

El uso de estas operaciones de texto en Pandas permite la limpieza y transformación eficiente de datos textuales, lo cual es fundamental en tareas de análisis de datos.

Operaciones sobre datos categóricos

Las operaciones sobre datos categóricos en Pandas son esenciales para la manipulación y análisis eficiente de datos que representan categorías o etiquetas. Los datos categóricos se almacenan internamente como enteros, lo que proporciona una ventaja significativa en términos de eficiencia de almacenamiento y rendimiento de las operaciones.

  • Creación de datos categóricos: Los datos categóricos se pueden crear directamente al definir una Serie o al convertir una Serie existente de otro tipo de datos.
import pandas as pd

# Crear una Serie categórica desde cero
serie_categorica = pd.Series(['rojo', 'verde', 'azul'], dtype='category')
print(serie_categorica)

# Convertir una Serie de texto a categórica
serie_texto = pd.Series(['bajo', 'medio', 'alto', 'medio'])
serie_texto = serie_texto.astype('category')
print(serie_texto)
  • Reordenación de categorías: Es posible reordenar las categorías utilizando el método .reorder_categories(). Esto es útil cuando se necesita un orden específico para el análisis o la visualización de datos.
# Reordenar categorías
serie_categorica = serie_categorica.cat.reorder_categories(['verde', 'rojo', 'azul'], ordered=True)
print(serie_categorica)
  • Añadir y eliminar categorías: Se pueden añadir nuevas categorías a una Serie categórica existente utilizando .add_categories(), y eliminar categorías con .remove_categories().
# Añadir una nueva categoría
serie_categorica = serie_categorica.cat.add_categories(['amarillo'])
print(serie_categorica)

# Eliminar una categoría
serie_categorica = serie_categorica.cat.remove_categories(['amarillo'])
print(serie_categorica)
  • Renombrar categorías: Las categorías pueden ser renombradas utilizando el método .rename_categories(). Este método es útil para ajustar los nombres de las categorías a convenciones específicas o para mejorar la legibilidad.
# Renombrar categorías
serie_categorica = serie_categorica.cat.rename_categories({'rojo': 'Red', 'verde': 'Green', 'azul': 'Blue'})
print(serie_categorica)
  • Ordenación y Comparación: Las Series categóricas pueden ser ordenadas fácilmente. Las categorías ordenadas permiten realizar comparaciones lógicas entre los elementos. Por ejemplo, cuando las categorías tienen un orden implícito (como "bajo", "medio", "alto"), es posible comparar los elementos directamente para determinar su relación.
# Ordenar una Serie categórica
serie_ordenada = serie_texto.sort_values()
print(serie_ordenada)

# Crear una Serie categórica con un orden específico
serie_texto_ordenado = serie_texto.astype(pd.CategoricalDtype(categories=['bajo', 'medio', 'alto'], ordered=True))
print(serie_texto_ordenado > 'bajo')  # Esto devolverá True para categorías superiores a 'bajo'
  • Agrupamiento y agregación: Los datos categóricos son extremadamente útiles para operaciones de agrupamiento y agregación, ya que permiten segmentar los datos de manera eficiente según las categorías.
# Crear un DataFrame con datos categóricos
df = pd.DataFrame({
    'grupo': pd.Series(['A', 'B', 'A', 'B', 'A'], dtype='category'),
    'valor': [10, 20, 30, 40, 50]
})

# Agrupar por la columna categórica y calcular la media
agrupado = df.groupby('grupo', observed=False).mean()
print(agrupado)
  • Conversión a otro tipo de datos: En caso de ser necesario, se puede convertir una Serie categórica a otro tipo de datos, como texto o numérico, utilizando el método .astype().
# Convertir a texto
serie_texto = serie_categorica.astype('str')
print(serie_texto)

# Convertir a numérico (códigos)
serie_numerica = serie_categorica.cat.codes
print(serie_numerica)

Las operaciones sobre datos categóricos en Pandas son esenciales para un manejo eficiente y optimizado de datos cualitativos, permitiendo realizar análisis y transformaciones complejas de manera sencilla y eficaz.

Certifícate en Pandas con CertiDevs PLUS

Ejercicios de esta lección Operaciones de cadena de texto y categóricas

Evalúa tus conocimientos de esta lección Operaciones de cadena de texto y categóricas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Pandas

Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Pandas

Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender los tipos de dato texto (object o string) y categóricos (category) en Pandas.

  • Realizar operaciones comunes con datos de tipo texto utilizando el atributo .str.

  • Crear y manipular Series categóricas.

  • Optimizar el almacenamiento y rendimiento de los datos categóricos.

  • Realizar operaciones de agrupamiento y agregación con datos categóricos.

  • Convertir entre tipos de dato texto y categóricos.