비정형 데이터 추출

Python으로 ETL과 ELT

Jake Roach

Data Engineer

비정형 데이터 추출

추출 구성 요소가 강조된 ETL 파이프라인.

Python으로 ETL과 ELT

비정형 데이터의 유형

생성·소비되는 데이터의 대부분은 비정형 데이터

  • 텍스트
  • 오디오
  • 이미지
  • 동영상
  • 공간
  • IoT

변환 중인 비정형 데이터 소스.

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
Python으로 ETL과 ELT

API 및 JSON 데이터 다루기

API (Application Programming Interface)

  • 데이터 소스 위에 위치하는 소프트웨어
  • 데이터베이스 직접 접근 차단

$$

API를 사용해 데이터베이스와 상호작용하는 데이터 엔지니어.

JSON (JavaScript Object Notation)

  • 키-값 쌍
  • 고정 스키마 없음
  • dict(딕셔너리)와 유사한 형태
{
    "key": "value",
    ...
    "open": 0.121875
}
Python으로 ETL과 ELT

pandas로 JSON 파일 읽기

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

.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
Python으로 ETL과 ELT

중첩 또는 비정형 JSON 데이터

데이터가 항상 DataFrame 형태는 아님

  • 중첩 객체
  • 가변 "스키마"
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
Python으로 ETL과 ELT

json으로 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'>
Python으로 ETL과 ELT

연습해 봅시다!

Python으로 ETL과 ELT

Preparing Video For Download...