[Data] #1 yfinance로 삼성전자 주가 데이터 수집하기
·
Data
이번 포스트에서는 yfinance를 이용해서 주가 데이터를 직접 수집하는 방법을 다룹니다. 들어가며그동안 포트폴리오는 구글 스프레드시트로 관리해왔는데, 일부 종목은 가격 데이터가 누락되거나 업데이트가 늦어 전체 포트폴리오를 일관된 기준으로 관리하기 어렵다는 문제가 있었다. 이 문제를 해결하기 위해, 외부 도구에 의존하기보다는 주가 데이터를 직접 수집하고 관리하는 방식을 시도해보기로 했다. 이번 글에서는 "일단 가장 간단한 형태"로, 주가 데이터를 직접 수집하고 1/3/6/12개월 수익률을 계산하는 스크립트를 만들어본다. 주가 데이터 수집 방식 선택주가 데이터를 수집하는 방법은 다양하다. 가장 대표적인 방법은 증권사 API를 사용하는 것인데, 안정성과 정확성 면에서는 장점이 있다. 다만, 인증 절차, 초기..
[Data] Data Engineering Zoomcamp 2주차
·
Data
이번 주는 워크플로우 오케스트레이션의 기본 개념을 배우고, Kestra라는 툴을 활용해 간단한 워크플로우를 만들어보는 실습을 진행했다. 단순히 ETL 코드를 작성하기보다는, 데이터 파이프라인을 언제, 어떤 순서로, 어떻게 실행하고 관리해야 하는지를 고민해볼 수 있었던 한 주였다. 이번 주에 배운 것들Kestra를 사용한 데이터 파이프라인 오케스트레이션변수와 표현식을 사용한 동적 워크플로우 구성과거 데이터를 처리하는 Backfill 개념과 구현타임존을 고려한 스케쥴 설정Airflow는 이전에 사용해봤지만, Kestra는 이번에 처음 접해봤다. 파이썬뿐 아니라 다양한 언어를 지원하고, 코드를 많이 작성하지 않아도 No Code 기반 워크플로우를 구성할 수 있다는 점이 특히 인상적이었다. 간단한 예제 위주..
[Data] Data Engineering Zoomcamp 1주차
·
Data
Data Engineering Zoomcamp 1주차 회고 회사에서 데이터 엔지니어링 라이프사이클의 일부만 경험하다 보니, 전체 흐름을 한 번은 처음부터 끝까지 직접 다뤄보고 싶다는 생각이 들었다. Data Engineering Zoomcamp는 이 과정을 경험할 수 있는 좋은 기회라고 느껴 수강하게 되었다. 1주차에서는 Docker, SQL, Terraform을 다뤘다. 특히 Docker Compose 네트워킹이 헷갈렸다. pgAdmin에서 localhost로 PostgreSQL에 연결되지 않는 이유를 정리해보면서, 컨테이너 간 통신은 서비스 이름과 내부 포트를 사용해야 한다는 기본 개념을 확인했다. Terraform은 대략적으로만 알고 있었는데, 가장 신기했다. UI에서 하나씩 설정하던 작업을 코드..
[Spark] 데이터프레임과 실행 계획
·
Data/Spark
스파크의 데이터프레임과 실행 계획에 대해 정리한 글입니다. 1. 들어가며스파크의 동작 원리를 이해하기 위해 유튜브의 PySpark - Zero to Hero 시리즈와 여러 자료를 보면서 내용을 정리하고 있습니다. 이번 글에서는 스파크의 데이터프레임(DataFrame)과 실행 계획에 대해 다뤄보겠습니다. 내용 중 부정확하거나 애매한 부분이 있다면, 편하게 알려주세요! 2. 데이터프레임이란?데이터프레임은 스파크에서 데이터를 다룰 때 가장 많이 사용하는 구조적 API(Structured API)입니다. 여기서 "구조적"이라는 말은 데이터가 스키마, 즉, 컬럼 이름과 데이터 타입이 명시된 정형 데이터 형태로 표현된다는 뜻입니다. 데이터프레임은 행(row)과 열(column)로 구성된 표 형태의 데이터 구조로, ..
[Data] DE #100일챌린지 - Day 0: 시작
·
Data
들어가며부트캠프를 수료한지 얼마되지 않아, 감사하게도 데이터 엔지니어로 일할 수 있는 기회를 얻게 되었습니다. 실무 환경에서 새로운 것을 배우며 성장하고 있지만, 시간이 지날수록 한 가지 생각이 커져갔습니다."데이터 엔지니어링, 더 알고, 더 잘하고 싶다." 그렇게 고민하던 중, 우연히 "#100일챌린지"라는 책을 읽게 되었습니다. 100일 동안 매일 AI와 함께 프로그래밍을 하며 성장한 과정을 기록한 책이었는데, 그 안에서 몇 가지 중요한 메시지를 얻었습니다.직접 만들어보고 부딪히는 경험은 실력 향상에 큰 도움이 된다.AI를 잘 활용하는 것이 중요하다.꾸준함도 재능이다.그래서 결심했습니다. 이 여운이 가시기 전에, 저도 한 번 매일 성장하는 경험을 해보기로요. 목표: "0에서 1까지 만들어보기"100일..
[Spark] 변환과 액션
·
Data/Spark
스파크에서의 변환과 액션에 대해 정리한 글입니다. 1. 들어가며스파크의 동작 원리를 이해하기 위해 유튜브의 PySpark - Zero to Hero 시리즈와 여러 자료를 보면서 내용을 정리하고 있습니다. 이번 글에서는 스파크의 변환(Transformation)과 액션(Action)에 대해 다뤄보겠습니다. 내용 중 부정확하거나 애매한 부분이 있다면, 편하게 알려주세요! 2. 스파크 데이터 처리의 기초2.1. 변환과 불변성스파크의 데이터프레임은 내부적으로 RDD(Resilient Distributed Dataset) 위에서 동작하는데, RDD는 한 번 생성되면 수정할 수 없는(immutable) 데이터 구조입니다. 그렇다면, 스파크에서는 어떻게 데이터를 가공할 수 있을까요? 스파크는 기존 데이터를 수정하지 ..
[Databricks] SQL로 S3 Parquet 파일 테이블처럼 읽기
·
Data/Databricks
Databricks로 개발하다가 알게된 소소한 지식/경험을 공유합니다.오늘은 Databricks SQL로 S3에 저장된 Parquet 파일을 테이블처럼 읽는 방법을 다룹니다. 1. 들어가며업무 중, S3에 있는 Parquet 파일의 데이터를 쿼리로 빠르게 확인하고 싶은 상황이 생겼습니다. External Table로 등록해도 되지만, 스키마 정의나 테이블 생성을 해줘야 하는 번거로움이 있는데요. 이번 글에서는 더 간단하게 Databricks SQL로 S3에 있는 파일들을 테이블처럼 읽는 방법을 정리해보겠습니다. 2. 사용 방법2.1. 단일 파일 읽기아래처럼 파일 포맷과 경로만 지정해주면, Databricks SQL이 Parquet 파일 안에 있는 메타 데이터를 읽어서, "어떤 컬럼이 있고, 데이터 타입은..
[Spark] 스파크란 무엇인가?
·
Data/Spark
스파크가 무엇인지를 정리한 글입니다. 1. 들어가며일을 하면서 PySpark를 사용하다 보니, 그때그때 필요한 기능만 쓰게 되어서, "이참에 전체적으로 한번 정리해봐야겠다"는 생각이 들었습니다. 그래서 유튜브의 PySpark - Zero to Hero 시리즈를 기반으로 스파크의 기본 개념과 동작 방식을 하나씩 정리해보려고 합니다. 이번 글에서는 스파크가 무엇인지, 어떻게 작동하는지를 간단히 살펴보겠습니다. 2. 스파크란 무엇인가?스파크는 한마디로, 엄청 큰 데이터를 여러 컴퓨터가 나눠서 빠르게 처리할 수 있도록 도와주는 오픈소스 프로그램입니다. 흔히 "빅데이터 처리 엔진"이라고 부르는데요. 여기서 엔진이란, 데이터를 읽고, 나누고 계산해서 원하는 결과를 만들어내는 "두뇌" 같은 존재라고 생각하면 됩니다...