Skip to Content
Exploración y Curación de DatosEstructuras y Formatos de Datos

Estructuras y Formatos de Datos

Datos estructurados

Estos se organizan por filas y columnas, donde todos los registros tienen el mismo tipo de dato (numérico, texto, booleano, etc.).

  • Estructura de datos: dataframes.
  • Formato de datos: CSV, XLSX, TXT, etc.

Datos semi-estructurados

En estos los registros tienen un conjunto distinto de características y pueden estar anidados, son más flexibles pero requieren más procesamiento para analizarlos.

  • Estructura de datos: objetos, diccionarios, etc.
  • Formato de datos: JSON, XML, etc.

Datos no estructurados

Estos no tienen un esquema definido y pueden ser de cualquier tipo, como texto, audio, video, etc. Pueden (o no) tener metadatos definidos, su análisis es más complejo.

  • Estructura de datos: strings, binary, etc.
  • Formato de datos: imágenes, videos, audios, etc.

Bases de datos

Colecciones de datos organizados y estructurados almacenada en una computadora.

Bases de datos relacionales (SQL)

Se basan en tuplas y relaciones entre tablas, donde cada tabla es un conjutno de campos (columnas) y registros (filas). Se establecen relaciones entre tablas a través de claves primarias y foráneas.
Utilizan SQL para la manipulación de datos.

Bases de datos no relacionales (NoSQL)

Estas manejan datos semi estructurados y no definen un esquema rígido. Se utilizan para almacenar grandes volúmenes de datos y son más flexibles que las bases de datos relacionales. Algunas utilizan documentos, grafos, pares clave-valor, etc.

Operaciones Pandas y SQL


Seleccionar columnas:

df[['columna1', 'columna2']]
SELECT columna1, columna2 FROM tabla;

Ordenar de forma ascendente o descendente:

df.sort_values(by=['columna1', 'columna2'], ascending=[True, False])
SELECT columna1, columna2 FROM tabla ORDER BY columna1 ASC columna2 DESC;

Remolición de duplicados

df[['columna1', 'columna2']].drop_duplicates()
SELECT DISTINCT columna1, columna2 FROM tabla;

Filtrar filas

df[(df['columna1'] >= 5) & (df['columna1'] <= 10)][['columna1', 'columna2']]
-- Además de WHERE se utilizan operadores como: =, <, >, <=, >=, LIKE, BETWEEN x AND y SELECT columna1, columna2 FROM tabla WHERE columna1 BETWEEN 5 AND 10;

Limitar resultados

# Primeras 10 filas de un DataFrame df.head(10) # Seleccionar 10 filas desde la 30 hasta la 40 df[['columna1']].iloc[30:40]
-- LIMIT/OFFSET -- Limitar cantidad / A partir de qué registro SELECT columna1 FROM tabla LIMIT 10 OFFSET 30

Agrupar resultados y aplicar función de agregación

# Agrupar por vendedor df.groupby('vendedor') # Agrupar por vendedor y sumar los montos df.groupby('vendedor')['monto'].sum().reset_index(name='total_vendido')
-- Agrupar por vendedor SELECT vendedor FROM ventas GROUP BY vendedor; -- Agrupar por vendedor y sumar los montos SELECT vendedor, SUM(monto) AS total_vendido FROM ventas GROUP BY vendedor;

Agrupar resultados con condición

df.groupby('vendedor')['monto'].sum().reset_index(name='total_vendido') \ .query('total_vendido > 10000')
SELECT vendedor, SUM(monto) AS total_vendido FROM ventas GROUP BY vendedor HAVING SUM(monto) > 10000;

Combinaciones en base a tablas relacionadas

merged_df = pd.merge(albums, artists, on='artistId', how='inner') result = merged_df[['title', 'song_year']]
-- Busca coincidencias entre campos de tablas mediante la palabra ON -- Algunos tipos de uniones son: INNER, OUTER, LEFT, RIGHT, FULL OUTER, entre otras SELECT title, song_year FROM albums INNER JOIN artists ON artists.artistId = albums.artistId
Última vez actualizado el 24 de mayo de 2025