Tablo olmayan verileri dönüştürme

Python ile ETL ve ELT

Jake Roach

Data Engineer

Tablo olmayan verileri dönüştürme

Dönüştürme bileşeni vurgulanmış ETL hattı.

Python ile ETL ve ELT

Verileri sözlüklerde depolama

İç içe JSON

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

Amaç:

  • Sözlüğü DataFrame'e hazır bir formata dönüştür

$$

[
    [863703000, 0.12187, 0.09791, 1443120000],
    [863789400, 0.09843, ...]
]
Python ile ETL ve ELT

Sözlük bileşenleri üzerinde yineleme

# Anahtarlar üzerinde döngü kur
for key in raw_data.keys():
    ...
# Değerler üzerinde döngü kur
for value in raw_data.values():
    ...
# Anahtarlar ve değerler üzerinde döngü kur
for key, value in raw_data.items():
    ...

.keys()

  • Bir sözlükte saklanan anahtarların listesini oluşturur

.values()

  • Bir sözlükte saklanan değerlerin listesini oluşturur

.items()

  • Anahtar-değer çiftlerinden oluşan demetlerin listesini üretir
Python ile ETL ve ELT

Sözlüklerden veri ayrıştırma

entry = {
    "volume": 1443120000,
    "price": {
        "open": 0.12187,
        "close": 0.09791,
    }
}
# .get() ile sözlükten veri ayrıştır
volume = entry.get("volume")
ticker = entry.get("ticker", "DCMP")
# İçteki "open" değerini döndürmek için .get()'i iki kez çağır
open_price = entry.get("price").get("open", 0)
Python ile ETL ve ELT

Listelerin listesinden DataFrame oluşturma

pd.DataFrame()'e listelerin listesini geçir

# Listelerin listesini pd.DataFrame'e geçir
raw_data = pd.DataFrame(flattened_rows)

Sütun başlıklarını .columns ile ayarla

# Sütunları oluştur
raw_data.columns = ["timestamps", "open", "close", "volume"]

.set_index() ile bir indeks ayarla

# İndeks sütununu "timestamps" yap
raw_data.set_index("timestamps")
Python ile ETL ve ELT

Hisse verilerini dönüştürme

parsed_stock_data = []

# raw_stock_data sözlüğündeki her anahtar-değer çifti üzerinde dolaş
for timestamp, ticker_info in raw_stock_data.items():
    parsed_stock_data.append([
        timestamp,
        ticker_info.get("price", {}).get("open", 0),  # Açılış fiyatını ayrıştır
        ticker_info.get("price", {}).get("close", 0),  # Kapanış fiyatını ayrıştır
        ticker_info.get("volume", 0)  # Hacmi ayrıştır
    ])
# Bir DataFrame oluştur, sütun adlarını ata ve indeks belirle
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")
Python ile ETL ve ELT

Hadi pratik yapalım!

Python ile ETL ve ELT

Preparing Video For Download...