■ [Ai] Prophet 적용 #1 - 데이터 구하기
Prophet에 대해서 해당 git blog를 보며 튜토리얼을 진행했습니다.
이제 그 과정을 마쳤으니 우리 주변에 있는 실제 시계열 데이터를 활용해보려고 합니다.
우리 주변에서 가장 흥미 있는 시계열 데이터이고, 그 추세가 매일 급변하는 데이터인
주식 데이터를 활용해보고자 합니다. 그럼 먼저 주식 데이터를 구해야 하는데요.
간단한 파이썬 코드를 통해 쉽게 구할 수 있습니다.
파이썬 웹 크롤링에 많이 사용되는 BeautifulSoup 라이브러리를 사용했습니다.
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
그리고 아래 다음 금융 페이지가 데이터를 크롤링 할 대상 페이지 입니다.
http://finance.daum.net/item/quote_yyyymmdd_sub.daum?page=1&code=005930&modify=1
코드명 005930. 바로 삼성전자입니다.
이제 방법과 대상이 정해졌으니 실제 코드를 통해 데이터를 구해보겠습니다.
● BeautifulSoup을 활용한 웹 데이터 크롤링
getStockPrice라는 함수를 선언하고 이를 활용하면 쉽게 데이터를 확보할 수 있어요.
아래 코드를 보시면 몇 페이지까지 데이터를 크롤링할 지 입력을 받고, 해당 페이지의
iDate len을 구하여 해당 date만큼의 데이터를 크롤링하여 csv로 저장합니다.
import urllib from bs4 import BeautifulSoup import pandas as pd def getStockPrice(code, page): pageContents = [] for i in range(1, page+1): pageAddress = "http://finance.daum.net/item/quote_yyyymmdd_sub.daum?page="+str(i)+"&code="+str(code)+"&modify=1" pageUrl = urllib.request.urlopen(pageAddress) Soup = BeautifulSoup(pageUrl, "lxml") Profile = Soup.findAll('td', attrs={'class':'num'}) pageDate = Soup.findAll('td', attrs={'class':'datetime2'})
for j in range(len(pageDate)): rowContents = [] rowDate = pageDate[j].text.strip() rowOpen = Profile[7*j].text.strip().replace(",", "") rowHigh = Profile[7*j+1].text.strip().replace(",", "") rowLow = Profile[7*j+2].text.strip().replace(",", "") rowClose = Profile[7*j+3].text.strip().replace(",", "") rowChange = Profile[7*j+4].text.strip().replace(",", "") rowReturn = Profile[7*j+5].text.strip().replace("%", "") rowVolume = Profile[7*j+6].text.strip().replace(",", "") rowContents.append(rowDate) rowContents.append(rowOpen) rowContents.append(rowHigh) rowContents.append(rowLow) rowContents.append(rowClose) rowContents.append(rowChange) rowContents.append(rowReturn) rowContents.append(rowVolume) pageContents.append(rowContents) my_df = pd.DataFrame(pageContents) my_df.to_csv(code+'.csv')
getStockPrice('005930', 1) |
위 파이썬 코드를 실행 하면 005930(삼성전자) 최근 1페이지의 데이터가 크롤링되어
005930.csv라는 파일로 저장이 됩니다.
● 데이터 크롤링 결과
데이터 크롤링 결과는 다음과 같습니다.
위 다음금융 페이지와 같은 양식으로 csv파일로 생성이되는데요.
여기서 가장 필요한 부분은 4번째 열인 '종가' 입니다.
날짜와 종가를 이용하여 다음 포스팅에서는 한번 시계열 예측을 해보도록하겠습니다!
예측결과가 잘 맞을지 안 맞을지 궁금하면서도 두렵네요.
얼른 한 번 확인을 해봐야 할 것 같습니다.
재밌는 결과가 있었으면 좋겠네요. 그럼 오늘의 포스팅은 마치겠습니다. 감사합니다.
'AI > Prophet' 카테고리의 다른 글
[Prophet] Prophet 적용 #2 - 실제 데이터로 예측하기 (0) | 2018.08.19 |
---|---|
[Prophet] Prophet Tutorial #8 - Non-Daily Data (0) | 2018.07.27 |
[Prophet] Prophet Tutorial #7 - Outliers (0) | 2018.07.18 |
[Prophet] Prophet Tutorial #6 - Uncertainty Intervals (0) | 2018.07.09 |
[Prophet] Prophet Tutorial #5 - Multiplicative Seasonality (0) | 2018.06.30 |