네이버 금융 데이터

웹 스크레이핑

DB에 저장

DB에서 내가 원하는 자료 찾기

 

마리아디비 설치는 책에 설명한 방법이 아닌 도커를 이용 했다. 예전에 도커를
사용해 봤지만, 만족할 만큼은 아니여서 걱정이 됐다. 하지만 예전과 다르게
별다른 문제 없이 원하는 대로 도커도 잘 설치 됐고, 마리아디비 이미지도
잘 받아졌으며, 설정도 잘 됐다. 책에 있는 시세 조회 API 개발 코드를 보고 만드는데도
오타 때문에 고생 좀 했다. 실습 영상에도 적나라 하게 나온다.

 

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /Users/Shared/data/mariadb:/var/lib/mysql --name mariadb_local mariadb

-d 데몬으로 실행한다. 
-p 포트포워딩 해준다. 로컬이라 3306 3306 했다
-e MYSQL_ROOT_PASSWORD root 패스워드 설정한다.
-v 디비 데이터 저장할 폴더이다
--name 컨테이너 이름이다

 

docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb
docker exec -it mariadb /bin/bash

 

youtu.be/uipdLntAbII

 

 

CHAPTER 5 시세 DB 구축 및 시세 조회 API 개발
5.1 야후 파이낸스와 네이버 금융 비교하기

5.1.1 야후 파이낸스 데이터의 문제점
5.1.2 네이버 금융 데이터로 시세 데이터베이스 구축하기

 

5.2 마리아디비 설치 후 접속 확인
5.2.1 마리아디비 설치
5.2.2 마이에스큐엘 클라이언트로 접속 확인
5.2.3 헤이디에스큐엘
5.2.4 파이마이에스큐엘로 버전 정보 확인하기

 

5.3 주식 시세를 매일 DB로 업데이트하기
5.3.1 DBUpdater 클래스 구조
5.3.2 헤이디에스큐엘로 테이블 생성하기
5.3.3 복합 기본키
5.3.4 파이마이에스큐엘로 테이블 생성하기
5.3.5 종목코드 구하기 
5.3.6 종목코드를 DB에 업데이트하기
5.3.7 주식 시세 데이터 읽어오기
5.3.8 일별 시세 데이터를 DB에 저장하기
5.3.9 json을 이용한 업데이트 페이지 수 설정
5.3.10 마리아디비 자동 연결 해제 방지

5.3.11 DBUpdater.py  전체 소스 코드

5.3.12 Run 레지스트리 등록해 자동 실행하기

 

5.4 일별 시세 조회 API
5.4.1 클래스 구조 
5.4.2 생성자와 소멸자로 DB 연결 관리
5.4.3 일별 시세 조회 API
5.4.4 기본 인숫값 처리
5.4.5 정규표현식으로 연 월 일 분리하기
5.4.6 회사명으로 종목코드 조회하기

5.4.7 Analyzer.py 전체 소스 코드

5.5 핵심 요약

 

이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4.5 OHLC 캔들 차트 203p

다음글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

 

 

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

원래는 [파이썬 증권 데이터 분석]과 같이 시작하려고 했는데 조금 늦었다.
오늘은 cafe24.com 3개월 무료 이용권을 사용하여 자동으로 워드프레스를 설치 했다.

 

 

khan2222 – 또다른 워드프레스 사이트

워드프레스에 오신 것을 환영합니다. 이것은 첫 게시물입니다. 수정하거나 삭제하고 글쓰기를 시작하세요!

khan2222.cafe24.com

자동 설치라 책의 내용대로 스텝 바이 스텝으로 하면 된다.
다행히도 수동으로 설치 하는 방법도 있어서 좋다.

 

지난달에 구매한 라즈베리파이 4에 직접 워드프레스를 설치해 봐야 겠다.
[FTP 설정, 도커위에 워드프레스 & 데이터베이스]
쉽게 쉽게 되야 될텐데....... 뭐 천천히 하면 되겠지^^.

 

시작했으니 좋다!

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

mplfinance 라이브러리를 이용하면 쉽게 OHLC 관련 차트를 그릴 수 있다. 

mplfinance에 맞게 data들을 가공해 주면 된다.

 

책에 있는 소스

import pandas as pd
from urllib.request import urlopen
from bs4 import BeautifulSoup
import mplfinance as mpf

url = 'https://finance.naver.com/item/sise_day.nhn?code=068270&page=1'
with urlopen(url) as doc:
    html = BeautifulSoup(doc, 'lxml') 
    pgrr = html.find('td', class_='pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]  

df = pd.DataFrame()
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'  
for page in range(1, int(last_page)+1): 
    page_url = '{}&page={}'.format(sise_url, page)  
    df = df.append(pd.read_html(page_url, header=0)[0])

df = df.dropna()
df = df.iloc[0:30]
df = df.rename(columns={'날짜':'Date', '시가':'Open', '고가':'High', '저가':'Low', '종가':'Close', '거래량':'Volume'})
df = df.sort_values(by='Date')
df.index = pd.to_datetime(df.Date)
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

mpf.plot(df, title='Celltrion candle chart', type='candle')

mpf.plot(df, title='Celltrion ohlc chart', type='ohlc')

kwargs = dict(title='Celltrion customized chart', type='candle',
    mav=(2, 4, 6), volume=True, ylabel='ohlc candles')
mc = mpf.make_marketcolors(up='r', down='b', inherit=True)
s  = mpf.make_mpf_style(marketcolors=mc)
mpf.plot(df, **kwargs, style=s)

'User Agent' 추가한 코드

'''
셀트리온 캔들 차트 신버전
'''

import pandas as pd
import urllib.request as urllib
from bs4 import BeautifulSoup
import mplfinance as mpf

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

# 4.4.3 맨 뒤 페이지 숫자 구하기
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'
with opener.open(sise_url) as doc:
    html = BeautifulSoup(doc, 'lxml')
    pgrr = html.find('td', class_ = 'pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]

# 4.4.4 전체 페이지 읽어오기
df = pd.DataFrame()
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(page_url), header = 0)[0])

# 차트 출력을 위해 데이터프레임 가공하기
df = df.dropna()
df = df.iloc[0:30]
df = df.rename(columns = {'날짜' : 'Date', '시가' : 'Open', '고가' : 'High', '저가' : 'Low', '종가' : 'Close', '거래량' : 'Volume'})
df = df.sort_values(by = 'Date')
df.index = pd.to_datetime(df.Date)
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

# 엠피엘_파이낸스로 캔들 차트 그리기
mpf.plot(df, title = 'Celltrion candle chart', type = 'candle')


 

'User Agent'가 추가된 url 객체를 돌려주는 함수를 하나
만들어서 앞으로 편안하게 써야 겠다.

 

실습 동영상

 

 

 

 

matplotlib/mplfinance

New mplfinance package (replacement for mpl-finance). - matplotlib/mplfinance

github.com

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석

4.5 OHLC와 캔들 차트
4.5.1 OHLC 차트와 캔들 차트의 비교
4.5.2 셀트리온 종가 차트
4.4.3 셀트리온 캔들 차트
4.6 핵심 요약 

 

이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p

다음글 -

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

녹화한 실습 동영상을 보니 꽤 플레이 타임이 길다.
오래 걸린 이유는 고질병인 '오타'!
그리고 그리고 '유저 에이전트'

 

'유저 에이전트' 정보 없이 웹페이지를 읽을 경우
원하는 데이터를 얻을 수 없다.

import pandas as pd
import urllib.request as urllib

sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

df = pd.DataFrame()
last_page = 385

print('wait......')
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(page_url), header = 0)[0])

df = df.dropna()

셀트리온 데이터를 읽어 오는 코드다. 책에 있는 내용에
'유저 에이전트' 부분을 추가한 코드.

크롬 개발자 모드 콘솔에서 'navigator.userAgent'로 확인

 

실습 동영상

 

Web Scraping 관련 동영상 자료 - 한 번쯤 보면 좋은 동영상

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석
4.1 팬더스로 상장법인 목록 읽기
4.1.1 엑셀 파일 내용 확인하기
4.1.2 read_html() 함수로 파일 읽기 

4.2 HTML 익히기 ....
4.2.1 HTML 기본 구조
4.2.2 HTML 주요 태그
4.2.3 HTML 예시 ...

4.3 웹에서 일별 시세 구하기
4.3.1 네이버 금융 일별 시세 분석하기
4.3.2 소스 코드에서 링크 주소 검색하기

4.4 뷰티풀 수프로 일별 시세 읽어오기
4.4.1 파서별 장단점
4.4.2 find_al() 함수와 find() 함수 비교
4.4.3 맨 뒤 페이지 숫자 구하기
4.4.4 전체 페이지 읽어오기 

 

이전글 - 2021/02/02 - [책들] - 파이썬 증권 데이터 분석 3.6 회귀 분석과 상관관계 ~ 171p

이후글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4.5 OHLC 캔들 차트 203p

 

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

포트폴리오의 전반적인 위험을 줄일 수 있는 방법으로 상관관계가
낮은 자산으로 포트폴리오를 구성한다. 회귀 분석을 통하여
상관관계를 분석하여 상관계수를 구한다.

 

이번 예제 실습 중 미국 국채와(TLT) KOSPI(^KS11)의 회귀 분석이
있는데 TLT의 자료가 책에 그려진 그래프와는 다른 거 같다.
그렇지만 상관 계수는 얼추 비슷하게 나왔다.

 

해당 자산을 지수화 ->
사이파이를 이용하여 선형 회귀 분석 ->
상관 계수 구하기(데이터프레임, 시리즈로)->

결정 계수 구하기

 

코드로 작성하는 건 어렵지 않다.
단어에 대한 이해가 필요한 부분이다.
앞으로도 더욱 더 이해가 많이 필요할 거 같다.

3.6 회귀 분석과 상관관계
3.6.1 KOSPI와 다우존스 지수 비교 
3.6.2 지수화 비교
3.6.3 산점도 분석
3.6.4 사이파이 선형 회귀 분석 .....
3.6.5 선형 회귀 분석

3.7 상관계수에 따른 리스크 완화
3.7.1 데이터프레임으로 상관계수 구하기
3.7.2 시리즈로 상관계수 구하기
3.7.3 결정계수 구하기
3.7.4 다우존스 자수와 KOSPI의 회귀 분석
3.7.5 상관계수에 따른 리스크 완화

 

이전글 - 2021/02/01 - [책들] - 파이썬 증권 데이터 분석 3.4 주식비교하기 ~ 153p

이후글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

일정 기간의 시세를 기본으로 일간 변동률과 누적 수익률을 구한다.
야후 파이낸스(yfinance) 라이브러리를 이용하여 해당 종목의
시세를 구할 수 있다.

 

책에서는 누적 수익률을 인간 변동률의 누적합으로 되어 있으나, 누적곱으로
구해야 한다. 관련 오류는 해당 책 오탈자 부분에 자세하게 나와 있다.

 

아래는 '삼성전자'와 '마이크로소프트'의
2018년부터 지금까지 누적수익률 그래프다.

 

마소가 대단하긴 대단한가 보다!

 

 

파이썬 증권 데이터 분석

이 책은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전 과정을 파이썬으로 직접 구현한다. 그 과정에서 금융 데이터 처리 기본 라이브러리(팬더스)부터

www.hanbit.co.kr

 

Learning pandas - Second Edition

Calculating simple daily cumulative returns of a stock The simple cumulative daily return is calculated by taking the cumulative product of the daily percentage change. This calculation is represented by … - Selection from Learning pandas - Second Editio

www.oreilly.com

 

실습 동영상

이전글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

이후글 - 2021/02/02 - [책들] - 파이썬 증권 데이터 분석 3.6 회귀 분석과 상관관계 ~ 171p

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

Numpy & Pandas & Matplotlib은 데이터들을
쉽고, 빠르게, 시각적으로 다룰 수 있게 해주는 라이브러리다.

 

책에 있는 내용들은 기본 중에 기본이기 때문에 아래 문서들을
한 번씩 훑어보기에는...... 그래서 책에 있는 기초적인
부분에 집중하기로 했다.

책에 있는 기본적인 내용을 보고 문서들을 본다면

어렵지 않게 라이브러리들을 볼 수 있을 거 같다.

 

아래는 142p까지의 예제 실습 동영상! 예전에 numpy를
해본 적이 있어서 pandas도 어렵지 않게 슥~

 

 

 

 

matplotlib.org/contents.html

 

Overview — Matplotlib 3.3.3 documentation

 

matplotlib.org

pandas.pydata.org/docs/

 

pandas documentation — pandas 1.2.1 documentation

API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

pandas.pydata.org

matplotlib.org/3.1.1/users/index.html

 

User's Guide — Matplotlib 3.1.2 documentation

 

matplotlib.org

CHAPTER 3 팬더스를 활용한 데이터 분석
3.1 넘파이 배열
3.1.1 배열 생성 
3.1.2 배열 정보 보기 
3.1.3 배열의 접근
3.1.4 배열 형태 바꾸기
3.1.5 배열의 연산
3.1.6 브로드캐스팅
3.1.7 내적 구하기

3.2 팬더스 시리즈
3.2.1 시리즈 생성
3.2.2 시리즈의 인덱스 변경
3.2.3 데이터 추가 
3.2.4 데이터 인덱싱 
3.2.5 데이터 삭제 
3.2.6 시리즈 정보 보기
3.2.7 시리즈 출력하기

3.3 팬더스 데이터프레임
3.3.1 딕셔너리를 이용한 데이터프레임 생성
3.3.2 시리즈를 이용한 데이터프레임 생성
3.3.3 리스트를 이용한 데이터프레임 생성
3.3.4 데이터프레임 순회 처리

 

이전글 - 2021/01/29 - [책들] - [파이썬 증권 데이터 분석] 시작하며 ~121p

이후글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,
개발 환경
윈도우 10,  크롬, 마리아디비, 파이썬 및 IDLE 64bit & 32Bit, 팬더스, 뷰티플 수프, 장고, 텐서플로

파이썬 32bit를 사용하는 이유가 증권사 COM방식의 API를 사용하기 위해서 32bit를 사용한다. 더불어 가상 환경(venv) 를 이용하여 각각의 버전을 설치하여 사용한다. 아나콘다와 주피터 노트북을 이용해도 될 듯.

 

책에 클래스에 대한 설명이 있다. '틀'에 빗대어 설명을 했는데, 책에도 설명한 설계도(blueprint)로 생각하면 좋겠다.

 

cmd vs powershell

powershell이 나온지도 꽤 오래 됐다. 그 동안 cmd만 사용했는데, 이 책은 powershell을 이용해야 겠다. 참고로 관리자 권한으로 powershell를 실행하고, 실행권한을 Unrestricted로 변경해야 권한에러를 해결 할 수 있다.

 

Set-ExecutionPolicy Unrestricted

 

아래 동영상은 책에 나온 예제 실습 동영상이다.
파이썬 언어의 기본적인 것들은 빼고 121p까지의 예제 중에
필요한 부분만 동영상으로 만들었다.

예제 실습 동영상

이전글 -

이후글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

 

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

<책 표지>



서평 등록일이 내일까지 인데 오늘에서야 코딩 및 결과 확인이 마무리 됐다^^. 무료 동영상 강의 제공은 확인을 하지 못해서 아쉽다.


큰 빵을 한꺼번에 먹으려면 힘들다. 한꺼번에 먹는 사람도 있지만, 대부분은 아니다. 개인적으로 크게 한번에 설명하는 것 보다는 큰것을 작게 나누어 여러번 설명하는 방식을 좋아한다. 왜냐하면, 어려워 보이는 것도 쉽게 이해 할 수 있고 사소한 차이도 알 수 있기 때문이다. '진짜 코딩하며 배우는 파이썬' 제목처럼 이 책은 그렇게 되어 있다. 완벽하게 파이썬에 대해서는 알 수 없지만, 책을 다 보고 난 후에는 재미를 느끼며 뭔가 더 할 수 있는 것들을 생각하게 될것이다. 나 같은 경우는 텍스트로 되어진 부분을 그림으로 표시 한다 던지! 텍스트 끝말잇기가 아닌 음성 끝맛잇기 게임을 만든다든지!



위 사진의 내용처럼 이 책은 파이썬 고급 주제로 맘스터치, 바리스타 프로그램을 만들고 응용한다. 파이썬의 기본적인 내용을 먼저 설명하고 코딩하는 것이 아닌, 필요한 부분을 설명하고 프로그램 완성하는 방식이다. 거기에 맛보기 수준으로 openCV를 이용한 영상 인식과 구글 speech로 음성인식을 위해 구글 클라우드 플랫폼을 사용하는 방법을 누구나 따라 할 수 있도록 잘 설명되어 있다. 인터넷에 찾아보면 코드들이 널려 있겠지만, 흥미로운 주제인 만큼 관련된 경험이 없다면, 책을 통해서 접해 보길 적극 추천 한다.


책에선 파이썬 최신버전, IDLE, NOTEPAD++, PyCharm이용 하였지만, Visual Studio Code를 이용하여 파이썬 및 hexadump 확장 기능을 이용하여 어려움 없이 책의 코드를 실행하고 결과를 확인 했다.

반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,

대부분 YES24를 통해서 책을 구매 한다.  AK 상품권이 있어서, 잠깐 교보문고에 방문했다.


열혈강호는 기다려서 나올때마다 샀는데, 열혈강호를 사고 보니 초판 발생이 4월 30일!. 

처음에는 책을 구매 했고!

블로그에 올라온 연재(사진이 아닌 글로 쓴를 먼저 보고 모이면 책을 구매 했고 - 지금은 안봄

만화 포털에서 연재하는걸 돈을 주고 보고 책을 구매 했고 - 지금은 돈을 주고 구독 안함

현재 지금은 유튜브에서 보고, 책으로 구매를 한다. 확실히 책이 주는 특별한 느낌이 있어서 열혈강호만은 책으로 구매하고 있다.


이젠 열혈강호 80권을 마지막으로 더이상 열혈강호 만화책은 구매하지 않을 것이다......


텐서플로로 배우는 딥러닝은 현재 하고 있는 스터디 이후에 진행할 책을 보러 갔다가 필요할거 같아서 샀다. 이 책은 스터디 진행하면서 블로그에서 천천히 내용을 읽고 써볼까 한다.



반응형
블로그 이미지

두리뭉실2:해피파인더그룹

레고가 좋고~ PBL 매력에 빠졌으며~ 취미로 개발하는 두리둥실

,