Uniform Resource Locator
http://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=105&oid=001&aid=0009847211#da_727145
Client와 Server가 데이터를 주고 받은 결과 정보
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import requests
page, page_size = 1, 60
url = f'https://m.stock.naver.com/api/index/KOSPI/price?\
pageSize={page_size}&page={page}'
print(url)
response = requests.get(url)
response
response.text[:200]
columns = ["localTradedAt", "closePrice"]
data = response.json()
kospi_df = pd.DataFrame(data)[columns]
kospi_df.tail(2)
def stock_price(code="KOSPI", page=1, page_size=60):
""" This function is crawling stock price from naver stock web page
parameters :
code : str : KOSPI or KOSDAQ
page : int : page number
page_size : int : one page size
return :
type : DataFame of pandas"""
url = f'https://m.stock.naver.com/api/index/{code}/price?\
pageSize={page_size}&page={page}'
response = requests.get(url)
columns = ["localTradedAt", "closePrice"]
data = response.json()
return pd.DataFrame(data)[columns]
# 1. URL
page_size, page = 60, 1
url = f'https://m.stock.naver.com/front-api/marketIndex/prices?\
category=exchange&reutersCode=FX_USDKRW&page={page}&pageSize={page_size}'
# 2. request(URL) > response(JSON)
response = requests.get(url)
# 3. JSON > list, dict > DataFrame
data = response.json()['result']
df = pd.DataFrame(data)[['localTradedAt', 'closePrice']]
df.tail(2)
def exchange_rate(code='FX_USDKRW',page=1,page_size=60):
url = f'https://m.stock.naver.com/front-api/marketIndex/prices?\
category=exchange&reutersCode=FX_USDKRW&page={page}&pageSize={page_size}'
resonse=requests.get(url)
data = response.json()['result']
return pd.DataFrame(data)[['localTradedAt', 'closePrice']]
exchange_rate(page_size=10)
# 데이터 수집
page_size = 60
kp_df = stock_price('KOSPI', page_size=page_size)
kd_df = stock_price('KOSDAQ', page_size=page_size)
usd_df = exchange_rate(page_size=page_size)
# 데이터 전처리
kp_df['closePrice'] = kp_df['closePrice'].apply(lambda data: float(data.replace(',', '')))
kd_df['closePrice'] = kd_df['closePrice'].apply(lambda data: float(data.replace(',', '')))
usd_df['closePrice'] = usd_df['closePrice'].apply(lambda data: float(data.replace(',', '')))
# 시각화
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 3))
plt.plot(kp_df['localTradedAt'], kp_df['closePrice'], label='kospi')
plt.plot(kd_df['localTradedAt'], kd_df['closePrice'], label='kosdaq')
plt.plot(usd_df['localTradedAt'], usd_df['closePrice'], label='usd')
plt.legend()
plt.xticks(kp_df['localTradedAt'][::5])
plt.show()
from sklearn.preprocessing import minmax_scale
plt.figure(figsize=(20, 3))
plt.plot(kp_df['localTradedAt'], minmax_scale(kp_df['closePrice']), label='kospi')
plt.plot(kd_df['localTradedAt'], minmax_scale(kd_df['closePrice']), label='kosdaq')
plt.plot(usd_df['localTradedAt'],minmax_scale(usd_df['closePrice']), label='usd')
plt.legend()
plt.xticks(kp_df['localTradedAt'][::5])
plt.show()
# 데이터 전처리 : merge
merge_df=pd.merge(kp_df,kd_df,on='localTradedAt')
merge_df=pd.merge(merge_df,usd_df,on='localTradedAt')
merge_df.columns=['date','kospi','kosdaq','usd']
merge_df.tail(2)
# 상관계수
# x가 증가할때 y가 감소하면 -1에 가까움
# x가 증가할때 y가 증가하면 1에 가까움
merge_df.iloc[:,1:].corr()
도출