오늘은 일단 class로 만들었다.
GUI는 혼자 하다보니 어려웠는데 우연히 동영상 강의를 만나서 듣고있다.
다 듣고 혼자 대충 하다보면 금방 만들 수 있지 않을까 싶다.
재산관리에 대한 구상은 아직이어서 재무제표부터 다 하고 자산관리 해서 연동 해야지.
c하다 파이썬을 다루니 정말 편하다. 파이썬은 누군가 만들어 놓은 것이 너무 많아.
게다가 C처럼 완벽히 이해하지 않아도 사용할 수 있다. 대단한 언어다.
물론 복잡한 프로그램일 수록 효율성이 떨어지기는 하지만.
아 stackoverflow는 답변이 정말 빠르다. 이번 크롬도 좀 얼른 해줬으면 답변
API_KEY="키입력"
company_code = '00126380' # 기업 고유번호 이건 크롤링 해야함 (이건 삼성전자)
year = '2019' # 보고서 년도
report_sort = '11011' #defalt 1101 < 사업 보고서 분기 보고서 = 11013 11012 11014 1분기 2분기 3분기 순서
class Financial_Statements:
def __init__(self,API_KEY,company_code,year,report_sort):
self.API_KEY = API_KEY
self.company_code = company_code
self.year = year
self.report_sort =report_sort
self.data = self.get_request()
def get_request(self):
request= Request('https://opendart.fss.or.kr/api/fnlttSinglAcnt.json?crtfc_key='+self.API_KEY+'&corp_code='+self.company_code+'&bsns_year='+self.year+'&reprt_code='+self.report_sort)
response = urlopen(request)
elevations = response.read()
data = json.loads(elevations)
data = json_normalize(data['list']) ##--- json to dataframe
data = data.loc[:,['fs_nm','sj_nm','account_nm','thstrm_dt','thstrm_nm','thstrm_amount','frmtrm_nm','frmtrm_amount','bfefrmtrm_nm','bfefrmtrm_amount']]
return data
def get_financial_stock_price(self,reo = 0 , stock_num, wanting_revenue): # ROE알고 싶으면 reo에 인자 입력하면 됨, 안하면 그냥 가격만 알려줌 주식 발행 량이랑 원하는 수익률도 인자로 받음
data =self.data
linked_data = data[data['fs_nm'] == '연결재무제표'].set_index('fs_nm') #일단 인덱스를 0123에서 없애버림, 필요하면 바꾸자 정규식 이용하면 인덱스 있어도 사용가능임
during_year_capital = linked_data[linked_data['account_nm'] == '자본총계']['thstrm_amount']
during_year_capital = float(re.sub('[^0-9]', '',str(during_year_capital)))#해당년도 자본
during_year_debt = linked_data[linked_data['account_nm'] == '부채총계']['thstrm_amount']
during_year_debt = float(re.sub('[^0-9]', '',str(during_year_debt)))
during_year_protit = linked_data[linked_data['account_nm'] == '당기순이익']['thstrm_amount']
during_year_protit = float(re.sub('[^0-9]', '',str(during_year_protit)))
during_year_roe = during_year_protit / during_year_capital * 100 #해당년도 roe
stock_num = float(re.sub('[^0-9]', '',stock_num))
wanting_revenue = float(input("원하는 수익률을 입력하세요 \n"))
stock_price = (during_year_capital + (during_year_capital * (during_year_roe - wanting_revenue)/wanting_revenue)) / stock_num
if reo == 0:
return stock_price
elif roe == 1:
return during_year_roe
elif roe == 3:
prvious_year_capital = linked_data[linked_data['account_nm'] == '자본총계']['frmtrm_amount']
prvious_year_capital = float(re.sub('[^0-9]', '',str(prvious_year_capital)))
previous_year_protit = linked_data[linked_data['account_nm'] == '당기순이익']['frmtrm_amoun']
previous_year_protit = float(re.sub('[^0-9]', '',str(previous_year_protit))) #1년 전꺼
two_before_year_capital = linked_data[linked_data['account_nm'] == '자본총계']['bfefrmtrm_amount']
two_before_year_capital = float(re.sub('[^0-9]', '',str(two_before_year_capital)))
two_before_year_protit = linked_data[linked_data['account_nm'] == '당기순이익']['bfefrmtrm_amount']
two_before_year_protit = float(re.sub('[^0-9]', '',str(two_before_year_protit))
previous_year_roe = previous_year_protit / prvious_year_capital * 100
two_before_year_roe = two_before_year_protit / two_before_year_capital * 100
return during_year_roe, previous_year_roe, two_before_year_roe
else :
print("인자를 잘못 입력하셨습니다. \n")
def download_linked_financial_statement_to_cvs(self,company_name):
data = self.data
data.to_csv('풀버전.csv')
linked_data = data[data['fs_nm'] == '연결재무제표']
print("downloading.... \n")
linked_data.to_csv(company_name+'.csv',encoding = 'utf-8')
print("Download Complited.\n")
def download_single_financial_statement_to_cvs(self,company_name):
data = self.data
singgle_data = data[data['fs_nm'] == '재무제표']
print("downloading.... \n")
singgle_data.to_csv(company_name+'.csv',encoding = 'utf-8')
print("Download Complited.\n")
지저분한 코드로 대충 완성.. (0) | 2020.06.13 |
---|---|
PYGT5를 통한 GUI 구현 (0) | 2020.06.05 |
재무제표 긁어오기 (0) | 2020.05.30 |
기업 코드 찾는 함수 (0) | 2020.05.29 |
재산관리 프로그램 (0) | 2020.05.28 |
댓글 영역