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()
참고
https://bigdata-doctrine.tistory.com/6
'프로젝트' 카테고리의 다른 글
프로젝트 주제 사례 (0) | 2024.03.18 |
---|---|
[주식 프로젝트3] 시계열 데이터 예측하기 (0) | 2024.03.13 |
[주식 프로젝트2] 주식데이터를 통해 기획하기 (0) | 2024.03.13 |
[분석프로젝트] 웹 페이지 개선을 통한 A/B테스트: t-test, 시각화 (0) | 2024.02.28 |
[분석프로젝트] 히트맵, 이동평균을 통해 날씨 분석하기 (0) | 2024.02.28 |