미국 주식 데이터 수집 #1 Yahoo_fin 설치 및 기본 정보 조회

 안녕하세요, 지난번 포스팅에서 미국 주식 데이터를 직접 수집하게 된 계기와, 대략적인 방법에 대해서 소개해드렸습니다. 이번 포스팅에서 본격적으로 Yahoo_fin 오픈소스 라이브러리를 설치하고, 기본적인 종목 정보를 조회하는 방법을 알아보겠습니다.

 

1. Yahoo_fin 설치

pip install yahoo-fin
pip install requests-html

 우선 Yahoo_fin 라이브러리를 설치해줍니다. reqests-html도 의존성이 있기 때문에 함께 설치해줍니다. 저 같은 경우에는 그 외의 pandas나 numpy 등의 다양한 라이브러리들은 이미 설치되어 있기 때문에 여기서는 생략하겠습니다. 혹시 따라하시다가 라이브러리가 없어서 오류가 난다면 해당 라이브러리를 설치하시면 됩니다.

 

2. 미국 주식 종목 리스트 조회

 설치 후에 라이브러리를 활용해서 하나씩 데이터를 조회해보겠습니다. 우선 전체 종목에 대한 데이터를 수집해야하니, 미국 주식 리스트를 조회해보겠습니다. 다우에 30 종목, 나스닥에 3,841 종목, S&P 500에 505종목, 그 외 5,527 종목이 있음을 확인할 수 있습니다. 나스닥과 그 외 거래소에서 거래되는 종목들을 합해서 앞으로 사용할 종목 리스트를 생성해줍니다.

 

 자세한 내용은 아래 소스 코드를 확인해주세요.

 

import yahoo_fin.stock_info as si

# 종목 조회
dow_list = si.tickers_dow()
nasdaq_list = si.tickers_nasdaq()
sp500_list = si.tickers_sp500()
other_list= si.tickers_other()

print("Tickers in Dow Jones:", len(dow_list))
print("Tickers in Nasdaq:", len(nasdaq_list))
print("Tickers in S&P 500:", len(sp500_list))
print("Tickers in Others:", len(other_list))

#Tickers in Dow Jones: 30 
#Tickers in Nasdaq: 3841 
#Tickers in S&P 500: 505 

# 사용할 stock_list 생성(나스닥 + 기타)
stock_list = nasdaq_list + other_list
print("Tickers in stock_list:", len(stock_list))

#Tickers in Others: 9382

 

3. 기본 정보 조회

 지난 포스팅에서 대략적으로 필요한 내용을 아래와 같이 정의했었습니다. 이 중에서 라이브러리에서 바로 제공하는 기본적인 정보부터 조회해보겠습니다.

 

(1) 주가 정보

# 주가 정보
AAPL = si.get_data('AAPL', start_date = '20200101', interval="1mo")
AAPL.tail(5)

 

(2) 거래대금, OPM, ROE, ROA

# 거래대금(10일 평균), OPM, ROE, ROA
AAPL = si.get_stats('AAPL')
AAPL.loc[[8,31,32,33],:]

 

(3) 시가총액, PER, PEGR, PBR, PSR

# 시가총액, PER, PEGR, PBR, PSR 
AAPL = si.get_stats_valuation('AAPL')
AAPL.loc[[0,2,4,5,6],:]

 

 

(4) 자산, 부채, 자본

# 부채, 자본, 자산(부채비율 계산용)
AAPL = si.get_balance_sheet('AAPL')
AAPL.loc[['totalLiab','totalStockholderEquity','totalAssets'],:]

 

(5) 매출액, 영업이익, 순이익 - 분기별

# 매출액, 영업이익, 순이익 (분기별)
AAPL = si.get_income_statement("aapl", yearly = False)
AAPL.loc[['totalRevenue','operatingIncome','netIncome'],:]

 

(6) 매출액, 영업이익, 순이익 - 연도별

# 매출액, 영업이익, 순이익(연도별)
AAPL = si.get_income_statement("aapl", yearly = True)
AAPL.loc[['totalRevenue','operatingIncome','netIncome'],:]

 

 이 정도면 어느 정도 필요한 데이터를 수집할 수 있을 것 같습니다. 다음 포스팅에서는 추가적으로 약간의 가공이 필요한 데이터와, 이 데이터를 모아서 어떤 형식으로 보관을 할 것인지에 대해서 다루어보도록 하겠습니다.

 

 감사합니다 : )

 

 

 

댓글()