[데이터분석] week3. Dart openAPI

Jake·2023년 1월 9일

01. 오늘 배울 것

  • 1) Dart OpenAPI 를 활용하기
    👉 OpenAPI 란? - 데이터를 가져다 쓸 수 있게 서버의 ‘창구’를 열어둔 것!
    ⇒ Dart Open API를 활용하면 공시 정보를 ‘데이터 분석’에 활용할 수 있어요.
    ⇒ 이제 일일이 공시자료를 보러가지 않아도, 분석을 할 수 있답니다!
    ⇒ 게다가, 이 모든 것을 쉽게 활용할 수 있게 만든 ‘라이브러리’까지. 🙂

  • 2) 상장, 비상장 종목을 분석하기
    👉 Dart에서 제공하는 자료들을 이용하여 종목을 분석합니다!
    ⇒ 최대 주주 지분율 변동이 큰 회사는?
    ⇒ 이익잉여금이 크게 상승한 회사는?

02. Dart OpenAPI 키 발급받기

  • 1) API는 무엇이고, 키는 왜 발급 받아야 할까?
    👉 API란? - 서버에 접근하는 ‘창구’와 같은 것
    은행에도 여러가지 데이터가 있지만, 우리는 ‘창구’를 활용해서 정해진 약속으로 정해진 데이터만 접근 할 수 있어요.
    ⇒ 예) 입출금창구에 가서 주민등록증을 보여줘야 → 잔고를 확인할 수 있죠
    그럼 ‘키’는 왜 발급받아야 하나?
    ⇒ 누구에게나 열어둔 ‘창구’이기 때문에, 너무 많은 요청이 오면 서버가 매우 힘들겠죠!
    ⇒ 그래서 인 당 할당량을 정해서 ‘key’를 발급하는 것이랍니다. 요청할 때 이 것이 늘 필요하죠.

  • 2) 발급받기

    • [코드스니펫] Dart OpenAPI 키 발급

       https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do

      ⇒ 인증키 신청을 누르고 정보를 입력하면, 누구나 쉽게 키를 발급 받을 수 있습니다.

      ⇒ API 사용 환경은 ‘웹, 앱 모두’로 해주시고, 사용용도는 ‘개인 공부’라고 적어주세요

      OpenAPI 이용현황 에 가면, 키를 볼 수 있습니다.

      ⇒ 크롬 탭을 끄지 마세요! 바로 다음 강의에서 이 것을 복사, 붙여넣기 하셔야 합니다.

03. Dart 라이브러리 활용하기

  • 1) Colab 구동하기 ⇒ drive.google.com 에 접속해서, 3주차 Colab 파일 만들고 접속합니다.
  • 2) Dart-fss 라이브러리 설치하기 👉 공식 Document : [https://dart-fss.readthedocs.io/en/latest/](https://dart-fss.readthedocs.io/en/latest/) Dart-fss 라이브러리는? Dart의 OpenAPI를 쉽게 사용할 수 있도록 만들어둔 코드입니다. ⇒ 라이브러리를 활용하면 복잡한 개발 가이드[(링크)](https://dart-fss.readthedocs.io/en/latest/) 없이 데이터들을 얻을 수 있답니다. ```python !pip install dart-fss ```
  • 3) 키 넣고, 구동해보기
    • [코드스니펫] API 키 입력하기

      ```python
      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
      ```
      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

04 . 종목 정리하기

📢 **지금부터는 dart 공식 문서를 켜놓고 복사해서 사용해볼게요!** 공식 Document : [https://dart-fss.readthedocs.io/en/latest/](https://dart-fss.readthedocs.io/en/latest/)
  • 1) 상장, 비상장 종목을 정리해볼까요? ⇒ 우선, 전체 종목을 보는 코드를 작성해봅니다.
    all = dart_fss.api.filings.get_corp_code()
    all[0]
    ⇒ 이렇게 DataFrame 형태로 볼 수도 있습니다.
    df = pd.DataFrame(all)
    
    df
    stock_code 가 있는 종목은 상장사, 없는 종목은 비상장사를 의미합니다.
    df_listed = df[df['stock_code'].notnull()]
    df_non_listed = df[df['stock_code'].isnull()]
  • 2) 엑셀로 저장해두기 ⇒ .to_excel('파일명.xlsx') 만 붙이면 엑셀로 만들어준답니다. 판다스의 힘!
    df_listed.to_excel('비상장사.xlsx')
    
    df_non_listed.to_excel('상장사.xlsx')

05. dart API 사용해보기

  • 1) 한 개 종목을 정해서 코드를 찾기
    corp_code = df_listed[df_listed['corp_name'] == '삼성전자'].iloc[0,0]
    
    corp_code
  • 2) dart api 를 사용해보기(사업보고서)
    1. 기업 정보

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      dart_fss.api.filings.get_corp_info(corp_code)
    2. 미등기임원 보수 총액

      ✅ Dart Openpi 사이트를 열어두고 하면 편하답니다!

      ⇒ 이렇게 해두면 dart_fss.api... 부분만 변경하면 되겠죠!

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.unrst_exctv_mendng_sttus(corp_code, '2021', '11011')
      pd.DataFrame(data['list'])
    3. 증자(감자)현황

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.irds_sttus(corp_code, '2021', '11011')
      pd.DataFrame(data['list'])
    4. 배당 현황

      ⇒ dart 에서 해당 내용을 찾아볼까요? (링크)

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.alot_matter(corp_code, '2021', '11011')
      pd.DataFrame(data['list'])
    5. 최대주주 현황

      ⇒ 최대주주 중 몇 명이 주식을 샀는지 / 팔았는지도 알 수 있겠군요!

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.hyslr_sttus(corp_code, '2021', '11011')
      pd.DataFrame(data['list'])
    6. 임원 사항

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.exctv_sttus(corp_code, '2021', '11011')
      
      pd.DataFrame(data['list'])
    7. 직원 현황

      ⇒ 남녀 평균 급여도 볼 수 있네요!

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.emp_sttus(corp_code, '2021', '11011')
      
      pd.DataFrame(data['list'])
    8. 이사 보수

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.hmv_audit_indvdl_by_sttus(corp_code, '2021', '11011')
      
      pd.DataFrame(data['list'])
    9. 연봉 top 5

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.indvdl_by_pay(corp_code, '2021', '11011')
      
      pd.DataFrame(data['list'])
    10. 타법인 출자 현황

      corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      data = dart_fss.api.info.otr_cpr_invstmnt_sttus(corp_code, '2021', '11011')
      
      pd.DataFrame(data['list'])
  • 3) dart api를 사용해보기(상장기업 재무정보) ⇒ 재무제표의 3년 치 주요 정보를 얻을 수 있어요
    corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
    data = dart_fss.api.finance.fnltt_singl_acnt(corp_code, '2021', '11011')
    
    pd.DataFrame(data['list'])
    ⇒ 이렇게 하면 모든 항목을 볼 수 있답니다.
    corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
    data = dart_fss.api.finance.fnltt_singl_acnt_all(corp_code, '2021', '11011', 'CFS')
    
    pd.DataFrame(data['list'])
  • 4) dart api를 사용해보기(주주정보) ⇒ 임원, 주요 주주 소유 보고
    corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
    data = dart_fss.api.shareholder.elestock(corp_code)
    
    pd.DataFrame(data['list'])
    ⇒ 특정 사람에 대해서만 볼까요?
    corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
    data = dart_fss.api.shareholder.elestock(corp_code)
    
    df_temp = pd.DataFrame(data['list'])
    df_temp[df_temp['repror'] == '김범수']
profile
Walk on the water!

0개의 댓글