Przekształcanie danych za pomocą pandas

ETL i ELT w Pythonie

Jake Roach

Data Engineer

Przekształcanie danych w potoku

Dane trzeba odpowiednio przekształcić, aby miały wartość dla kolejnych użytkowników

Przepływ pracy przekształcania danych.

pandas oferuje potężne narzędzia do przekształcania danych tabelarycznych

  • .loc[]
  • .to_datetime()
ETL i ELT w Pythonie

Filtrowanie rekordów za pomocą .loc[]

.loc[] pozwala przekształcać obie osie DataFrame

# Zachowaj tylko niezerowe wartości
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# Usuń zbędne kolumny
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# Połącz w jeden krok
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[] wykorzystuje indeksowanie liczbami całkowitymi do filtrowania DataFrame

cleaned = raw_stock_data.iloc[[0:50], [0, 1, 2]]
ETL i ELT w Pythonie

Zmiana typów danych

Typy danych często trzeba konwertować pod kątem dalszych zastosowań

  • .to_datetime()
# Kolumna „timestamps" obecnie wygląda tak: „20230101085731"
# Przekształć kolumnę „timestamps" na typ datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# Kolumna „timestamps" obecnie wygląda tak: 1681596000011
# Przekształć kolumnę „timestamps" na typ datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
ETL i ELT w Pythonie

Weryfikacja przekształceń

Przekształcanie danych niesie ze sobą ryzyko:

  • Utrata informacji
  • Powstanie błędnych danych
# Kilka sposobów na sprawdzenie DataFrame
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# Zwróć najmniejsze i największe rekordy
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
ETL i ELT w Pythonie

Czas na praktykę!

ETL i ELT w Pythonie

Preparing Video For Download...