การแปลงข้อมูลที่ไม่ใช่ตาราง

ETL and ELT ใน Python

Jake Roach

Data Engineer

การแปลงข้อมูลที่ไม่ใช่ตาราง

ETL pipeline พร้อมไฮไลต์ส่วนประกอบ transform

ETL and ELT ใน Python

การจัดเก็บข้อมูลในดิกชันนารี

Nested JSON

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

เป้าหมาย:

  • แปลงดิกชันนารีให้อยู่ในรูปแบบที่พร้อมใช้กับ DataFrame

$$

[
    [863703000, 0.12187, 0.09791, 1443120000],
    [863789400, 0.09843, ...]
]
ETL and ELT ใน Python

การวนลูปผ่านส่วนประกอบของดิกชันนารี

# 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()

  • สร้างลิสต์ของคีย์ที่เก็บอยู่ในดิกชันนารี

.values()

  • สร้างลิสต์ของค่าที่เก็บอยู่ในดิกชันนารี

.items()

  • สร้างลิสต์ของทูเพิล ซึ่งประกอบด้วยคู่คีย์-ค่า
ETL and ELT ใน Python

การแยกข้อมูลจากดิกชันนารี

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)
ETL and ELT ใน Python

การสร้าง DataFrame จากลิสต์ของลิสต์

ส่งลิสต์ของลิสต์เข้าไปยัง pd.DataFrame()

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

กำหนดหัวคอลัมน์ด้วย .columns

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

กำหนดดัชนีด้วย .set_index()

# Set the index column to be "timestamps"
raw_data.set_index("timestamps")
ETL and ELT ใน Python

การแปลงข้อมูลหุ้น

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")
ETL and ELT ใน Python

มาฝึกกันเถอะ!

ETL and ELT ใน Python

Preparing Video For Download...