Przekształcanie danych nietabelarycznych

ETL i ELT w Pythonie

Jake Roach

Data Engineer

Przekształcanie danych nietabelarycznych

Pipeline ETL z podświetlonym elementem transformacji.

ETL i ELT w Pythonie

Przechowywanie danych w słownikach

Zagnieżdżony JSON

{
    "863703000": {
        "price": {
            "open": 0.12187,
            "close": 0.09791
        },
        "volume": 1443120000
    }, 
    "863789400": {
    }, ...
}

Cel:

  • Przekształcić słownik w format gotowy do wczytania w DataFrame

$$

[
    [863703000, 0.12187, 0.09791, 1443120000],
    [863789400, 0.09843, ...]
]
ETL i ELT w Pythonie

Iterowanie po elementach słownika

# Iteracja po kluczach
for key in raw_data.keys():
    ...
# Iteracja po wartościach
for value in raw_data.values():
    ...
# Iteracja po kluczach i wartościach
for key, value in raw_data.items():
    ...

.keys()

  • Tworzy listę kluczy przechowywanych w słowniku

.values()

  • Tworzy listę wartości przechowywanych w słowniku

.items()

  • Generuje listę krotek złożonych z par klucz-wartość
ETL i ELT w Pythonie

Pobieranie danych ze słowników

entry = {
    "volume": 1443120000,
    "price": {
        "open": 0.12187,
        "close": 0.09791,
    }
}
# Pobieranie danych ze słownika za pomocą .get()
volume = entry.get("volume")
ticker = entry.get("ticker", "DCMP")
# Dwukrotne wywołanie .get(), aby zwrócić zagnieżdżoną wartość „open"
open_price = entry.get("price").get("open", 0)
ETL i ELT w Pythonie

Tworzenie DataFrame z listy list

Przekaż listę list do pd.DataFrame()

# Przekazanie listy list do pd.DataFrame
raw_data = pd.DataFrame(flattened_rows)

Ustaw nagłówki kolumn za pomocą .columns

# Tworzenie kolumn
raw_data.columns = ["timestamps", "open", "close", "volume"]

Ustaw indeks za pomocą .set_index()

# Ustawienie kolumny „timestamps" jako indeksu
raw_data.set_index("timestamps")
ETL i ELT w Pythonie

Przekształcanie danych giełdowych

parsed_stock_data = []

# Iteracja po każdej parze klucz-wartość słownika raw_stock_data
for timestamp, ticker_info in raw_stock_data.items():
    parsed_stock_data.append([
        timestamp,
        ticker_info.get("price", {}).get("open", 0),  # Pobranie ceny otwarcia
        ticker_info.get("price", {}).get("close", 0),  # Pobranie ceny zamknięcia
        ticker_info.get("volume", 0)  # Pobranie wolumenu
    ])
# Utworzenie DataFrame, przypisanie nazw kolumn i ustawienie indeksu
transformed_stock_data = pd.DataFrame(parsed_stock_data)
transformed_stock_data.columns = ["timestamps", "open", "close", "volume"]
transformed_stock_data = transformed_stock_data.set_index("timestamps")
ETL i ELT w Pythonie

Czas na praktykę!

ETL i ELT w Pythonie

Preparing Video For Download...