플레이데이터 부트캠프 데이터 엔지니어링 트랙 17주차 (9.25~.29)

안인균·2023년 10월 3일
0
post-thumbnail

이번주차는 짧습니다. 학습날짜가 총 9월 25일부터 27일까지 진행되었으며 9월 29일이 추석인 관계로 28일부터 10월 3일까지 연휴기간이었습니다. 또한 27일에는 감기 몸살로 인해 수업을 불참해 학습에 관한 내용은 25-26일뿐 입니다.

Microsoft storeUbuntu 앱과 wsl 의 환경을 이용했고 airflow를 설치하고 예제 dag.py 파일을 작성한 후 실습하는 과정을 진행했습니다. 또한 "Binance(바이낸스)" - 암호화폐 거래소, 사이트를 크롤링한 데이터와 시계열 라이브러리를 이용해 비트코인 가격 예측을 하는 실습을 각각 진행했습니다.

1. ✅ 학습 내용 ✍

  • Ubuntu 환경에 airflow_install.sh 파일을 이용해 설치하고 활용하는 학습을 진행했습니다.

    • 먼저 리눅스 환경에서 Docker(도커) 를 설치한 후
    • 그 안에 airflow(에어플로우) 를 설치해
    • localhost:8080 주소를 통해 에어플로우를 실행할 수 있었습니다.

✅ Docker desktop 에서 확인한 컨테이너 실행 상태 이미지

이미지

  • dag01.py , dag02.py 를 따로 작성하여 에어플로우 사이트에서 실행을 확인할 수 있었습니다.

    • dag01.py : 두 개의 task가 "0 0 * * *" (매일 0시 0분마다) 실행됨
    • dag02.py : 두 개의 task가 "/1 * * *" (10분마다) 실행됨

✅ task schedule 시간 형식 정하는 방법.

image

  • 웹 크롤링과 시계열 라이브러리 를 이용해 비트코인 가격 예측을 하는 실습을 학습했습니다.

    1. 암호화폐 거래소 사이트인 "바이낸스" 사이트의 API를 이용해
    2. 파이썬의 requests 모듈을 이용해 "bitcoin"의 데이터를 수집했습니다.
    3. 데이터 수집은 '2023-09-15 00:00 ~ 09-26 23:59' 동안 매 분당 비트코인 가격을 수집했습니다.
    4. 이후 수집한 데이터는 MySQL 에 저장했습니다.
    5. 저장된 데이터 중 "시간과 종가" 데이터만 DataFrame 으로 옮긴 뒤
    6. prophet 모듈을 이용해 연간, 월간, 주간, 일간 등의 트렌드성을 반영 하고
    7. 1시간을 60분으로 나누어 다음 시간의 비트코인 가격을 예측하였습니다.
    8. 이후 mean_squared_error 와 r2_score 함수를 통해 실제 값과 예측값의 차이를 확인했고
    9. 최종적으로 94%의 정확도를 확인하고
    10. 각 데이터들을 다시 테이블에 저장하였습니다.

실제값, 예측값, 예측 하한선-상한선을 시각화한 그래프
(검정-실제값, 빨강-예측값, 파랑-예측 하한선, 초록-예측 상한선)

image

2. 😄 학습하면서 느낀 점 😭

  • VScode 에서 Remote SSH 확장 프로그램을 통해 위에서 활성화한 우분투 환경에 접속할 수 있었고, vi 명령어를 쓰지 않고도 자유롭게 파일을 작성할 수 있었습니다. 처음 알게된 방법이었고 상당히 유용하다고 생각되어 좋았습니다. 앞으로 가능하다면 이를 통해 리눅스 환경 내에 파일을 작성할 것 같습니다.

  • airflow DAGschedule 이 어떠한 시간 형식을 띄고 있는 지 학습할 수 있어서 만족스러웠습니다.

  • 윈도우 환경에서 도커파일을 통해 리눅스 bash을 열어 그 안에 에어플로우를 설치하는 것이 아닌 직접 설치한 Ubuntuwsl 을 이용해 리눅스 환경 내에 도커를 설치하고 에어플로우를 설치하는 방법 을 실행했는데 wsl에서 도커가 실행되지 않아 어려움을 겪었습니다.
    문제 해결을 위한 여러 검색을 통해 wsl 버전이 '2' 여야 하는데 현재 사용 중인 wsl이 버전 1이어서 실행되지 않았음을 깨달았고 wsl --set-version Ubuntu(배포환경명) 2 명령어를 통해 wsl 버전2 를 사용하게 되었고 다행히 에어플로우가 설치되어 이 다음 수업을 진행할 수 있었습니다.
    부트캠프를 하면서 상당히 다양한 환경들을 마주했고, 그때마다 환경 설정하기 때문에 많은 것들이 겹쳐져 발생할 수 있는 에러가 많았고 그때마다 해결해가면서 해당 시스템에 익숙해질 수 있는 경험을 할 수 있었습니다.

  • 시계열 라이브러리를 이용해 데이터 분석 코딩을 하면서 datetimetime 모듈을 이용해 시간의 정수화, 정수의 시간화 등을 실행하는 과정을 보면서 각각의 값들이 어떻게 변환되는 지 알 수 있었고 특히 시계열 데이터를 다룰 때 중요한 내용이라고 생각되어 만족스러운 학습이었습니다.

  • 예측값 검증과 시각화 과정을 통해 '데이터 분석-예측' 등의 활동이 검증과정도 중요하지만 시각화를 통해 눈으로 다시 한번 직접 데이터들을 확인하는 것과 이후의 발표 자료나 협업 과정에서 매우 중요한 포인트가 될 것 같다는 생각이 들었습니다. 다양한 학습을 하면서 머리 속에 넣는 것도 중요하지만, 이를 입 밖으로, 표현하는 것도 중요하다고 생각되어 좋은 깨달음을 얻을 수 있었습니다.

  • 다른 활동들로 인해 시간이 부족해 크롤링하는 과정을 airflow DAG 에 등록하지 못한 점이 아쉬웠습니다.
    만약 AWS 서비스와 airflow를 이용했다면 컴퓨터를 끄고도 2023-09-26 23:59 까지 데이터를 전부 모을 수 있을 뿐더러 계속해서 매 분마다 데이터를 모을 수 있을 것 같았지만 다음 시간으로 미루어 오늘의 학습에는 아쉬운 점이 되었습니다.

3. 🚩 앞으로의 계획 🚀

벌써 부트캠프를 한 지 17주, 약 4개월 정도의 시간이 흘렀고 회사 채용 공고들이 눈에 보였습니다. 그동안 학습한 내용들을 꾸준히 정리했고 이를 저만의 "포트폴리오" 로 활용하면서 취업 준비를 할 예정입니다. 아직 완벽하다고는 생각되지 않지만 이번 부트캠프를 하면서 무엇을 하면 좋고 즐거운 지를 알 수 있었던 것 같고 이를 중심으로 공채에 지원할 예정입니다.
각 회사마다 요구하는 것이 다르지만 저만의 장점을 잘 표현하고자할 것이고 코딩 테스트 또한 준비할 예정입니다.

0개의 댓글

관련 채용 정보