본문 바로가기
프로젝트

[주식 프로젝트1] 야후 파이낸스 살펴보기

by kime2 2024. 2. 29.

1. 야후 파이낸스 모듈 사용하기

증권 데이터 수집 라이브러리

pip install yfinance
import yfinance as yf
pip install pandas-datareader
from pandas_datareader import data as p

 

pip install yfinance
import yfinance as yf

-> yahoo Finance에서 가격데이터, 금융지표, 주식최고/저 기록등 다양한 정보를 볼 수 있는 라이브러리


pip install pandas-datareader
from pandas_datareader import data as p

-> Yahoo Finance, Google Finance, Quandl 등의 데이터 소스로부터 주식 가격 데이터를 가져올 수 있다

 

yf.pdf_override()

-> yfinance 라이브러리와 pandas_datareader 라이브러리를 함께 사용할 때, pandas_datareader의 기본 동작을 yfinance로 오버라이딩(재정의)합니다. 이 함수를 호출하면 pandas_datareader가 yfinance를 사용하여 데이터를 가져올 수 있다

 

2. 데이터 불러오기

 

1) 주식데이터

pdr.get_data_yahoo(심볼, 시작일, 종료일)

yf.download(심볼, 시작일, 종료일)

# df = pdr.get_data_yahoo(주식 종목(한국주식의 경우 ".KS") [, 시작일(YYYY-mm-dd)] [,종료일(YYYY-mm-dd)])
# 종료일 전날까지 출력
# 삼성전자 예시
SS = pdr.get_data_yahoo("005930.KS", "2024-02-01", "2024-02-03")
# SS와 동일한 데이터를 볼 수 있다
ss2 = yf.download("005930.KS", "2024-02-01", "2024-02-03")
SS

 

 

Open(시가), High(최고가), Low(최저가), Close(종가), Adj Close(수정종가), Volume(거래량)

 

심볼(티커) 찾는 법(링크)

 

2) 지표데이터 불러오기

# 삼성전자 티커 가져오기
ss_yf = yf.Ticker("005930.KS")

# 재무재표 가져오기
financials = ss_yf.financials

# 손익계산서 가져오기
income_statement = ss_yf.financials

# 현금흐름표 가져오기
cashflow = ss_yf.cashflow

 

3. EDA by snow

 

1) 데이터불러오기 및 기초통계분석

import yfinance as yf
from pandas_datareader import data as pdr
import pandas as pd
import numpy as np  
import seaborn as sns
import matplotlib.pyplot as plt

# snow의 3년 데이터 CSV추출하기
# 2020년 9월 16일 상장
snow_df = yf.download("snow", "2021-02-01", "2024-02-02")
snow_df.info()


snow_df.to_csv("snow_2y.csv", index=False)

# 3개년 시가 및 종가 데이터 + 거래량 추이
plt.figure(figsize=(12, 6)) 
sns.scatterplot(data = snow_df, x = 'Date',y = 'Open',  color='blue', label='open')
sns.scatterplot(data = snow_df, x = 'Date',y = 'Adj Close', color='orange', label='Adj Close')
plt.figure(figsize=(12, 6)) 
sns.lineplot(data = snow_df, x = 'Date',y = 'Volume',  color='red', label='Volume')
plt.legend()
plt.show()

 

 

# 30일 기준 이동평균
snow_df['Moving_Avg'] = snow_df['Open'].rolling(window=30).mean()

plt.figure(figsize=(12, 6))  # 시각화 영역의 크기를 설정
plt.plot(snow_df['Moving_Avg'], color='orange', label='30days Moving Average')  # 이동 평균 데이터를 주황색으로 선 그래프로 플롯
plt.title('3years Moving Average of Open')  # 그래프 제목 설정
plt.xlabel('Date')  # x축 레이블 설정
plt.ylabel('Temperature')  # y축 레이블 설정
plt.legend()  # 라벨을 했으면 꼭 범례 표시
plt.show()  # 그래프 출력

# 이상치 확인 월별 평균 주식_시가
snow_df['Month'] = snow_df.index.month
snow_df['Year'] = snow_df.index.year
snow_df['Year_Month'] = snow_df.index.strftime('%Y-%m')

plt.figure(figsize=(12, 6)) 
sns.boxplot(x='Year_Month', y='Open', data=snow_df)
plt.title('Box Plot of oepn by Month')
plt.xticks(rotation=45)
plt.show()

 

 

# 이상치 확인 월별 평균 주식_종가
plt.figure(figsize=(12, 6)) 
sns.boxplot(x='Year_Month', y='Adj Close', data=snow_df)
plt.title('Box Plot of Adj Close by Month')
plt.xticks(rotation=45)
plt.show()

 

# 이상치 확인 월별 평균 주식_종가
plt.figure(figsize=(12, 6)) 
sns.boxplot(x='Year_Month', y='Volume', data=snow_df)
plt.title('Box Plot of Volume by Month')
plt.xticks(rotation=45)
plt.show()

 

 

# 히트맵을 통해 가격 추이 확인하기_시가
monthly_open_snow = snow_df.groupby(['Year','Month'])['Open'].mean().unstack()

plt.figure(figsize=(12, 6)) 
sns.heatmap(monthly_open_snow, cmap='winter', annot=True, fmt=".1f")
plt.show()

# 히트맵을 통해 가격 추이 확인하기_거래
monthly_volume_snow = snow_df.groupby(['Year','Month'])['Volume'].mean().unstack()

plt.figure(figsize=(20, 6)) 
sns.heatmap(monthly_volume_snow, cmap='winter', annot=True, fmt=".1f")
plt.show()

 

 

 

 

 

데이터 파이프라인 이란

 

[데이터의 흐름 #1] 기본적인 데이터 파이프라인 개념 설명

스타트업 오게된 후로는 데이터 파이프라인이 얼마나 중요한지 뼈저리게 느끼고 있습니다.

songjoyce.medium.com

 

 

 


참고

https://rising-moon.tistory.com/entry/%EC%95%BC%ED%9B%84-%ED%8C%8C%EC%9D%B4%EB%82%B8%EC%8A%A4yfinance%EC%97%90%EC%84%9C-%EA%B8%88%EC%9C%B5-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

https://bigdata-doctrine.tistory.com/6

 

파이썬으로 야후 파이낸스(yfinance)에서 금융 데이터 가져오기

yfinance 라이브러리를 활용해 주식, 환율, 지수부터 암호화폐까지 다양한 금융 데이터를 가져와보자. 가져온 데이터의 구조를 알아보고 더 보기 좋게 만들어보자. 판다스로 데이터프레임을 가볍

rising-moon.tistory.com