1 - DataFrames anchos y largos
Lección 1 del curso Pandas Nivel Avanzado.
Video
Acá el video completo de esta lección:
Introducción
En ocasiones cuando leemos datos tabulares en el formato DataFrame de Pandas la información se encuentra “desorganizada” y no resulta fácil entender los datos ni realizar el análisis.
Por ejemplo esta es una tabla desorganizada:
Nombre | Categoría | Valor |
---|---|---|
Julia | Saldo | 2.300 |
Julia | Color | Rojo |
Carlos | Saldo | 1.100 |
Julia | Edad | 40 |
Carlos | Color | Púrpura |
Carlos | Edad | 38 |
¿Por qué es desorganizada?
- Porque la columna “valor” no contiene un sólo tipo de dato
- Porque un mismo nombre aparece en varias filas
- Porque para determinar a qué se refiere la columna “valor” debemos ver simultáneamente la información correspondiente en la columna “categoría”
En últimas todo esto dificulta la interpretación y análisis de los datos.
Una forma alterna de ver estos datos es en una tabla organizada:
Nombre | Edad | Saldo | Color |
---|---|---|---|
Julia | 40 | 2.300 | Rojo |
Carlos | 38 | 1.100 | Púrpura |
¡En este caso resulta mucho más fácil entender el contenido de la tabla!
En la práctica muchas veces los datos están desorganizados y por tanto debemos saber usar técnicas que nos permitan preservar la información para obtener un DataFrame organizado. Esto se conoce como re-estructurar un DataFrame y es precisamente el tema de este primer módulo del curso.
Entonces veremos técnicas como el uso de tablas dinámicas, el “stacking” (apilar) y “unstacking” (des-apilar) de una tabla, así como en qué consisten los conceptos de “fundir” y “explotar” un DataFrame.
Pero para entender estos conceptos es necesario partir de dos definiciones básicas: el significado de lo que es un DataFrame ancho y un DataFrame largo, que es precisamente el tema de esta lección.
DataFrames anchos
Un DataFrame ancho es aquel que crece a través de sus columnas. Es decir, ¡crece a lo ancho!
Entendamos esto con un ejemplo. La siguiente tabla contiene la información sobre la temperatura en dos ciudades de España para dos días de la semana:
Día | Sevilla | Barcelona | |
---|---|---|---|
0 | Lunes | 28 | 24 |
1 | Martes | 26 | 25 |
Supongamos que ahora tomamos los mismos datos de temperatura para otras 2 ciudades y para los mismos dos días: Granada (23, 21) y Valencia (29, 25). ¿Dónde agregamos estos datos?
La estructura de la tabla nos indica que debemos añadir esta información agregando dos nuevas columnas:
Día | Sevilla | Barcelona | Granada | Valencia | |
---|---|---|---|---|---|
0 | Lunes | 28 | 24 | 23 | 29 |
1 | Martes | 26 | 25 | 21 | 25 |
Es decir: !la tabla ha crecido a lo ancho y por tanto se trata de un DataFrame ancho!
3. ¿Cuál estructura es más adecuada?
La respuesta es ¡depende!
Por ejemplo, si queremos conocer la temperatura promedio por día, es más conveniente la representación ancha:
Día | Sevilla | Barcelona | Granada | Valencia | |
---|---|---|---|---|---|
0 | Lunes | 28 | 24 | 23 | 29 |
1 | Martes | 26 | 25 | 21 | 25 |
Pero si nos interesa la temperatura promedio de ambos días es mejor la representación larga:
Día | Ciudad | Temperatura | |
---|---|---|---|
0 | Lunes | Sevilla | 28 |
1 | Lunes | Barcelona | 24 |
2 | Lunes | Granada | 23 |
3 | Lunes | Valencia | 29 |
4 | Martes | Sevilla | 26 |
5 | Martes | Barcelona | 25 |
6 | Martes | Granada | 21 |
7 | Martes | Valencia | 25 |
Así que la estructura más adecuada dependerá de la información que queramos extraer de los datos.
Y por eso es importante tener claros estos dos tipos de estructuras, pues las técnicas que veremos en las próximas lecciones nos permiten precisamente modificar dicha estructura dependiendo del análisis que queramos realizar.
El notebook de esta lección
Contenido exclusivo para suscriptores. Suscríbete para tener acceso a todos los cursos y material descargable de la Academia Online
Muy bien, teniendo claro estos sencillos conceptos ya estamos listos para comenzar a ver en detalle las diferentes técnicas que nos ofrece Pandas para la re-estructuración de tablas de datos, comenzando con las tablas dinámicas (o pivot tables) que será el tema de la próxima lección.