본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

[파이썬] - 네이버 파이낸스에서 KT 주가 가져와서 Plotly 반응형 그래프 그리기

by 동장군님 2020. 11. 28.
728x90
반응형

이번 포스팅에서는 내가 실제로 포트폴리오에 담고 있는 KT 종목의 주가를 네이버 파이낸스 페이지에서 가져와서 Ploty라는 반응형 그래프를 그리도록 하겠다. 

 

한국거래소 krx.co.kr 사이트에서 국내 상장 종목 전체 가져오기

import pandas as pd
stock_code = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', header=0)[0]
stock_code=stock_code[['회사명','종목코드']]
stock_code=stock_code.rename(columns={'회사명':'company','종목코드':'code'})
stock_code['code']=stock_code.code.map('{:06d}'.format)

 

 

네이버 파이낸스에서 KT 주가 가져오기

company='케이티' 
code = stock_code[stock_code['company']==company].code.values[0].strip() 

df = pd.DataFrame()
for page in range(1,51):
    url = 'http://finance.naver.com/item/sise_day.nhn?code={code}'.format(code=code)     
    url = '{url}&page={page}'.format(url=url, page=page)
    df = df.append(pd.read_html(url, header=0)[0], ignore_index=True)

df=df.dropna()
df=df.rename(columns={'날짜':'date','종가':'close','전일비':'diff','시가':'open','고가':'high','저가': 'low', '거래량': 'volume'})
df[['close', 'diff', 'open', 'high', 'low', 'volume']] = df[['close', 'diff', 'open', 'high', 'low', 'volume']].astype(int)
df['date'] = pd.to_datetime(df['date']) 
df = df.sort_values(by=['date'], ascending=True) 

df를 출력하면 아래와 같이 2018년 11월 20일 이후부터 KT 주가를 가져올 수 있는 점을 확인할 수 있다.

 

 

 

Matplotlib으로 단순 그래프 그리기

import matplotlib.pyplot as plt
%matplotlib inline 
import plotly
import plotly.graph_objects as go
import plotly.express as px

plt.figure(figsize=(16,8))
plt.plot(df['date'], df['close'])
plt.xlabel('price')
plt.ylabel('close')
plt.show()

 

Matplotlib으로 KT 주가를 단순하게 그려봤는데 내가 왜 여기에 투자했는지 모를 정도로 지난 2년간 하향 추세를 보여주고 있는 상황이다. 

 

 

Plotly로 반응형 그래프 그리기

fig = px.line(df, x='date', y='close', title='{}의 종가(close) Time Series'.format(company))

fig.update_xaxes(
    rangeslider_visible=True,
    rangeselector=dict(
        buttons=list([
            dict(count=1, label="1m", step="month", stepmode="backward"),
            dict(count=3, label="3m", step="month", stepmode="backward"),
            dict(count=6, label="6m", step="month", stepmode="backward"),
            dict(step="all")
        ])
    )
)
fig.show()

 

그래프 왼쪽 상단에 1m, 3m, 6m, all 버튼을 클릭하면 기간별로 주가 그래프를 조정할 수 있고, 아래 두 번째 그래프 스케일을 조정함으로써도 동일하게 기간별로 주가를 잘라서 볼 수 있는 장점이 있다.

 

 

728x90
반응형

댓글