Otras operaciones con un DataFrame
Manejando cadenas de texto
A menudo solemos trabajar con datos que incluyen información textual. Pandas también nos ofrece herramientas para cubrir estos casos.
De hecho, simplemente debemos utilizar el manejador str y tendremos a disposición la gran mayoría de funciones vistas en la sección de cadenas de texto.
Veamos un primer ejemplo en el que pasamos a mayúsculas las ciudades en las que se localizan las empresas tecnológicas:
Otro supuesto sería el de sustituir espacios por subguiones en los países de las empresas:Python
Expresiones regulares
El uso de expresiones regulares aporta una gran expresividad. Veamos su aplicación con tres casos de uso:
- Filtrado de filas.
- Reemplazo de valores.
- Extracción de columnas.
Supongamos que queremos filtrar las empresas y quedarnos con las que comienzan por vocal:
Nota: Dado que el nombre de la empresa está actuando como índice del «dataset», hemos aplicado la búsqueda sobre .index.
Ahora imaginemos que vamos a sustituir aquellas ciudades que empiezan con «S» o «T» por «Stanton»:
Por último supongamos que queremos dividir la columna «Country» en dos columnas usando el espacio como separador:
Existen otras funciones interesantes de Pandas que trabajan sobre expresiones regulares:
- count() para contar el número de ocurrencias de un patrón.
- contains() para comprobar si existe un determinado patrón.
- extract() para extraer grupos de captura sobre un patrón.
- findall() para encontrar todas las ocurrencias de un patrón.
Manejando fechas
Suele ser habitual tener que manejar datos en formato fecha (o fecha-hora). Pandas ofrece un amplio abanico de posibilidades para ello. Veamos algunas de las herramientas disponibles.Python
Para ejemplificar este apartado hemos añadido al «dataset» de empresas tecnológicas una nueva columna con las fechas de fundación de las empresas (en formato «string»):
Lo primero que deberíamos hacer es convertir la columna «Founded» al tipo «datetime» usando la función to_datetime():
Es posible acceder a cada elemento de la fecha:
Por ejemplo, podríamos querer calcular el número de años que llevan activas las empresas:
Los tipos de datos «datetime» dan mucha flexibilidad a la hora de hacer consultas:
Hay ocasiones en las que necesitamos que la fecha se convierta en el índice del DataFrame:
Esto nos permite indexar de forma mucho más precisa:
Ejercicio
Partiendo del fichero oasis.csv que contiene información sobre la discografía del grupo de pop británico Oasis, se pide:
- Cargue el fichero en un DataFrame.
- Convierta la columna «album_release_date» a tipo «datetime».
- Obtenga los nombres de los álbumes publicados entre 2000 y 2005.
Manejando categorías
Hasta ahora hemos visto tipos de datos numéricos, cadenas de texto y fechas. ¿Pero qué ocurre con las categorías?Python
Las categorías pueden ser tanto datos numéricos como textuales, con la característica de tener un número discreto (relativamente pequeño) de elementos y, en ciertas ocasiones, un orden preestablecido. Ejemplos de variables categóricas son: género, idioma, meses del año, color de ojos, nivel de estudios, grupo sanguíneo, valoración, etc.
Pandas facilita el tratamiento de datos categóricos mediante un tipo específico Categorical.
Siguiendo con el «dataset» de empresas tecnológicas, vamos a añadir el continente al que pertenece cada empresa. En primera instancia mediante valores de texto habituales:
Ahora podemos convertir esta columna a tipo categoría:
En este caso, al ser una conversión «automática», las categorías no han incluido ningún tipo de orden. Pero imaginemos que queremos establecer un orden para las categorías de continentes basadas, por ejemplo, en su población: Asia, África, Europa, América, Australia:Python
El hecho de trabajar con categorías ordenadas permite (entre otras) estas operaciones: