Facebook의 fbprophet을 사용해보고자 설치 시도했습니다. 아래와 같은 간단한 명령어로 쉽게 설치될 줄 알고 시도했다가 호되게 당했네요.

 

conda install -c conda-forge fbprophet

pip install cython

pip install pystan

 

위와 같은 명령어로 설치 에러가 발생해서 수많은 구글링을 통해 알아봤습니다만 안되더라구요.

- pystan 버젼을 바꾸는 방법

- python 버젼을 재설치

- microsoft visual c++ v14 update

위와 같은 방법을 솔루션으로 소개를 많은 분들이 해주셨습니다만 제 경우는 하나도 안먹혔습니다.

하루를 꼬박 삽질한 끝에 제가 성공한 방법은 의외로 간단했습니다.

 

pycharm 프로그램 실행 후

 

~ 파일 > Settings 메뉴로 들어갑니다.

 

~ Python interpreter 화면에서 + 버튼을 눌러 모듈을 설치할 수 있도록 합니다.

 

~ Available Packages에서 pystan을 설치한 후 conda 명령어로 fbprophet을 설치합니다.

 

기존에 소개된 방법으로도 안되면 pycharm에서 pystan을 설치해보시는 것을 권장합니다.

제목 그대로 SELENIUM을 활용하여 KRX 사이트에서 주식 종목 코드를 뽑아보았습니다. KRX 사이에서는 간단한 CLICK 몇번으로 엑셀 내지는 CSV로 자료를 제공하고 있습니다.

 

import pandas as pd
import requests
import time
import datetime
from selenium import webdriver

def Stockcode_KRX() :
   chrome_options = webdriver.ChromeOptions()
   chrome_options.add_experimental_option('useAutomationExtension', False)
   browser = webdriver.Chrome('chromedriver', options=chrome_options)
   url = "http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020201"
   browser.get(url)
   time.sleep(3)
   browser.find_element_by_xpath('//*[@id="MDCSTAT019_FORM"]/div[2]/div/p[2]/button[2]').click()
   time.sleep(3)
   now = datetime.datetime.now()
   ttime = now.strftime("%M%S") # 파일명 찾을 때 쓰려고 만든 변수
   date = now.strftime("%Y%m%d") # 파일명 찾을 때 쓰려고 만든 변수
   browser.find_element_by_xpath(

   '/html/body/div[2]/section[2]/section/section/div/div/form/div[2]/div[2]/div[2]/div/div[1]/a').click()
   time.sleep(3)
   return ttime, date

 

상기의 코드를 돌리면 기본 다운로드 폴더에 data_현재시간.xlsx라는 화일명으로 한 엑셀 자료가 다운로드됩니다. 참고가 되셨으면 좋겟습니다.

 

data_3831_20210919.xlsx
0.24MB

'파이썬(PYTHON)' 카테고리의 다른 글

fbprophet 설치 오류 해결  (0) 2021.10.01
재무제표, 투자지표의 Python 코드 구현  (0) 2021.08.27
RPA를 위한 Python 활용  (0) 2021.08.21
Demark 지표의 Python 코드 구현  (2) 2021.08.19
TALIB Library 모듈  (0) 2021.07.01

재무제표는 기업 재무상태나 경영성과 등을 보여주는 문서입니다. 이러한 재무제표는 기업의 성과 등을 파악하기 위해 내부적인 목적으로 사용되기도 하나, 상장기업의 경우 상법상 재무제표를 작성하고 비치해야 하는 의무가 있습니다.

기업 공개에 따라 투자자를 유치하기 때문에 기업 회계의 투명성을 공시하는 것은 투자자에 대한 당연한 의무라고 봅니다. 재무제표의 확인은 우리가 마트에서 먹을 것을 사더라도 트랜스 지방, 칼로리, 가격, 성분, 유통기한 확인하는 것과 같이 필수적이지만 손이 잘 안가는 것이 사실입니다. 아무래도 상품에 적혀 있는 기본 정보와 달리 정보 접근성이 떨어지기 때문인 것 같습니다. 보는 법이야 자주 보다보면 알 수 있고, 용어야 인터넷 잠깐만 검색해보면 엄청나게 쏟아지지만 결국은 정보의 접근성이 문제인 것 같습니다.

fnguide라는 사이트를 통해 무료로 재무제표를 확인할 수 있습니다. 유료 회윈의 경우 FnResearch(300,000/월), FnConsensus(100,000/월), FnOwnership(100,000/월), FnDB Navigator(100,000/월), FnScreener(100,000/월), FnEMIS(300,000/월), FnDocument(100,000/월)등의 자료를 받아볼 수 있나봅니다.

 

재무제표에 쉽게 접근할 수 있는 Python 코드를 아래와 구현해봤습니다.

 

import pandas as pd
import requests
import time

def make_fs_dataframe(firm_code) :
    fs_url = "http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701&gicode=" + firm_code
    fs_page = requests.get(fs_url)
    fs_tables = pd.read_html(fs_page.text)

    temp_df1 = fs_tables[0]
    temp_df1 = temp_df1.set_index(temp_df1.columns[0])
    temp_df1 = temp_df1[temp_df1.columns[0:4]]
    temp_df1 = temp_df1.loc[['매출액', '영업이익', '당기순이익']]

    temp_df2 = fs_tables[2]
    temp_df2 = temp_df2.set_index(temp_df2.columns[0])
    temp_df2 = temp_df2.loc[['자산', '부채', '자본']]

    temp_df3 = fs_tables[4]
    temp_df3 = temp_df3.set_index(temp_df3.columns[0])
    temp_df3 = temp_df3.loc[['영업활동으로인한현금흐름']]

    fs_df = pd.concat([temp_df1, temp_df2, temp_df3])
    return fs_df

temp_df1 = temp_df1.loc[['매출액', '영업이익', '당기순이익']]

temp_df2 = temp_df2.loc[['자산', '부채', '자본']]

temp_df3 = temp_df3.loc[['영업활동으로인한현금흐름']]

관심있는 항목을 추가하여 코드를 구현할 수 있습니다.

 

def make_fr_dataframe(firm_code) :
    fr_url = 'http://comp.fnguide.com/SVO2/ASP/SVD_FinanceRatio.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=104&stkGb=701&gicode=' + firm_code
    fr_page = requests.get(fr_url)
    fr_tables = pd.read_html(fr_page.text)

    temp_df = fr_tables[0]
    temp_df = temp_df.set_index(temp_df.columns[0])
    temp_df = temp_df.loc[['유동비율계산에 참여한 계정 펼치기', '부채비율계산에 참여한 계정 펼치기', '영업이익률계산에 참여한 계정 펼치기',
                           'ROA계산에 참여한 계정 펼치기', 'ROIC계산에 참여한 계정 펼치기']]
    temp_df.index = ['유동비율', '부채비율', '영업이익률', 'ROA', 'ROIC']
    return temp_df

추가로 투자지표도 확인할 수 있습니다.

참고가 되셨으면 좋겠습니다.

'파이썬(PYTHON)' 카테고리의 다른 글

fbprophet 설치 오류 해결  (0) 2021.10.01
SELENIUM을 이용한 KRX 주식 종목 코드 크롤링  (0) 2021.09.20
RPA를 위한 Python 활용  (0) 2021.08.21
Demark 지표의 Python 코드 구현  (2) 2021.08.19
TALIB Library 모듈  (0) 2021.07.01

+ Recent posts