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 객체를 돌려주는 함수를 하나
만들어서 앞으로 편안하게 써야 겠다.
실습 동영상
CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석
4.5 OHLC와 캔들 차트
4.5.1 OHLC 차트와 캔들 차트의 비교
4.5.2 셀트리온 종가 차트
4.4.3 셀트리온 캔들 차트
4.6 핵심 요약
이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p
다음글 -
반응형
'책들' 카테고리의 다른 글
[파이썬 증권 데이터 분석] 5. 시세 DB 구축 및 시세 조회 API 개발 251p (0) | 2021.02.17 |
---|---|
[홍마리오의 워드프레스 입문 + 실전(종합편)] 워드프레스 설치하기(in cafe24.com) ~ 86p (0) | 2021.02.07 |
[파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p (3) | 2021.02.07 |
[파이썬 증권 데이터 분석] 3.6 회귀 분석과 상관관계 ~ 171p (0) | 2021.02.02 |
[파이썬 증권 데이터 분석] 3.4 주식비교하기 ~ 153p (0) | 2021.02.01 |