본문 바로가기

데이터분석46

[빅분기 실기] 작업형1 문제 유형별 코드 정리 내가 헷갈린 문제 유형만 정리한 문서  1. 날짜 데이터 활용# 날짜 형식으로 변환print(pd.to_datetime(df['datetime']))# 초 단위로 변환print(df['datetime']).dt.total_seconds())# 분 단위로 변환print(df['datetime']).dt.total_seconds() / 60)# 날짜만 추출print(df['datetime']).dt.date)# 시간만 추출print(df['datetime']).dt.hour)# 분만 추출print(df['datetime']).dt.minute)# 요일 추출print(df['datetime']).dt.day_name())# date type 인덱스에서 주 단위로 sum() 집계 하기print(df.resamp.. 2024. 11. 24.
[빅분기 실기] 작업형2 다중 분류 문제 예시 코드 빅분기 실기 작업형2 다중 분류 문제를 매우 간단하게 풀이할 수 있는 코드를 정리해보았다. tips 데이터로 다중 분류 문제를 만들어보았다.1. 데이터 로드import seaborn as snstips = sns.load_dataset('tips')tips 데이터를 로드해준다. 2. 결측치 제거df = tips.dropna()print(df.shape, tips.shape) # (244, 7) (244, 7)결측를 제거한다. 3. 인덱스 생성 df = df.reset_index()최종코드 제출시 인덱스 매칭이 필요하므로, 인덱스를 만들어준다. 4. 독립 변수, 종속 변수 분리X = df.drop('day', axis=1)y = df.day다중 분류 문제로 사용 가능한 day를 종속변수를 사용해주었다. d.. 2024. 11. 16.
[빅분기 실기] 모듈 이름, 함수 사용법 생각 안날 때 대처 방법 sklearn에서 불러와야할 모듈 이름이 생각이 나지 않는다고 하면, 아래와 같은 방법으로 모듈을 조회해보자.import sklearnprint(sklearn.__all__) ['calibration', 'cluster', 'covariance', 'cross_decomposition', 'datasets', 'decomposition', 'dummy', 'ensemble', 'exceptions', 'experimental', 'externals', 'feature_extraction', 'feature_selection', 'gaussian_process', 'inspection', 'isotonic', 'kernel_approximation', 'kernel_ridge', 'linear_model'.. 2024. 11. 16.
GCP 가상머신 만들기 GCE 가상머신 만드는 방법에 대해서 알아보자. 새 프로젝트 생성GCP 메뉴에서 [Compute Engine > VM 인스턴스] 클릭첫 프로젝트 생성 시, API 사용 활성화 버튼 클릭(3-5분 소요) 가상머신 인스턴스 생성인스턴스 만들기 클릭인스턴스 만들기이름 설정리전은 서울로 설정머신 유형 선택(ex. 범용, E2)메모리 선택(ex. 2GB)호스팅 유지보수 선택부팅 디스크 선택(ex. 운영체제 : Ubuntu, 버전 : Ubuntu 20.04 LTS, 크기 : 10GB)서비스 계정 설정(ex. 모든 Cloud API에 대한 전체 엑세스 허용)방화벽 설정(ex. HTTP 트래픽 허용, HTTPS 트래픽 허용) 고정 IP 주소 등록외부 IP를 고정 IP로 변경메뉴에서 [VPC 네트워크 > IP주소] 클릭.. 2024. 11. 10.
MySQL CREATE, INSERT, ALTER 문법 모음 MySQL의 여러가지 CREATE, INSERT, ALTER 문법을 소개하는 문서이다. 1. 테이블 생성CREATE TABLE DB명.테이블명( [컬럼1] [데이터 타입], -- ex) INT [컬럼2] [데이터 타입], -- ex) VARCHAR(30) [컬럼3] [데이터 타입], -- ex) DATE PRIMARY KEY ([컬럼1])); 참고로 primary key를 2 설정하는 것도 가능하다.CREATE TABLE DB명.테이블명( [컬럼1] [데이터 타입], -- ex) INT [컬럼2] [데이터 타입], -- ex) VARCHAR(30) [컬럼3] [데이터 타입], -- ex) DATE PRIMARY KEY ([컬럼1], [컬럼2])); 2. 기존 테이블에 새로운 컬럼 추.. 2024. 11. 7.
쿼리 최적화 데이터 베이스에서 성능 최적화는 디스크 I/O과 관련이 많다. 즉, 성능개선을 한다고 하는 것은 디스크 I/O를 줄이는 것이 핵심이다.  인덱스를 쓰면 조회는 빨라지지만 데이터 수정, 삭제, 생성은 느려진다는 말이 있다. 그럼에도 불구하고, 인덱스를 쓰는 것이 좋다. 일반적으로 웹서비스의 경우엔 CRUD에서 R(Read)과 CUD(Create, Update, Delete)의 비율이 8:2에서 9:1이기 때문이다. API 호출을 할때, get 요청을 하면 이게 전부 R 작업에 해당하는데, 보통 get 요청이 가장 많다.  인덱스는 데이터베이스 테이블에 대한 검색 성능 속도를 높여주는 자료구조이다. 즉, 인덱스는 책에 있는 목차라고 생각하면 된다. 목차에서 원하는 주제를 찾고 페이지 번호를 찾아가듯이, 인덱.. 2024. 11. 7.
파이썬 퀀트투자(7): 재무제표 크롤링, 적재 주가와 더불어 재무제표와 가치지표 역시 투자에 있어 핵심이 되는 데이터입니다. 이번에는 가치지표를 계산하기 위한 재무제표를 데이터를 크롤링해보겠습니다. 전편: 파이썬 퀀트투자(6): 네이버금융 수정주가 크롤링, 적재 재무제표 데이터는 여러 웹사이트에서 구할 수 있으며, 국내 데이터 제공업체인 FnGuide에서 운영하는 Company Guide 웹사이트에서 손쉽게 구할 수 있습니다.http://comp.fnguide.com/  재무제표 다운로드사이트를 접속해보면, URL이 아래와 같은 걸 알 수 있습니다. 여기서 A005930 뒤에있는 부분은 제거해도 되는 부분입니다. http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&Me.. 2024. 10. 12.
파이썬 퀀트투자(6): 네이버금융 수정주가 크롤링, 적재 주가 데이터는 투자를 함에 있어 반드시 필요한 데이터입니다. 인터넷에서 주가를 수집할 수 있는 방법은 매우 많지만, 퀀트 투자를 위한 백테스트나 종목선정을 위해서는 수정주가가 필요합니다. 그래서 이 글에서는 일반적인 주가가 아닌 수정주가 크롤링 방법을 알아보겠습니다. 전편: 파이썬 퀀트투자(5): WICS 기준 섹터정보 크롤링, 적재 수정주가가 필요한 이유를 알아보기 위해 실제 사례를 살펴보겠습니다. 삼성전자는 2018년 5월 기존의 1주를 50주로 나누는 액면분할을 실시했고, 265만 원이던 주가는 다음날 50분의 1인 5만 3000원으로 거래되었습니다. 이러한 이벤트를 고려하지 않고 주가만 살펴본다면 마치 -98% 수익률을 기록한 것 같지만, 투자자 입장에서는 1주이던 주식이 50주로 늘어났기 때문에.. 2024. 10. 12.
파이썬 퀀트투자(5): WICS 기준 섹터정보 크롤링, 적재 일반적으로 주식의 섹터를 나누는 기준은 MSCI와 S&P가 개발한 GICS를 가장 많이 사용합니다. 국내 종목의 GICS 기준 정보 역시 한국거래소에서 제공하고 있으나, 이는 독점적 지적재산으로 명시했기에 사용하는데 무리가 있습니다. 그러나 지수제공업체인 FnGuide Index에서는 GICS와 비슷한 WICS 산업분류를 발표하고 있습니다. 그래서 WICS를 크롤링하여 필요한 정보를 수집해보겠습니다. 전편: 파이썬 퀀트투자(4): 한국거래소 데이터 Mysql에 적재 1. wiseindex 사이트에서 섹터 정보 크롤링http://www.wiseindex.com/Index 먼저 웹페이지에 접속해 왼쪽에서 [WISE SECTOR INDEX → WICS → 에너지]를 클릭합니다. 그 후 [Components] .. 2024. 10. 12.
파이썬 퀀트투자(4): 한국거래소 데이터 Mysql에 적재 지난 번에 한국거래소의 업종 분류 형황 데이터를 크롤링하는 방법과 한국거래소의 개별종목 지표 데이터를 크롤링하는 방법에 대해서 알아보았습니다. 이제 이 두개의 데이터를 하나로 합친 후, Mysql에 적재할 것입니다. 먼저 두 데이터에 공통으로 존재하지 않는 종목, 즉 하나의 데이터에만 존재하는 종목을 살펴보겠습니다.(앞 글에서 사용한 코드를 그대로 이어서 사용했습니다. 전체 코드는 이 글을 참고해주세요.) 두 데이터를 set 형태로 변경한 후, symmetric_difference() 메서드를 사용하면, 하나의 데이터에만 존재하는 종목을 찾을 수 있습니다. diff = list(set(krx_sector['종목명']).symmetric_difference(set(krx_ind['종목명'])))print(.. 2024. 10. 10.
파이썬 퀀트투자(3): 한국거래소 개별종목 지표 크롤링 앞서 한국거래소의 업종 분류 현황을 크롤링하는 방법에 대해서 알아보았습니다. 이번에는 한국거래소의 개별종목 지표 크롤링하는 방법에 대해서 알아보겠습니다.KRX 정보데이터시스템 http://data.krx.co.kr/ 에서 [기본통계 → 주식 → 세부안내] 부분[12021] PER/PBR/배당수익률(개별종목): http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020502 개별종목 데이터를 크롤링하는 방법은 앞서 살펴본 방법과 매우 유사하며, 요청하는 쿼리 값에만 차이가 있습니다.    이번에도 역시 사이트에서 CSV파일을 다운로드 받은 후, generate.cmd를 클릭하여 Payload를 확인합니다.  여기서 'tboxis.. 2024. 10. 9.
파이썬 퀀트투자(2): 한국거래소 업종 분류 현황 크롤링 주식 관련 데이터를 구하기 위해 가장 먼저 해야할 일은 어떤 종목들이 해당 국가 거래소에 상장되어있는가에 대한 정보를 구하는 것입니다. 우리나의 경우, 한국거래소에서 제공하는 업종분류 형황과 개별종목 지표 데이터를 이용하면, 매우 간단하게 해당 정보를 수집할 수 있습니다. 전편: 파이썬 퀀트투자(1): 최근 영업일 기준 데이터 크롤링 여기서는 먼저 업종분류 현황 데이터를 수집하는 방법을 다뤄보겠습니다. KRX 정보데이터시스템 http://data.krx.co.kr/ 에서 [기본통계 → 주식 → 세부안내] 부분[12025] 업종분류 현황: http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020506먼저 사이트에 접속한 뒤, .. 2024. 10. 9.