내맘대로 코딩

[스파르타 내일배움] Python - 데이터분석기초, 해외주식다루기 본문

Python

[스파르타 내일배움] Python - 데이터분석기초, 해외주식다루기

Yoonjung 2023. 2. 20. 15:33

강의명

[왕초보] 주식 데이터를 활용한 파이썬 데이터 분석 23회차

이범규 튜터

 

강의자료 

https://www.notion.so/2-0d8934bd7a304d72b68953600463e0d1?pvs=4 

 

[스파르타코딩클럽] 2주차 : 손쉽게 다루는 해외주식 – 데이터분석기초, 해외주식 다루기

매 주차 강의노트 시작에 PDF파일을 올려두었어요!

www.notion.so


Weekly I learned 

 

 

Pandas 기초

파이썬에서 데이터를 쉽게 다룰 수 있게 해주는 라이브러리, 판다스!

판다스의 DataFrame 형식을 사용하면, 이런 데이터를,

{
	'나이': [21, 35, 24],
	'이름': ['홍길동', '임꺽정', '세종대왕'],
	'주소': ['서울시', '고려시', '조선시']
}

⇒ 이렇게 깔끔하게 볼 수 있게 해준답니다!

⇒ 뿐만 아니라, 열 붙이기, 값 찾기 등.. 다양한 기능을 쉽게 사용할 수 있죠!

 

기본 DataFrame 만들어보기

⇒ 데이터를 먼저 만들어볼게요. 아래와 같이, “함께” 작성해볼게요!

data = {
    'name' : ['영수','철수','영희','소희'],
    'age' : [20,15,38,8]
}

⇒ 그리고, 다음을 입력해서 DataFrame을 만들어봅니다.

df = pd.DataFrame(data)

⇒ 여기서 df 를 입력하면, 표를 볼 수 있습니다

.⇒ 맨 왼쪽은 이 데이터들의 “index”라는 것이에요. 지금은 자동으로 생성이 되었네요!

⇒ 이렇게, DataFrame은 “딕셔너리” 형태로 표현된 데이터를 표로 바꿔주는 역할을 한답니다.

 

Pandas 실전

어제 오른 종목들만 골라보기 

df[df['change_rate'] > 0]

per가 0 인 종목들을 제거하기

df = df[df['per'] > 0]

순이익, 종가를 추가하기

per = 시가총액 / 순이익 = 주가 / 주당순이익

df['earning'] = df['marketcap'] / df['per']
df['close'] = df['per'] * df['eps']

 

 

해외주식 다루기 - yfinance

yfinance 라이브러리 설치하기 : pip install yfinance

 

기본 정보 얻기

name = company.info['shortName']
industry = company.info['industry']
marketcap = company.fast_info['market_cap']
revenue = company.info['totalRevenue']

print(name,industry,marketcap,revenue)

재무제표에서 3년치 데이터 얻기

company.balance_sheet

company.cashflow

company.earnings

 

분석하기(1) : 전략 세우기, 데이터 모으기

[전략세우기]

시작하기 :1) 전략을 세우고 → 2) 데이터를 모으고 → 3) 모아진 데이터를 분석”

company = yf.Ticker('TSLA')

code = 'TSLA'
name = company.info['shortName']
industry = company.info['industry']
# marketCap= company.info['marketCap']
marketCap= company.fast_info['market_cap']
# currentPrice= company.info['currentPrice']
currentPrice= company.fast_info['last_price']
summary = company.info['longBusinessSummary']
targetprice = company.info['targetMeanPrice']

per = company.info['trailingPE']
eps = company.info['trailingEps']
pbr = company.info['priceToBook']

print(code,name,industry,marketCap,summary,currentPrice,targetprice,per,eps,pbr)

최근 3년 매출, 순이익 더하기

rev2021 = company.earnings.iloc[-1,0]
rev2020 = company.earnings.iloc[-2,0]
rev2019 = company.earnings.iloc[-3,0]

ear2021 = company.earnings.iloc[-1,1]
ear2020 = company.earnings.iloc[-2,1]
ear2019 = company.earnings.iloc[-3,1]

[데이터 모으기]

def add_company(code):
  company = yf.Ticker(code)
  name = company.info['shortName']
  industry = company.info['industry']
  bussiness = company.info['longBusinessSummary']
  # marketCap= company.info['marketCap']
  # currentPrice= company.info['currentPrice']
  marketCap= company.fast_info['market_cap']
  targetPrice= company.info['targetMeanPrice']
  currentPrice= company.fast_info['last_price']

  per = company.info['forwardPE']
  eps = company.info['forwardEps']
  pbr = company.info['priceToBook']
  rev2021 = company.earnings.iloc[-1,0]
  rev2020 = company.earnings.iloc[-2,0]
  rev2019 = company.earnings.iloc[-3,0]
  ear2021 = company.earnings.iloc[-1,1]
  ear2020 = company.earnings.iloc[-2,1]
  ear2019 = company.earnings.iloc[-3,1]

  doc = {
    'code':code,
    'name':name,
    'industry':industry,
    'bussiness':bussiness,
    '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