본문 바로가기

개발일지_파이썬for금융인

분석하기(2) - 데이터 모으기

company.earnings['TSLA']['financialsChart']['yearly']

{}딕셔너리

[]리스트 안에 담겨 있다.

 

리스트로 나오면 보기 불편하니, 데이타프레임DataFrame으로 만들자.

---------------

아까건 doc에 담고,

doc = company.earnings['TSLA']['financialsChart']['yearly']

shift+enter

import pandas as pd

shift+enter

pd.DataFrame(doc)

실행하면, 

짜잔. 데이터프레임으로 담겼다.

 

 

이걸 한 번에 쓰면,

import pandas as pd

doc = company.earnings['TSLA']['financialsChart']['yearly']
df = pd.DataFrame(doc)

df

---------------

0행 1열의 값을 가져오고 싶다?

df.iloc[0,1]

그럼 24578000000이 뜸.

-------------------

import pandas as pd

doc = company.earnings['TSLA']['financialsChart']['yearly']
df = pd.DataFrame(doc)

rev2019 = df.iloc[0,1] / 1000
rev2020 = df.iloc[1,1] / 1000
rev2021 = df.iloc[2,1] / 1000

ear2019 = df.iloc[0,2] / 1000
ear2020 = df.iloc[1,2] / 1000
ear2021 = df.iloc[2,2] / 1000

print(rev2019, rev2020, rev2021, ear2019)

-------------------------

이걸 앞서 했던 테슬라 건에 합쳐보자.

import는 그냥 임포트니까 두고,

doc이하~ear2021줄까지 잘라서 붙이고,

딕셔너리변환 코드스니펫 붙임.

TSLA를 넣든 META를 넣든 나오게 함수화 해보자.

def add_company(code):

나머지를 이 안의 내용물로 넣자.

그리고 마지막은 

return doc
def add_company(code):
  company = Ticker(code)
  modules = 'summaryDetail assetProfile price financialData defaultKeyStatistics'
  all_data = company.get_modules(modules)

  name = all_data[code]['price']['shortName']
  industry = all_data[code]['assetProfile']['industry']
  marketCap= all_data[code]['price']['marketCap']
  currentPrice= all_data[code]['financialData']['currentPrice']
  business = all_data[code]['assetProfile']['longBusinessSummary']
  targetPrice = all_data[code]['financialData']['targetMeanPrice']

  per = all_data[code]['summaryDetail']['trailingPE']
  eps = all_data[code]['defaultKeyStatistics']['trailingEps']
  pbr = all_data[code]['defaultKeyStatistics']['priceToBook']
  
  df_earnings = pd.DataFrame.from_dict(company.earnings[code]['financialsChart']['yearly'])
  
  rev2021 = df_earnings.iloc[-2,1]
  rev2020 = df_earnings.iloc[-3,1]
  rev2019 = df_earnings.iloc[-4,1]

  ear2021 = df_earnings.iloc[-2,2]
  ear2020 = df_earnings.iloc[-3,2]
  ear2019 = df_earnings.iloc[-4,2]

  doc = {
    'code':code,
    'name':name,
    'industry':industry,
    'business':business,
    'marketCap':marketCap/1000,
    'currentPrice':currentPrice,
    'targetPrice':targetPrice,
    'per':per,
    'eps':eps,
    'pbr':pbr,
    'rev2021':rev2021/1000,
    'rev2020':rev2020/1000,
    'rev2019':rev2019/1000,
    'ear2021':ear2021/1000,
    'ear2020':ear2020/1000,
    'ear2019':ear2019/1000,
  }
  return doc

새 코드.

add_company('GOOG')

실행하면 구글의 정보가,

add_company('NVDA')

실행하면 엔비디아의 정보가 나온다!