Daten mit pandas transformieren

ETL und ELT mit Python

Jake Roach

Data Engineer

Daten in einer Pipeline transformieren

Daten müssen korrekt transformiert werden, damit nachgelagerte Nutzer Mehrwert erhalten

Ein Workflow zur Datentransformation.

pandas bietet starke Tools zum Transformieren tabellarischer Daten

  • .loc[]
  • .to_datetime()
ETL und ELT mit Python

Datensätze mit .loc[] filtern

.loc[] ermöglicht Transformationen in beiden Dimensionen eines DataFrames

# Nur Einträge > 0 behalten
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# Überflüssige Spalten entfernen
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# In einem Schritt kombinieren
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[] filtert DataFrames per Integer-Index

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

Datentypen ändern

Datentypen müssen oft für nachgelagerte Zwecke konvertiert werden

  • .to_datetime()
# Spalte "timestamps" sieht aktuell so aus: "20230101085731"
# Spalte "timestamps" in datetime konvertieren
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# Spalte "timestamps" sieht aktuell so aus: 1681596000011
# Spalte "timestamps" in datetime konvertieren
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
ETL und ELT mit Python

Transformationen validieren

Transformation birgt Risiken:

  • Informationsverlust
  • Fehlerhafte Daten erzeugen
# Mehrere Wege, ein DataFrame zu prüfen
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# Kleinste und größte Einträge
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
ETL und ELT mit Python

Lass uns üben!

ETL und ELT mit Python

Preparing Video For Download...