본문 바로가기
Data Analysis/Data Engineering

IBM Data Engineer - Extract, Transform, Load (ETL)

by Hagrid 2023. 4. 18.
반응형

Extract, Transform, Load (ETL)

 

이 비디오에서는 ETL(추출, 변환, 로딩) 프로세스를 소개하고 간단한 Python 프로그램을 작성하는 방법을 배웁니다. ETL은 다양한 소스에서 데이터를 추출하고, 변환하여 원하는 형식으로 만든 다음, 데이터베이스 또는 목표 파일에 로드하는 과정입니다.

예를 들어, 당뇨병 위험을 예측하는 AI를 개발한 스타트업을 운영한다고 가정해보겠습니다. 일부 데이터는 CSV 형식이고, 다른 데이터는 JSON 파일에 있습니다. 이러한 데이터를 AI가 읽을 수 있는 하나의 파일로 병합해야 합니다. 또한, 데이터를 변환하여 미터법 단위로 바꾸고 최종적으로 하나의 큰 CSV 파일로 데이터를 로드해야 합니다.

ETL을 Python으로 구현하려면 다음 단계를 수행합니다.

 

  1. 추출(Extract) 단계: 여러 소스의 데이터를 가져옵니다.
  2. 변환(Transform) 단계: 데이터를 필요한 형식으로 변환합니다.
  3. 로드(Load) 단계: 데이터를 최종 파일에 저장합니다.
  4. 로깅(Logging) 함수 작성: 프로세스 시작 및 완료 시간을 기록합니다.

1.Extract

import pandas as pd
import glob

csv_files = glob.glob("*.csv")
json_files = glob.glob("*.json")
data = pd.DataFrame(columns=["Name", "Height", "Weight"])

for file in csv_files + json_files:
    if file.endswith(".csv"):
        temp_data = pd.read_csv(file)
    elif file.endswith(".json"):
        temp_data = pd.read_json(file)
    data = data.append(temp_data, ignore_index=True)

 

2. Transform

def transform_data(data):
    data["Height"] = (data["Height"] * 0.0254).round(2)  # Inches to meters
    data["Weight"] = (data["Weight"] * 0.453592).round(2)  # Pounds to kilograms
    return data

data = transform_data(data)

 

3.Load

data.to_csv("targetfile.csv", index=False)

 

4. Logging

import datetime

def log(message):
    timestamp_format = "%Y-%h-%d-%H:%M:%S"
    now = datetime.datetime.now().strftime(timestamp_format)
    with open("logfile.log", "a") as f:
        f.write(f"{now}: {message}\n")

log("ETL process started")
# Call the extract, transform, and load functions here
log("ETL process completed")
 

 

반응형

댓글