추출

데이터 엔지니어링 입문

Vincent Vankrunkelsven

Data Engineer, DataCamp

데이터 추출: 무엇을 의미할까요?

간단한 추출 단계를 나타내는 다이어그램

데이터 엔지니어링 입문

텍스트 파일에서 추출하기

비정형 데이터

  • 일반 텍스트
  • 예: 책의 한 챕터

 

Call me Ishmael. Some years ago, never 
mind how long precisely, having little or
no money in my purse, and nothing particular
to interest me on shore, I thought ....

플랫 파일

  • 행 = 레코드
  • 열 = 속성
  • 예: .tsv 또는 .csv

 

Year,Make,Model,Price
1997,Ford,E350,3000.00
1999,Chevy,"Venture Extended Edition",4900.00
1999,Chevy,"Venture Extended Edition",5000.00
1996,Jeep,Grand Cherokee,4799.00
데이터 엔지니어링 입문

JSON

  • JavaScript Object Notation
  • 반정형 데이터
  • 원자 타입
    • number
    • string
    • boolean
    • null
  • 복합 타입
    • array
    • object
{
  "an_object": {
    "nested": [
      "one",
      "two",
      "three",
      {
        "key": "four"
      }
    ]
  }
}
import json

result = json.loads('{"key_1": "value_1", "key_2":"value_2"}') print(result["key_1"])
value_1
데이터 엔지니어링 입문

웹상의 데이터

요청

요청-응답 모델을 나타내는 다이어그램

예시

  1. Google에 접속
  2. Google 서버에 요청
  3. Google이 웹페이지로 응답
데이터 엔지니어링 입문

API를 통한 웹 데이터

  • JSON 형식으로 데이터 전송
  • API: 애플리케이션 프로그래밍 인터페이스
  • 예시
    • GitHub API
{ "login": "datacamp", "type": "Organization", "created_at": "2013-05-14T13:01:20Z" }
  • Hackernews API
import requests

response = requests.get("https://hacker-news.firebaseio.com/v0/item/16222426.json") print(response.json())
{'by': 'neis', 'descendants': 0, 'id': 16222426, 'score': 17, 'time': 1516800333, 'title': .... }
데이터 엔지니어링 입문

데이터베이스의 데이터

애플리케이션 데이터베이스

  • 트랜잭션
  • 삽입 및 변경
  • OLTP
  • 행 기반

분석용 데이터베이스

  • OLAP
  • 열 기반
데이터 엔지니어링 입문

데이터베이스에서 추출하기

연결 문자열/URI

postgresql://[user[:password]@][host][:port]

Python에서 사용하기

import sqlalchemy
connection_uri = "postgresql://repl:password@localhost:5432/pagila" 
db_engine = sqlalchemy.create_engine(connection_uri)

import pandas as pd pd.read_sql("SELECT * FROM customer", db_engine)
데이터 엔지니어링 입문

연습해 봅시다!

데이터 엔지니어링 입문

Preparing Video For Download...