Transformar datos con pandas

ETL y ELT en Python

Jake Roach

Data Engineer

Transformar datos en un pipeline

Los datos deben transformarse bien para aportar valor a quienes los usan después

Un flujo de trabajo de transformación de datos.

pandas ofrece potentes herramientas para transformar datos tabulares

  • .loc[]
  • .to_datetime()
ETL y ELT en Python

Filtrar registros con .loc[]

.loc[] permite transformar ambas dimensiones de un DataFrame

# Mantén solo entradas no nulas
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# Quita columnas extra
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# Combina en un paso
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[] usa índices enteros para filtrar DataFrames

cleaned = raw_stock_data.iloc[[0:50], [0, 1, 2]]
ETL y ELT en Python

Cambiar tipos de datos

A menudo hay que convertir tipos de datos para su uso posterior

  • .to_datetime()
# La columna "timestamps" ahora parece: "20230101085731"
# Convierte "timestamps" a tipo datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# La columna "timestamps" ahora parece: 1681596000011
# Convierte "timestamps" a tipo datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
ETL y ELT en Python

Validar transformaciones

Transformar datos conlleva riesgos:

  • Pérdida de información
  • Crear datos erróneos
# Varias formas de inspeccionar un DataFrame
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# Devuelve los registros más pequeños y más grandes
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
ETL y ELT en Python

¡Vamos a practicar!

ETL y ELT en Python

Preparing Video For Download...