스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 3주차
[다트 open api 발급]
https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do
전자공시 OPENDART 시스템 | 로그인
opendart.fss.or.kr
[ 구글 드라이브 코랩 가기]
Google Drive: 로그인
이메일 또는 휴대전화
accounts.google.com
[ dart-fss 라이브러리 설치]
[ 키 넣고, 구동해보기]
import dart_fss as dart_fss
import pandas as pd
api_key = '여기에 API 키를 입력'
dart_fss.set_api_key(api_key=api_key)
corp_list = dart_fss.get_corp_list()
corp_list.corps
[ dart 공식 문서]
https://dart-fss.readthedocs.io/en/latest/
DART-FSS — dart-fss documentation v0.3.10 documentation
© Copyright 2021, Sungwoo Jo Revision 2c650cdb.
dart-fss.readthedocs.io
[ dart 상장/비상장 excel 추출]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
# 종목 갯수
#df_listed.count()
df_listed.to_excel('상장종목.xlsx')
df_non_listed.to_excel('비상장종목.xlsx')
[ dart API 사용해보기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
corp_code = df_listed[df_listed['corp_name']== '카카오'].iloc[0,0]
# 기업개황
#dart_fss.api.filings.get_corp_info(corp_code)
# 사업보고서
#data =dart_fss.api.info.unrst_exctv_mendng_sttus(corp_code, '2022', '11011')
# 증자 현황
#data = dart_fss.api.info.irds_sttus(corp_code, '2022', '11011', api_key=None)
# 배당 현황
#data =dart_fss.api.info.alot_matter(corp_code, '2022', '11011', api_key=None)
# 최대주주 변동현황
#data =dart_fss.api.info.hyslr_chg_sttus(corp_code, '2022', '11011', api_key=None)
# 최대 주주현황
#data =dart_fss.api.info.hyslr_sttus(corp_code, '2022', '11011', api_key=None)
#pd.DataFrame(data['list'])[['nm','bsis_posesn_stock_qota_rt','trmend_posesn_stock_qota_rt']]
# 임원사항
#data = dart_fss.api.info.exctv_sttus(corp_code, '2022', '11011')
# 직원정보
#data = dart_fss.api.info.emp_sttus(corp_code, '2022', '11011')
# 이사보수
#data = dart_fss.api.info.hmv_audit_indvdl_by_sttus(corp_code, '2022', '11011')
# 연봉TOP5
#data = dart_fss.api.info.indvdl_by_pay(corp_code, '2022', '11011')
# 타법인 출자현황
#data = dart_fss.api.info.otr_cpr_invstmnt_sttus(corp_code, '2022', '11011')
# 상장기업 재무정보
#data = dart_fss.api.finance.fnltt_singl_acnt(corp_code, '2022', '11011')
# 상장기업 재무 모든 정보
#data = dart_fss.api.finance.fnltt_singl_acnt_all(corp_code, '2021', '11011', 'CFS')
#임원, 주요 주주 소유 보고
#data = dart_fss.api.shareholder.elestock(corp_code)
# 특정 사람
#df_temp = pd.DataFrame(data['list'])
#df_temp[df_temp['repror'] == '김범수']
#pd.DataFrame(data['list'])
[ 다트 API로 연봉 킹 30명 찾기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
def get_salary(name):
corp_code = df_listed[df_listed['corp_name']== name].iloc[0,0]
data = dart_fss.api.info.indvdl_by_pay(corp_code, '2022', '11011', api_key=None)
df = pd.DataFrame(data['list'])
df = df[['corp_name','nm','ofcps','mendng_totamt']]
df.columns = ['기업명','이름','역할','보수']
df['보수'] = pd.to_numeric(df['보수'].str.replace(',',''))
#df.sort_values(by='보수',ascending=False)
return df
names = ['삼성전자','LG에너지솔루션','SK하이닉스','NAVER','삼성바이오로직스','삼성전자우','카카오','삼성SDI','현대차','LG화학','기아','POSCO홀딩스','KB금융','카카오뱅크','셀트리온','신한지주','삼성물산','현대모비스','SK이노베이션','LG전자','카카오페이','SK','한국전력','크래프톤','하나금융지주','LG생활건강','HMM','삼성생명','하이브','두산중공업','SK텔레콤','삼성전기','SK바이오사이언스','LG','S-Oil','고려아연','KT&G','우리금융지주','대한항공','삼성에스디에스','현대중공업','엔씨소프트','삼성화재','아모레퍼시픽','KT','포스코케미칼','넷마블','SK아이이테크놀로지','LG이노텍','기업은행']
dfs =[]
for name in names:
try:
df = get_salary(name)
dfs.append(df)
except:
print(f'error- {name}')
df_result = pd.concat(dfs)
df_result.sort_values(by='보수',ascending=False).head(30)
[ 상장종목 10개 샘플 지분율 구하기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
def get_shareholders(corp_code):
#corp_code = df_listed[df_listed['corp_name']== '카카오'].iloc[0,0]
data = dart_fss.api.info.hyslr_sttus(corp_code, '2022', '11011', api_key=None)
df = pd.DataFrame(data['list'])
df= df[['corp_name','nm','relate','bsis_posesn_stock_qota_rt','trmend_posesn_stock_qota_rt','rm']]
df.columns = ['기업명','이름','관계','기초지분율','기말지분율','비고']
df = df[df['관계'].notnull()]
df['기초지분율'] = pd.to_numeric(df['기초지분율'])
df['기말지분율'] = pd.to_numeric(df['기말지분율'])
return df.sort_values(by='기초지분율',ascending=False).head(3)
corp_codes = list(df_listed.sample(10)['corp_code'])
dfs =[]
for corp_code in corp_codes:
try:
df = get_shareholders(corp_code)
dfs.append(df)
except:
print(f'error-{corp_code}')
df_result = pd.concat(dfs)
df_result['증감'] = df_result['기말지분율'] - df_result['기초지분율']
df_result.sort_values(by='증감',ascending=False)
[ 이익잉영금 증가 10개 샘플 기업 구하기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
def get_profit(name):
corp_code = df_listed[df_listed['corp_name'] == name].iloc[0,0]
data = dart_fss.api.finance.fnltt_singl_acnt(corp_code, '2022', '11011')
df= pd.DataFrame(data['list'])
# 연결재무제표 CFS , 이익잉영금
cond = (df['fs_div'] =='CFS') & (df['account_nm'] =='이익잉여금')
df = df[cond]
df['name'] = name
# 전기, 이번기
df = df[['name','thstrm_amount','frmtrm_amount']]
df.columns = ['기업명','당기','전기']
df['당기'] = pd.to_numeric(df['당기'].str.replace(',',''))
df['전기'] = pd.to_numeric(df['전기'].str.replace(',',''))
df['증감'] = df['당기'] - df['전기']
df['증감율'] = abs(df['당기']) / abs(df['전기'])
return df
names =df_listed.sample(10)['corp_name']
dfs =[]
for name in names:
try:
df = get_profit(name)
dfs.append(df)
except:
print(f'error - {name}')
df_result = pd.concat(dfs)
df_result.sort_values(by='증감율', ascending=False)
[ 비상장종목 당기순이 10개 샘플 기업 구하기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
def get_earning(name):
corp_code = df_non_listed[df_non_listed['corp_name'] == name].iloc[0,0]
data = dart_fss.api.info.alot_matter(corp_code, '2021', '11011')
df= pd.DataFrame(data['list'])
df = df[df['se'] =='(연결)당기순이익(백만원)']
df = df[['corp_name','thstrm','frmtrm','lwfr']]
df.columns = ['기업명','2021','2020','2019']
df['2021'] = pd.to_numeric(df['2021'].str.replace(',',''))
df['2020'] = pd.to_numeric(df['2020'].str.replace(',',''))
df['2019'] = pd.to_numeric(df['2019'].str.replace(',',''))
return df
names = list(df_non_listed.sample(10)['corp_name'])
dfs =[]
for name in names:
try:
df =get_earning(name)
dfs.append(df)
except:
print(f'error - {name} ')
result_df = pd.concat(dfs)
result_df
[ 상장종목 10개 샘플 뽑아 그 중 남녀 급여차이 적은 기업 구하기]
import dart_fss as dart_fss
import pandas as pd
api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
dart_fss.set_api_key(api_key=api_key)
all = dart_fss.api.filings.get_corp_code()
df = pd.DataFrame(all)
df_listed = df[df['stock_code'].notnull()]
# 비상장종목
df_non_listed = df[df['stock_code'].isnull()]
def get_salary(name):
corp_code = df_listed[df_listed['corp_name'] == name].iloc[0,0]
data = dart_fss.api.info.emp_sttus(corp_code, '2021', '11011')
df =pd.DataFrame(data['list'])
df = df[['corp_name','sexdstn','jan_salary_am']]
df_result = pd.DataFrame()
doc = {
'기업명' : name,
'연봉(남)' : df[df['sexdstn']=='남'].iloc[-1,-1],
'연봉(여)' : df[df['sexdstn']=='여'].iloc[-1,-1]
}
df_result = df_result.append(doc,ignore_index=True)
df_result['연봉(남)'] = pd.to_numeric(df_result['연봉(남)'].str.replace(',',''))
df_result['연봉(여)'] = pd.to_numeric(df_result['연봉(여)'].str.replace(',',''))
return df_result
names = list(df_listed.sample(10)['corp_name'])
dfs =[]
for name in names:
try:
df = get_salary(name)
dfs.append(df)
except:
print(f'error- {name}')
df_result = pd.concat(dfs)
df_result['차이(남-여)'] = df_result['연봉(남)'] - df_result['연봉(여)']
df_result['평균'] = (df_result['연봉(남)'] + df_result['연봉(여)'])/2
df_result.sort_values(by='차이(남-여)', ascending=True)

1주차 : 네이버에서 뉴스 가져오는 함수 , 코랩 폴더에 저장 및 다운로드 ,네이버금융사진 저장
https://iamipro.tistory.com/231
스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 1주차
스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 1주차 import urllib.request import openpyxl wb = openpyxl.load_workbook('관리종목.xlsx') sheet = wb['종목'] new_rows = list(sheet.rows)[1:] for row in new_rows: print(row[0].val
iamipro.tistory.com
2주차 : 데이터프레임( 순이익, 종가, pbr<1, 시총1조이상, per<20) 그려보기 , 해외주식(야후쿼리) 정보 보기
https://iamipro.tistory.com/232
금융인을 위한 파이썬 업무자동화 2주차
DataFrame 만들기 Pandas : 데이터 분석 해외주식야후사이트: https://finance.yahoo.com/quote/AAPL?p=AAPL&.tsrc=fin-srch Apple Inc. (AAPL) Stock Price, News, Quote & History - Yahoo Finance Find the latest Apple Inc. (AAPL) stock quote, histor
iamipro.tistory.com
3주차 : dart 상장/비상장 엑셀 추출, dart API 로 종목 정보 (증자,배당,직원정보,이사보수, 재무정보, 이익잉여금, 당기순이익, 지분율, 연봉 TOP5 등)
https://iamipro.tistory.com/233
금융인을 위한 파이썬 업무자동화 3주차
스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 3주차 [다트 open api 발급] https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do 전자공시 OPENDART 시스템 | 로그인 opendart.fss.or.kr [ 구글 드라이브 코랩 가기] h
iamipro.tistory.com
4주차 : 최적의 단기/장기 이동평균선 구하기
https://iamipro.tistory.com/234
금융인을 위한 파이썬 업무자동화 4주차
금융인을 위한 파이썬 업무자동화 4주차 https://drive.google.com/ Google Drive: 로그인 이메일 또는 휴대전화 accounts.google.com [라이브러리 설치 명령어 yfinance pandas-datareader finance-datareader !pip install yfinance
iamipro.tistory.com
5주차 : 변동성 돌파적략 최적값 k 구하기 , 월요일에 사서 금요일에 팔경우 수익나는 종목 보기
https://iamipro.tistory.com/235
금융인을 위한 파이썬 업무자동화 5주차
금융인을 위한 파이썬 업무자동화 5주차 https://drive.google.com/ Google Drive: 로그인 이메일 또는 휴대전화 accounts.google.com 전일 종가에서 금일 시작가에서 판다. [ 오르는 추세라 판단] [주가 가져오는
iamipro.tistory.com
'Spring & Backend' 카테고리의 다른 글
| 금융인을 위한 파이썬 업무자동화 5주차 (0) | 2023.03.29 |
|---|---|
| 금융인을 위한 파이썬 업무자동화 4주차 (0) | 2023.03.28 |
| 금융인을 위한 파이썬 업무자동화 2주차 (0) | 2023.03.27 |
| 스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 1주차 (0) | 2023.03.27 |
| Java/Spring 기반 서비스 개발과 MSA 구축 (0) | 2023.03.23 |
