매번 정보를 다룰 때마다 인터넷으로 받아오는 것보다는 한번 받아서 저장해 두고 쓰는 게 안전할 수 있습니다. 그래서 이번에는 불러온 주식 정보를 csv로 저장하고 불러오는 것을 다루겠습니다.
1. 주식 불러오고 CSV로 저장하기
먼저 지난번 코드에 이어서 주식을 불러옵니다.
2023.08.25 - [주식 분석/파이썬 활용 기초] - [파이썬 Python] 애플 주식 정보 불러오기 (yfinance)
import yfinance as yf #yahoo finance로 부터 불러오기 위한 모듈
symbol = 'AAPL' #주식 심볼
ticker = yf.Ticker(symbol) #주식 정보 불러오기
aapl_history = ticker.history(period="10y") # 10년치 주식 정보 불러오기
print(aapl_history.head(5))
"""
출력
Open High ... Dividends Stock Splits
Date ...
2013-09-03 00:00:00-04:00 15.369768 15.603540 ... 0.0 0.0
2013-09-04 00:00:00-04:00 15.571121 15.654656 ... 0.0 0.0
2013-09-05 00:00:00-04:00 15.592632 15.606035 ... 0.0 0.0
2013-09-06 00:00:00-04:00 15.536213 15.565511 ... 0.0 0.0
2013-09-09 00:00:00-04:00 15.740686 15.831702 ... 0.0 0.0
[5 rows x 7 columns]
"""
그리고 data frame의 기본 명령어인 to_csv를 통해서 간단하게 csv 파일을 생성할 수 있습니다. 아래의 명령어를 통해서 stocks라는 폴더를 생성하고, AAPL.csv라는 파일을 생성해 줍니다.
import os
dir_stock = 'stocks' # 주식 정보를 저장할 폴더명
if not os.path.exists(dir_stock):os.makedirs(dir_stock) #폴더가 없을 경우 폴더 만들기
aapl_history.to_csv('{}/{}.csv'.format(dir_stock, symbol)) #CSV로 저장하기
아래처럼 10년치 주식 정보가 csv에 저장된 것을 확인할 수 있습니다.
2. CSV로 저장된 파일 불러오기
CSV를 불러오는 것도, pandas의 read_csv를 이용하면 쉽게 불러올 수 있습니다.
import pandas as pd #pandas 모듈 불러오기
dir_stock = 'stocks' # 주식 정보가 저장된 폴더
symbol = 'AAPL' #주식 심볼
df = pd.read_csv('{}/{}.csv'.format(dir_stock, symbol)) #CSV로 저장된 정보 불러오기
print(df.head(5)) # 저장된 정보 상단 5줄 출력
"""
출력
Date Open ... Dividends Stock Splits
0 2013-09-03 00:00:00-04:00 15.369769 ... 0.0 0.0
1 2013-09-04 00:00:00-04:00 15.571124 ... 0.0 0.0
2 2013-09-05 00:00:00-04:00 15.592629 ... 0.0 0.0
3 2013-09-06 00:00:00-04:00 15.536215 ... 0.0 0.0
4 2013-09-09 00:00:00-04:00 15.740688 ... 0.0 0.0
[5 rows x 8 columns]
"""
자세히 보시면 조금 다른 부분은 원래는 가장 앞에 Date로 시작했었는데, 불러온 파일은 앞에 0 1 2 3 4 이렇게 시작한 다는 것. 그리고 뒤에 몇 시 몇 분 이런 데이터 까지는 필요 없기 때문에 코드를 조금 수정해 줍니다.
import pandas as pd #pandas 모듈 불러오기
dir_stock = 'stocks' # 주식 정보가 저장된 폴더
symbol = 'AAPL' #주식 심볼
df = pd.read_csv('{}/{}.csv'.format(dir_stock, symbol), parse_dates=True, index_col=0)
#CSV로 저장된 정보 불러오기
#parse_dates=True, index_col=0 로 설정하면 csv 첫 열을 index로 불러오고, Date로 인식합니다.
index_dates = []
for index_date in df.index:
index_dates.append(index_date.date())
df.index = index_dates
df.index = pd.to_datetime(df.index)
# 위의 다섯줄은 앞에 시간 지우고 싶어서 작성한건데, 더 깔끔한 방법이 있을 것 같습니다.
print(df.head(5)) # 저장된 정보 상단 5줄 출력
"""
출력
Open High Low ... Volume Dividends Stock Splits
2013-09-03 15.369768 15.603540 15.190543 ... 331928800 0.0 0.0
2013-09-04 15.571125 15.654660 15.468888 ... 345032800 0.0 0.0
2013-09-05 15.592629 15.606032 15.386596 ... 236367600 0.0 0.0
2013-09-06 15.536217 15.565515 15.271586 ... 359525600 0.0 0.0
2013-09-09 15.740690 15.831706 15.693312 ... 340687200 0.0 0.0
[5 rows x 7 columns]
"""
이런 식으로 불러오면 앞에 index가 date로 설정되었고, 시간도 사라졌습니다. 조금더 깔끔하게 할 수 있었을 것도 같지만 여기서 마무리 하였습니다.
3. 주식정보 그래프 그리기
마지막으로 시각적으로 확인 할 수 있도록 그래프로 그려 봅니다. 그래프는 plot으로 간단하게 그릴 수 있지만, 아래 명령어로 그리게 되면
df.plot()
아래 그래프처럼 모든 Data를 그려주게 됩니다. 이런 경우 가장 큰 데이터값인 Volume만 볼 수 있기 때문에 원하는 정보를 선택해서 plot 해 줍니다.
[ ] 안에 원하는 Header를 넣고 plot을 해주게 되면,
df['Close'].plot()
아래처럼 Close 주식 가격만 그래프로 보여주게 됩니다.
'주식 분석 > 파이썬 활용 기초' 카테고리의 다른 글
[파이썬 주식 활용] 이동 평균 구하고 그래프 그리기 (0) | 2023.09.04 |
---|---|
[파이썬 Python] 애플 주식 정보 불러오기 (yfinance) (0) | 2023.08.25 |