1) 라이브러리 설치
!pip install urllib3==1.26.14 requests==2.25.1 yahooquery==2.3.0
버전이 맞아야 구동이 된다.
https://yahooquery.dpguthrie.com/guide/ticker/modules/ : 야후쿼리 라이브러리 홈페이지
colab에서 urllib3 라이브러리는 이미 설치되어 있지만 만약 아니라면
!pip install urllib3 -U
버전 확인은
!pip show urllib3 requests yahooquery
2) yahooquery 사용법
from yahooquery import Ticker
company = Ticker('MSFT')
company.summary_detail #마이크로소프트 정보 불러오기
https://finance.yahoo.com/quote/MSFT 의 정보를 거의 다 불러온다.
modules = 'summaryDetail assetProfile price financialData defaultKeyStatistics'
all_data = company.get_modules(modules)
https://yahooquery.dpguthrie.com/guide/ticker/modules/
야후쿼리 모듈은 엄청엄청 많다. 그 중에서 위 코드로 all_data를 설정해두면 웬만한 정보는 다 볼 수 있다. 필요하면 모듈에 추가하면 된다.
name = all_data['MSFT']['price']['shortName']
marketcap = all_data['MSFT']['price']['marketCap']
industry = all_data['MSFT']['assetProfile']['industry']
revenue = all_data['MSFT']['financialData']['totalRevenue']
print(name, marketcap, industry, revenue) #이런 식으로 원하는 데이터를 뽑을 수 있다.
company.balance_sheet()
company.cash_flow()
company.earnings()
#대차대조표, 현금흐름표, 기업 실적
3) 데이터 분석하기(Dataframe 사용)
company = Ticker('MSFT')
code = 'MSFT'
modules = 'summaryDetail assetProfile price financialData defaultKeyStatistics'
all_data = company.get_modules(modules)
name = all_data['MSFT']['price']['shortName']
industry = all_data['MSFT']['assetProfile']['industry']
marketCap= all_data['MSFT']['price']['marketCap']
currentPrice= all_data['MSFT']['financialData']['currentPrice']
summary = all_data['MSFT']['assetProfile']['longBusinessSummary']
targetprice = all_data['MSFT']['financialData']['targetMeanPrice']
per = all_data['MSFT']['summaryDetail']['trailingPE']
eps = all_data['MSFT']['defaultKeyStatistics']['trailingEps']
pbr = all_data['MSFT']['defaultKeyStatistics']['priceToBook']
print(code,name,industry,marketCap,summary,currentPrice,targetprice,per,eps,pbr)
이런 식으로 원하는 데이터를 다 변수화해준다.
그리고 Pandas를 이용, Dataframe화 하기!
import pandas as pd
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']
marketcap = all_data[code]['price']['marketCap']
industry = all_data[code]['assetProfile']['industry']
summary = all_data[code]['assetProfile']['longBusinessSummary']
currentPrice = all_data[code]['financialData']['currentPrice']
targetPrice = all_data[code]['financialData']['targetMeanPrice']
per = all_data[code]['summaryDetail']['trailingPE']
eps = all_data[code]['defaultKeyStatistics']['trailingEps']
pbr = all_data[code]['defaultKeyStatistics']['priceToBook']
doc = company.earnings[code]['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
doc = {
'code':code,
'name':name,
'industry':industry,
'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
위 코드에 company = Ticker(code)이므로, code에 들어갈 회사들을 몇 가지 설정해주자.
df = pd.DataFrame()
codes = ['AAPL','ABNB','BIDU','META','GOOG','MSFT','TSLA','PYPL','NFLX','NVDA']
for code in codes:
try:
row = add_company(code)
df = df.append(row, ignore_index = True) #append기능이 pandas.concat으로 바뀔것
except:
print(f'error - {code}')
df
이걸로 내가 원하는 데이터만 뽑아 볼 수 있다.
per을 보고싶다면
df[df['per'] < 30].sort_values(by='per',ascending=False)
'python' 카테고리의 다른 글
파이썬 4주차 - 1)그래프 그리기 및 백테스트 (0) | 2023.07.06 |
---|---|
파이썬 3주차 - 1)Open API 키 받고 Dart fss 활용 (0) | 2023.07.05 |
파이썬 2주차 - 1)Pandas의 dataframe (0) | 2023.06.19 |
파이썬 1주차 - 3) 엑셀 다루기 (0) | 2023.06.15 |
파이썬 1주차 - 2) 웹 스크래핑 (0) | 2023.06.15 |