반응형
1. yahoo finaince에서 삼성전자 일자별 장마감 가격을 갖고오기(크롤링을 이용해서 갖고와 보기)
패키지 설치
import pandas as pd
import pandas_datareader as web
import numpy as np
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup
from urllib.request import urlopen, Request
from fbprophet import Prophet
from datetime import datetime
이후에 패키지 사용을 위해서 yahoo finance(https://finance.yahoo.com/) 에서 검색해서 일자별 데이터를 가지고 옴
html코드를 분석하여 테이블의 데이터를 갖고 옴
BeautifulSoup을 이용하서 html코딩을 파싱하고 데이터를 읽기
url = "https://finance.yahoo.com/quote/035420.KS/history?p=035420.KS&guccounter=1"
req = Request(url, headers={"User-Agent" : "Chrome"})
page = urlopen(req).read()
soup = BeautifulSoup(page, "html.parser")
table = soup.find("table")
table.text
df_raw = pd.read_html(str(table))[0]
df_raw.head()
# fbprophet을 사용하는 형식에 맞춰준 뒤, 맨 마지막 NaN 값이 있어서 제외
df_tmp = pd.DataFrame({"ds": df_raw["Date"], "y": df_raw["Close*"]})
df_target = df_tmp[:-1]
df_target.head()
# 날짜 데이터 형식 변경
df = df_target.copy()
df["ds"] = pd.to_datetime(df_target["ds"], format="%b %d, %Y")
df.head()
2. yfinance 모듈을 사용하여 삼성전자, KIA 주식데이터를 가져와보고 예측함
from pandas_datareader import data
import yfinance as yf
yf.pdr_override()
start_date = "2018-03-01"
end_date = "2022-04-01"
KIA = data.get_data_yahoo("000270.KS", start_date, end_date)
SAM = data.get_data_yahoo("005930.KS", start_date, end_date)
-> 종목번호, 시작일, 마지막일을 넣어주면 해당데이터를 뽑아준다
SAM["Close"].plot()
## accuracy를 확인하기
SAM_trunc = SAM[:"2022-01-01"]
SAM_trunc.tail()
# forecast 준비
df = pd.DataFrame({"ds":SAM_trunc.index, "y":SAM_trunc["Close"]})
df.reset_index(inplace=True)
del df["Date"]
df.head()
ProPhet 적용 (약 4개월간의 데이터를 예측)
m = Prophet(yearly_seasonality=True, daily_seasonality=True)
m.fit(df)
future = m.make_future_dataframe(periods=120)
forecast = m.predict(future)
forecast
그래프 확인
m.plot(forecast)
년,월,일별 구성요소 예측 그래프생성
m.plot_components(forecast)
실제 데이터와 차이 확인
plt.figure(figsize=(20,6))
plt.plot(SAM.index,SAM["Close"], label="real")
plt.plot(forecast["ds"],forecast["yhat"], label="forecast")
plt.title("삼성전자")
plt.grid(True)
plt.legend()
'파이썬 이것저것 > 파이썬 데이터분석' 카테고리의 다른 글
[파이썬] 주유소 데이터 분석 (0) | 2022.06.05 |
---|---|
[파이썬] 서울범죄율 데이터 분석 (0) | 2022.06.05 |
[파이썬] 서울 CCTV 데이터 분석해보기 (0) | 2022.06.04 |
[파이썬] ProPhet 활용하여 시계열 예측 (0) | 2022.04.23 |
[파이썬] 수치형 변수의 요약, 기술통계 (0) | 2022.04.23 |