-
ETL (Extract, Transform, Load)데이터 분석 용어 2021. 12. 15. 12:34
ETL_study ETL (Extract Transform Load)¶
ETL은 추출(Extract), 변환(Transform), 적재(Load)를 뜻한다. 컴퓨팅에서 데이터베이스 이용의 한 과정으로 특히 데이터 웨어하우스에서 다음을 말한다. 이는 데이터를 다루는 IT쪽 용어이다.
- 동일 기종 또는 타기종의 데이터 소스로부터 데이터를 추출.
- 조회 또는 분석을 목적으로 데이터를 적절한 포맷이나 구조로 데이터를 저장하기 위해 데이터를 변환.
- 변환 데이터를 적재.
일단 데이터를 불러서 와서 하나씩 해보자.¶
In [12]:import pandas as pd
In [25]:df = pd.read_csv("ranging_stock_df_python3.csv")
In [26]:df
Out[26]:날짜 시가 고가 저가 종가 거래량 종목명 종목코드 시장구분 0 2021-11-01 4200 4245 4100 4110 236625 3S 60310 KOSDAQ 1 2021-11-02 4095 4385 4095 4200 190736 3S 60310 KOSDAQ 2 2021-11-03 4240 4245 4115 4180 204441 3S 60310 KOSDAQ 3 2021-11-04 4205 4215 4110 4115 131216 3S 60310 KOSDAQ 4 2021-11-05 4080 4130 3960 3985 295209 3S 60310 KOSDAQ ... ... ... ... ... ... ... ... ... ... 225 2021-11-25 24200 24250 23700 23900 92853 AP시스템 265520 KOSDAQ 226 2021-11-26 23950 24000 22950 23100 183281 AP시스템 265520 KOSDAQ 227 2021-11-29 22350 22900 22300 22500 153163 AP시스템 265520 KOSDAQ 228 2021-11-30 22750 23100 21000 21300 546017 AP시스템 265520 KOSDAQ 229 2021-12-01 21350 22400 20900 21800 146208 AP시스템 265520 KOSDAQ 230 rows × 9 columns
1. 추출(Extract)¶
필요한데이터 칼럼을 추출한다고 이해하도록 하자.
필요한 데이터는 종목명, 종목코드, 시장구분이다 이것을 이용해 나중에 날짜를 넣어 주식데이터를 불러올것이다. 링크는 아래 링크를 참고하자.In [34]:df_extract = df[["종목명","종목코드","시장구분"]]
In [35]:df_extract
Out[35]:종목명 종목코드 시장구분 0 3S 60310 KOSDAQ 1 3S 60310 KOSDAQ 2 3S 60310 KOSDAQ 3 3S 60310 KOSDAQ 4 3S 60310 KOSDAQ ... ... ... ... 225 AP시스템 265520 KOSDAQ 226 AP시스템 265520 KOSDAQ 227 AP시스템 265520 KOSDAQ 228 AP시스템 265520 KOSDAQ 229 AP시스템 265520 KOSDAQ 230 rows × 3 columns
2. 변환(Transform)¶
이제 중복된것을 .drop_duplicates()함수를 이용해 하나만 남겨서 변환하자.
또한 인덱스 순서가 엉망인것을 볼 수 있다. 인덱스 재배열을 하여 변환하자.In [54]:df_transform = df_extract[['종목명','종목코드','시장구분']].drop_duplicates()
In [55]:df_transform
Out[55]:종목명 종목코드 시장구분 0 3S 60310 KOSDAQ 23 AJ네트웍스 95570 KOSPI 46 AK홀딩스 6840 KOSPI 69 APS홀딩스 54620 KOSDAQ 92 AP시스템 265520 KOSDAQ In [56]:df_transform = df_transform.reset_index(drop = True)
In [57]:df_transform
Out[57]:종목명 종목코드 시장구분 0 3S 60310 KOSDAQ 1 AJ네트웍스 95570 KOSPI 2 AK홀딩스 6840 KOSPI 3 APS홀딩스 54620 KOSDAQ 4 AP시스템 265520 KOSDAQ 3. 적재(Load)¶
이제 변환이 끝났으니 DB로 적재해보도록 하자.
In [59]:import sqlite3
In [60]:con = sqlite3.connect("ETL.db")
In [61]:df_transform.to_sql("ETL_table",con, index=False, if_exists="replace")
In [62]:cur = con.cursor()
In [63]:cur.execute("SELECT * FROM ETL_table")
Out[63]:<sqlite3.Cursor at 0x7f76b3edfd50>
In [64]:df_load = pd.read_sql("SELECT * FROM ETL_table", con)
In [65]:df_load
Out[65]:종목명 종목코드 시장구분 0 3S 60310 KOSDAQ 1 AJ네트웍스 95570 KOSPI 2 AK홀딩스 6840 KOSPI 3 APS홀딩스 54620 KOSDAQ 4 AP시스템 265520 KOSDAQ In [72]:con.commit()
In [75]:con.close()
4. 확인¶
In [77]:con = sqlite3.connect("ETL.db")
In [79]:cur = con.cursor()
In [81]:cur.execute("SELECT * FROM ETL_table")
Out[81]:<sqlite3.Cursor at 0x7f76b3de8f10>
In [82]:df_col = pd.read_sql("SELECT * FROM ETL_table", con)
In [83]:df_col
Out[83]:종목명 종목코드 시장구분 0 3S 60310 KOSDAQ 1 AJ네트웍스 95570 KOSPI 2 AK홀딩스 6840 KOSPI 3 APS홀딩스 54620 KOSDAQ 4 AP시스템 265520 KOSDAQ In [84]:con.close()
이렇게 ETL에 대해서 간단하게 알아보았는데 하지만!!!!!!!! 많은 데이터 용어들이 남았다. 차근차근 알아가며 블로그에 많이 올려두어 기억하도록 하자.