Transformando dados com pandas

ETL e ELT em Python

Jake Roach

Data Engineer

Transformando dados em um pipeline

Dados precisam ser bem transformados para gerar valor a quem usa depois

Um fluxo de transformação de dados.

pandas oferece ferramentas poderosas para transformar dados tabulares

  • .loc[]
  • .to_datetime()
ETL e ELT em Python

Filtrando registros com .loc[]

.loc[] permite transformar as duas dimensões de um DataFrame

# Manter só entradas não zero
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# Remover colunas extras
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# Combinar em um passo
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[] usa indexação inteira para filtrar DataFrames

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

Alterando tipos de dados

Muitas vezes é preciso converter tipos para usos posteriores

  • .to_datetime()
# A coluna "timestamps" atualmente está assim: "20230101085731"
# Converter a coluna "timestamps" para datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# A coluna "timestamps" atualmente está assim: 1681596000011
# Converter a coluna "timestamps" para datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
ETL e ELT em Python

Validando transformações

Transformar dados traz riscos:

  • Perder informação
  • Criar dados incorretos
# Várias formas de inspecionar um DataFrame
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# Retornar menores e maiores registros
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
ETL e ELT em Python

Vamos praticar!

ETL e ELT em Python

Preparing Video For Download...