본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
Study/파이썬으로 데이터 주무르기

[주식 - NC SOFT] 주식 데이터 예측하기

by 징여 2018. 7. 18.
반응형

NC SOFT 주식 데이터를 이용하여 2년간 주식을 예측해보았다

 

주식데이터 분석하기¶

 
  • 시: 시작가
  • 고: 고가
  • 저: 최저가
  • 종: 종가(해당시점) / 수정종가
In [2]:
from pandas_datareader import data
import datetime
 

야후 fianace이용 :https://finance.yahoo.com/¶

In [1]:
import fix_yahoo_finance as yf
yf.pdr_override()
In [4]:
start_date = '2008-01-01'
name = '036570.KS'
nc = data.get_data_yahoo(name, start_date)
 
[*********************100%***********************]  1 of 1 downloaded
 

ns soft 주식을 볼 것이당¶

In [6]:
nc.head(3)
Out[6]:
  Open High Low Close Adj Close Volume
Date            
2008-01-02 49000.0 50100.0 48600.0 48700.0 43573.867188 83601
2008-01-03 48650.0 49500.0 48500.0 49150.0 43976.496094 49680
2008-01-04 48700.0 49200.0 48000.0 48750.0 43618.597656 88832
In [12]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
In [9]:
nc['Close'].plot(figsize=(12, 6), grid=True)
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0x10d694e10>
 
In [11]:
nc_trunc = nc[:'2016-12-31']
nc_trunc.head(3)
Out[11]:
  Open High Low Close Adj Close Volume
Date            
2008-01-02 49000.0 50100.0 48600.0 48700.0 43573.867188 83601
2008-01-03 48650.0 49500.0 48500.0 49150.0 43976.496094 49680
2008-01-04 48700.0 49200.0 48000.0 48750.0 43618.597656 88832
In [13]:
df = pd.DataFrame({'ds':nc_trunc.index, 'y':nc_trunc['Close']})
df.reset_index(inplace=True)
del df['Date']
df.head(3)
Out[13]:
  ds y
0 2008-01-02 48700.0
1 2008-01-03 49150.0
2 2008-01-04 48750.0
In [14]:
from fbprophet import Prophet
In [26]:
m = Prophet()
m.fit(df);
 

 

In [27]:
future = m.make_future_dataframe(periods=365*2)
future.tail(3)
Out[27]:
  ds
2962 2018-12-27
2963 2018-12-28
2964 2018-12-29
In [28]:
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(3)
Out[28]:
  ds yhat yhat_lower yhat_upper
2962 2018-12-27 357156.014083 125914.870456 584369.690974
2963 2018-12-28 356983.370256 133279.020838 585731.617123
2964 2018-12-29 355064.844669 128056.489530 587925.729847
In [29]:
m.plot(forecast)
Out[29]:
 
In [30]:
m.plot_components(forecast)
Out[30]:
 
 

이제 2017년도 기록을 가지고 실제데이터와 예측데이터를 비교해보자¶

In [31]:
plt.figure(figsize=(12, 6))
plt.plot(nc.index, nc['Close'], label='real')
plt.plot(forecast['ds'], forecast['yhat'], label='forecast')
plt.grid()
plt.legend()
plt.show()
 

 

 

반응형

댓글