Tablo dışı verileri dönüştürme

Python ile ETL ve ELT

Jake Roach

Data Engineer

Tablo dışı verileri dönüştürme

Dönüşüm 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": {
    }, ...
}

Hedef:

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

$$

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

Sözlük bileşenlerinde yineleme

# Loop over keys
for key in raw_data.keys():
    ...
# Loop over values
for value in raw_data.values():
    ...
# Loop over keys and values
for key, value in raw_data.items():
    ...

.keys()

  • Bir sözlükteki anahtarların listesini döndürür

.values()

  • Bir sözlükteki değerlerin listesini döndürür

.items()

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

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

entry = {
    "volume": 1443120000,
    "price": {
        "open": 0.12187,
        "close": 0.09791,
    }
}
# Parse data from dictionary using .get()
volume = entry.get("volume")
ticker = entry.get("ticker", "DCMP")
# Call .get() twice to return the nested "open" value
open_price = entry.get("price").get("open", 0)
Python ile ETL ve ELT

Listeler listesinden DataFrame oluşturma

Listeler listesini pd.DataFrame()'e verin

# Pass a list of lists to pd.DataFrame
raw_data = pd.DataFrame(flattened_rows)

.columns ile sütun başlıklarını ayarlayın

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

.set_index() ile indeks ayarlayın

# Set the index column to be "timestamps"
raw_data.set_index("timestamps")
Python ile ETL ve ELT

Hisse verilerini dönüştürme

parsed_stock_data = []

# Loop through each key-value pair of the raw_stock_data dictionary
for timestamp, ticker_info in raw_stock_data.items():
    parsed_stock_data.append([
        timestamp,
        ticker_info.get("price", {}).get("open", 0),  # Parse the opening price
        ticker_info.get("price", {}).get("close", 0),  # Parse the closing price
        ticker_info.get("volume", 0)  # Parse the volume
    ])
# Create a DataFrame, assign column names, and set an index
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

Haydi pratik yapalım!

Python ile ETL ve ELT

Preparing Video For Download...