Pozyskiwanie danych nietabelarycznych

ETL i ELT w Pythonie

Jake Roach

Data Engineer

Pozyskiwanie danych nietabelarycznych

Potok ETL z zaznaczonym etapem pozyskiwania danych.

ETL i ELT w Pythonie

Rodzaje danych nietabelarycznych

Większość tworzonych i wykorzystywanych danych to dane nieustrukturyzowane

  • Tekst
  • Dźwięk
  • Obraz
  • Wideo
  • Dane przestrzenne
  • IoT

Źródła danych nieustrukturyzowanych w trakcie przetwarzania.

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
ETL i ELT w Pythonie

Praca z API i danymi JSON

API (interfejs programowania aplikacji)

  • Oprogramowanie działające jako warstwa nad źródłami danych
  • Uniemożliwia bezpośrednią interakcję z bazą danych

$$

Inżynier danych korzystający z API do interakcji z bazą danych.

JSON (JavaScript Object Notation)

  • Pary klucz-wartość
  • Brak ustalonego schematu
  • Wyglądem i działaniem przypomina słowniki (dict)
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL i ELT w Pythonie

Wczytywanie plików JSON za pomocą pandas

{
    "timestamps": [863703000, 863789400, ...],
    "open": [0.121875, 0.098438, ...],
    "close": [...],
    "volume": [...]
}

Skorzystaj z funkcji .read_json()

# Read in a JSON file in the format above
raw_stock_data = pd.read_json("raw_stock_data.json", orient="columns")
1 https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
ETL i ELT w Pythonie

Zagnieżdżone lub nieustrukturyzowane dane JSON

Dane nie zawsze są gotowe do użycia w DataFrame

  • Zagnieżdżone obiekty
  • Zmienny „schemat"
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
ETL i ELT w Pythonie

Wczytywanie plików JSON za pomocą modułu json

import json

with open("raw_stock_data.json", "r") as file:
    # Load the file into a dictionary
    raw_stock_data = json.load(file)

# Confirm the type of the raw_stock_data variable
print(type(raw_stock_data))
<class 'dict'>
ETL i ELT w Pythonie

Czas na praktykę!

ETL i ELT w Pythonie

Preparing Video For Download...